{{위키데이터 속성 추적}}
{{프로그래밍 언어의 비교}}
[[프로그래밍 언어]]는 기계(또는 [[컴퓨터]])를 제어하기 위해서 사용된다. 프로그래밍 언어도 자연어와 같이 의미를 정의하기 위해서 구문적, 의미적인 규칙을 사용한다.

현재 [[프로그래밍 언어 목록|수천 개의 프로그램 언어]]<ref>As of May [[2006]] Diarmuid Pigott's [http://hopl.murdoch.edu.au/ Encyclopedia of Computer Languages] {{웨이백|url=http://hopl.murdoch.edu.au/# |date=20110220044217 }} hosted at [[Murdoch University]], [[오스트레일리아]] lists 8512 computer languages.</ref>가 있고, 매년 새로운 것들이 생겨나고 있다. 대부분의 언어는 많은 사람들이 사용하는 일반적인 언어로 발전하지 못했다. 많은 전문 [[프로그래머]]들은 수십 가지의 다른 언어를 사용하고 있다.

== 전반적인 비교 ==
아래의 표는 주요 [[프로그래밍 언어]]를 비교하고 있다. 자세한 정보는 각 언어별 문서를 참조.

 {| class="wikitable sortable"
 |- 
 ! 언어
 ! 실행 모델
 ! 영향 받음
 ! [[프로그래밍 패러다임|방법론]]
 ! [[타입 시스템]]
 ! 등장시기
|-
! [[에이다 (프로그래밍 언어)|에이다]]
| [[컴파일러]]
| [[알골 프로그래밍 언어|알골]]&nbsp;(Ada&nbsp;83), [[파스칼 (프로그래밍 언어)|파스칼]], [[C++]]&nbsp;(Ada&nbsp;95), [[스몰토크]]&nbsp;(Ada&nbsp;95), [[자바 (프로그래밍 언어)|자바]]&nbsp;(Ada&nbsp;2005)
| [[동시 프로그래밍|동시성]], [[분산 프로그래밍|분산]], [[제네릭 프로그래밍|제네릭]], [[명령형 프로그래밍|명령형]], [[객체 지향 프로그래밍|객체지향]]
| static, strong, safe, nominative
| 1983
|-
! [[알골 프로그래밍 언어|알골]]
| [[컴파일러]]
|
| [[명령형 프로그래밍|명령형]]
| static, strong, safe
| 1958
|-
! [[알골 프로그래밍 언어|알골 60]]
| [[컴파일러]]
| [[알골 프로그래밍 언어|알골 58]]
| [[명령형 프로그래밍|명령형]]
| static and dynamic typing, strong, safe
| 1960
|-
! [[알골 프로그래밍 언어|알골 68]]
| [[인터프리터]] / [[컴파일러]] / [[JIT 컴파일러]]
| [[알골 프로그래밍 언어|알골 60]]
| [[동시 프로그래밍|동시성]], [[명령형 프로그래밍|명령형]]
| static and dynamic typing, strong, safe, structural
| 1968
|-
! [[APL 프로그래밍 언어|APL]]
| 대부분 [[인터프리터]], 약간 [[컴파일러]]
|
| 배열지향
|
| 1964
|-
! [[B (프로그래밍 언어)|B]]
| [[인터프리터]], [[컴파일러]]
| [[BCPL]], [[Bon (프로그래밍 언어)|Bon]]
| [[명령형 프로그래밍|명령형]]
|
| 1969
|-
! [[베이직]]
| [[인터프리터]], [[컴파일러]]
|
|
|
|1963
|-
! [[C (프로그래밍 언어)|C]]
| [[컴파일러]]
| [[알골 프로그래밍 언어|알골 68]], [[B (프로그래밍 언어)|B]]
| [[명령형 프로그래밍|명령형]], flow-driven
| static, weak, unsafe
| 1973
|-
! [[C++]]
 | [[컴파일러]]
 | [[C (프로그래밍 언어)|C]], [[시뮬라 프로그래밍 언어|시뮬라]], [[알골 프로그래밍 언어|알골 68]]
 | [[명령형 프로그래밍|명령형]], [[객체 지향 프로그래밍|객체지향]], [[제네릭 프로그래밍|제네릭]], 다중 플랫폼
| static, strong, unsafe, nominative
 | 1985
 |-
 ! [[C 샤프|C#]]
 | [[JIT 컴파일러]]
 | [[델파이]], [[자바 (프로그래밍 언어)|자바]], [[C++]], [[파이썬]]
 | [[명령형 프로그래밍|명령형]], [[객체 지향 프로그래밍|객체지향]], [[제네릭 프로그래밍|제네릭]]
 | static, strong, both safe and unsafe
 | 2000
 |-
 ! [[코볼]]
 | [[컴파일러]]
 | [[FLOW-MATIC]], [[COMTRAN]]
 | [[명령형 프로그래밍|명령형]], [[객체 지향 프로그래밍|객체지향]]
 | weak/strong
 | 1959
 |-
 ! [[콜드퓨전]]
 | [[JIT 컴파일러]]
 | [[HTML]]
 | [[절차적 프로그래밍|절차적]], [[함수형 프로그래밍|함수형]], [[객체 지향 프로그래밍|객체지향]]
 | dynamic ([[덕 타이핑]]), weak
 | 1995
 |-
 ! [[커먼 리스프]]
 | [[컴파일러]]
 | [[리스프]], [[스몰토크]]
 | [[명령형 프로그래밍|명령형]], [[함수형 프로그래밍|함수형]], [[객체 지향 프로그래밍|객체지향]]
 | dynamic, strong, safe
 | 1984
 |-
 ! [[D (프로그래밍 언어)|D]]
 | [[컴파일러]]
 | [[C (프로그래밍 언어)|C]], [[C++]], [[자바 (프로그래밍 언어)|자바]], [[C 샤프|C#]]
 | [[명령형 프로그래밍|명령형]], [[객체 지향 프로그래밍|객체지향]], [[제네릭 프로그래밍|제네릭]]
 | static, strong, unsafe, contracts
 | 2000
 |-
 ! [[Eiffel 프로그래밍 언어|Eiffel]]
 | [[컴파일러]]
 | [[에이다 (프로그래밍 언어)|에이다]], [[시뮬라 프로그래밍 언어|시뮬라]]
 | [[명령형 프로그래밍|명령형]], [[객체 지향 프로그래밍|객체지향]], [[제네릭 프로그래밍|제네릭]]
 | static, strong, safe, nominative, contracts
 | 1985
 |-
 ! [[얼랭]]
 | [[컴파일러]] / [[인터프리터]] / [[JIT 컴파일러]]
 | [[프롤로그]], Ericsson Pascal, CSP
 | [[함수형 프로그래밍|함수형]], [[동시 프로그래밍|동시성]], [[분산 프로그래밍|분산]], 다중 플랫폼
 | dynamic, weak
 | 1987
 |-
 ! [[F 샤프|F#]]
 | [[JIT 컴파일러]]
 | [[C 샤프|C#]], [[오브젝티브 Caml]]
 | [[함수형 프로그래밍|함수형]], [[객체 지향 프로그래밍|객체지향]], [[명령형 프로그래밍|명령형]], [[제네릭 프로그래밍|제네릭]]
 | static, strong, safe, nominative, [[타입 유추]]
 | 2005
 |-
 ! [[Forth 프로그래밍 언어|Forth]]
 | [[인터프리터]] / [[컴파일러]]
 | [[역폴란드 표기법|RPN]], [[어셈블리어]]
 | [[명령형 프로그래밍|명령형]], [[스택 지향 프로그래밍|스택지향]]
 | typeless
 | 1977
 |-
 ! [[포트란]]
 | [[컴파일러]]
 | [[APL 프로그래밍 언어|APL]] (포트란 90), 알골 68 (포트란 90), C (포트란 2003)
 | [[명령형 프로그래밍|명령형]], [[절차적 프로그래밍|절차적]], [[객체 지향 프로그래밍|객체지향]]
 | static, strong, safe, nominative
 | 1957
 |-
 ! [[하스켈]]
 | [[인터프리터]] / [[컴파일러]]
 | [[미란다 프로그래밍 언어|미란다]], [[ML (프로그래밍 언어)|ML]], [[Lambda calculus|λ-calculus]]
 | [[함수형 프로그래밍|함수형]], [[제네릭 프로그래밍|제네릭]], [[느긋한 계산법|lazy evaluation]]
 | static, strong, 타입 유추
 | 1990
 |-
 ! [[아이오 프로그래밍 언어|아이오]]
 | [[인터프리터]]
 | [[스몰토크]], [[셀프 프로그래밍 언어|셀프]], [[루아 프로그래밍 언어|루아]], [[NewtonScript]], [[Act1]]
 | [[명령형 프로그래밍|명령형]], [[객체 지향 프로그래밍|객체지향]]
 | dynamic
 | 2002
 |-
 ! [[자바 (프로그래밍 언어)|자바]]
 | [[인터프리터]] / [[JIT 컴파일러]]
 | [[C++]], [[오브젝티브-C]], [[C 샤프|C#]]<ref>In Java 5.0, several features (the [[foreach|enhanced for loop]], [[autoboxing]], [[varargs]], [[annotation]]s and [[enumerated type|enums]]) were introduced, after proving themselves useful in the similar (and competing) language [[C 샤프|C#]]. [http://www.barrycornelius.com/papers/java5/][http://www.levenez.com/lang/][http://eclipsezone.com/eclipse/forums/t54318.html] {{웹아카이브|url=https://archive.today/20120727004237/http://eclipsezone.com/eclipse/forums/t54318.html |날짜=2012-07-27 }}</ref>
 | [[명령형 프로그래밍|명령형]], [[객체 지향 프로그래밍|객체지향]], 다중 플랫폼, [[제네릭 프로그래밍|제네릭]]
 | static, strong
 | 1994
 |-
 ! [[자바스크립트]]
 |[[인터프리터]], [[JIT 컴파일]]
 | [[C (프로그래밍 언어)|C]], [[셀프 프로그래밍 언어|셀프]], [[AWK|awk]], [[펄|Perl]]
 | [[명령형 프로그래밍|명령형]], [[객체 지향 프로그래밍|객체지향]], [[함수형 프로그래밍|함수형]]
 | dynamic
 | 1995
 |-
 ! [[조이 프로그래밍 언어|Joy]]
 | [[인터프리터]]
 | [[역폴란드 표기법|RPN]], [[Forth 프로그래밍 언어|Forth]], [[포스트스크립트]]
 | [[함수형 프로그래밍|함수형]], [[스택 지향 프로그래밍|스택지향]]
 | typeless
 | 2005
 |-
 ! [[리스프]]
 | [[인터프리터]], [[컴파일러]]
 | [[Lambda calculus|λ-calculus]]
 | [[함수형 프로그래밍|함수형]]
 | dynamic, strong
 | 1958
 |-
 ! [[루아 프로그래밍 언어|루아]]
 | [[인터프리터]], [[JIT 컴파일러]]
 | [[파이썬]], [[아이콘 프로그래밍 언어|아이콘]], [[리스프]], [[스킴 (프로그래밍 언어)|스킴]]
 | [[절차적 프로그래밍|절차적]], [[명령형 프로그래밍|명령형]], [[반영 (컴퓨터)|반영]]
 | dynamic, strong, safe
 | 1993
 |-
 ! [[Mathematica]]
 | [[인터프리터]]
 | [[리스프]], [[APL 프로그래밍 언어|APL]]
 | [[함수형 프로그래밍|함수형]], [[절차적 프로그래밍|절차적]]
 | dynamic, strong
 | 1986
 |-
 ! [[오브젝티브-C]]
 | [[컴파일러]]
 | [[C (프로그래밍 언어)|C]], [[스몰토크]]
 | [[명령형 프로그래밍|명령형]], [[객체 지향 프로그래밍|객체지향]]
 | static/dynamic hybrid, strong
 | 1986
 |-
 ! [[오브젝티브 Caml]]
 | [[인터프리터]] / [[컴파일러]]
 | [[ML (프로그래밍 언어)|ML]], [[리스프]]
 | [[객체 지향 프로그래밍|객체지향]], [[함수형 프로그래밍|함수형]], [[명령형 프로그래밍|명령형]], [[제네릭 프로그래밍|제네릭]]
 | static, safe, structural, 타입 유추
 | 1996
 |-
 ! [[오브젝트 파스칼]] ([[델파이]])
 | [[컴파일러]]
 | [[파스칼 (프로그래밍 언어)|파스칼]]
 | [[명령형 프로그래밍|명령형]], [[객체 지향 프로그래밍|객체지향]], 다중 플랫폼
 | static, strong, safe (but unsafe allowed), nominative
 | 1985
 |-
 ! [[오즈 프로그래밍 언어|오즈]]
 | [[컴파일러]] / [[인터프리터]]
 | [[프롤로그]]
 | [[논리형 프로그래밍|논리형]], [[함수형 프로그래밍|함수형]], [[명령형 프로그래밍|명령형]], [[객체 지향 프로그래밍|객체지향]], [[동시 프로그래밍|동시]]
 | 
 | 1991
 |-

 ! [[파스칼 (프로그래밍 언어)|파스칼]]
 | [[컴파일러]]
 | [[알골 프로그래밍 언어|알골 60]]
 | [[명령형 프로그래밍|명령형]]
 | static, strong, safe
 | 1970
 |-
 ! [[펄|Perl]]
 | [[인터프리터]]
 | [[C (프로그래밍 언어)|C]], [[유닉스 셸|셸]], [[AWK|awk]], [[sed 프로그래밍 언어|sed]], [[리스프]]
 | [[함수형 프로그래밍|함수형]], [[객체 지향 프로그래밍|객체지향]], [[절차적 프로그래밍|절차적]]
 | dynamic
 | 1987
 |-
 ! [[PHP]]
 | [[인터프리터]]
 | [[펄|Perl]], [[C (프로그래밍 언어)|C]], [[C++]], [[자바 (프로그래밍 언어)|자바]]
 | [[명령형 프로그래밍|명령형]], [[객체 지향 프로그래밍|객체지향]]
 | dynamic, weak
 | 1995
|-
 ! [[프롤로그]]
 | [[컴파일러]] ([[WAM]])
 | 
 | [[논리형 프로그래밍|논리형-oriented]]
 | dynamic, strong
 | 1972
 |-
 ! [[파이썬]]
 | [[인터프리터]] / [[JIT 컴파일러]]
 | [[ABC 프로그래밍 언어|ABC]], [[알골 프로그래밍 언어|알골 68]], [[C (프로그래밍 언어)|C]], [[펄|Perl]], [[모듈라-3]]
 | [[명령형 프로그래밍|명령형]], [[객체 지향 프로그래밍|객체지향]], [[함수형 프로그래밍|함수형]], [[애스펙트지향 프로그래밍|애스펙트지향]]
 | dynamic ([[덕 타이핑]]), strong
 | 1991
 |-
 ! [[루비 (프로그래밍 언어)|루비]]
 | [[인터프리터]]
 | [[스몰토크 프로그래밍 언어|스몰토크]], [[펄|Perl]], [[파이썬]], [[리스프]]
 | [[명령형 프로그래밍|명령형]], [[객체 지향 프로그래밍|객체지향]], [[함수형 프로그래밍|함수형]], [[애스펙트지향 프로그래밍|애스펙트지향]]
 | dynamic ([[덕 타이핑]]), strong
 | 1995
 |-
 ! [[스칼라 프로그래밍 언어|스칼라]]
 | [[인터프리터]] / [[컴파일러]]
 | [[자바 (프로그래밍 언어)|자바]]
 | [[객체 지향 프로그래밍|객체지향]], [[함수형 프로그래밍|함수형]], [[제네릭 프로그래밍|제네릭]]
 | static, strong, 일부 [[타입 유추]]
 | 2003
 |-
 ! [[스킴 (프로그래밍 언어)|스킴]]
 | [[인터프리터]] / [[컴파일러]]
 | [[리스프]], [[알골 프로그래밍 언어|알골 60]]
 | [[함수형 프로그래밍|함수형]]
 | latent
 | 1975
 |-
 ! [[본 셸]]
 | [[인터프리터]]
 | [[알골 프로그래밍 언어|알골 68]]
 | [[명령형 프로그래밍|명령형]]
 | weak
 | 1977
 |-
 ! [[스몰토크]]
 | [[JIT 컴파일러]]
 | [[Sketchpad]], [[시뮬라 프로그래밍 언어|시뮬라]], [[리스프]]
 | [[객체 지향 프로그래밍|객체지향]], [[함수형 프로그래밍|함수형]], [[동시 프로그래밍|동시]], [[이벤트 처리 프로그래밍|이벤트 처리]], [[명령형 프로그래밍|명령형]], [[선언형 프로그래밍|선언형]]
 | dynamic, strong, safe, [[덕 타이핑]]
 | 1971
 |-
 ! [[Tcl]]
 | [[인터프리터]] / [[JIT 컴파일러]]
 | [[C (프로그래밍 언어)|C]], [[리스프]], [[유닉스 셸|셸]], [[AWK|awk]], [[sed 프로그래밍 언어|sed]]
 | [[함수형 프로그래밍|함수형]], [[객체 지향 프로그래밍|객체지향]], [[명령형 프로그래밍|명령형]], [[절차적 프로그래밍|절차적]], [[이벤트 처리 프로그래밍|이벤트 처리]]
 | dynamic
 | 1988
 |-
 ! [[비주얼 베이직]]
 | [[컴파일러]]
 | [[퀵베이직]]
 | [[컴포넌트 지향 프로그래밍|컴포넌트 지향]], [[이벤트 처리 프로그래밍|이벤트 처리]]
 | static/dynamic hybrid, weak/strong hybrid, safe, nominative
 | 1991
 |-
 ! [[비주얼 베이직 닷넷]]
 | [[JIT 컴파일러]]
 | [[비주얼 베이직]]
 | [[객체 지향 프로그래밍|객체지향]], [[이벤트 처리 프로그래밍|이벤트 처리]]
 | static, strong
 | 2001
 |-
 ! [[비주얼 프롤로그]]
 | [[컴파일러]]
 | [[프롤로그]], [[C++]], [[C 샤프|C#]], [[하스켈]], [[SML 프로그래밍 언어|SML]]
 | [[논리형 프로그래밍|논리형]], [[객체 지향 프로그래밍|객체지향]], [[함수형 프로그래밍|함수형]], [[이벤트 처리 프로그래밍|이벤트 처리]], [[명령형 프로그래밍|명령형]], [[선언형 프로그래밍|선언형]]
 | static, strong, safe, nominative/structural
 | 1985
 |}

== 표현력 ==
{| class="wikitable" align = "left"
|-
! 언어 !! 문(文)의 비중<ref>Data from [[Code Complete]]. The ''Statements ratio'' column "shows typical ratios of source statements in several high-level languages to the equivalent code in C. A higher ratio means that each line of code in the language listed accomplishes more than does each line of code in C.</ref>
! 줄의 비중<ref>The ratio of line count tests won by each language to the number won by C when using the ''Compare to'' feature at [http://shootout.alioth.debian.org/debian/c.php http://shootout.alioth.debian.org/debian/c.php] {{웨이백|url=http://shootout.alioth.debian.org/debian/c.php |date=20070704010702 }}. Last updated May, 2006. C gcc was used for C, C++ g++ was used for C++, Fortran G95 was used for Fortran, Java JDK Server was used for Java, and Smalltalk GST was used for Smalltalk.</ref>
|-
| C || 1 || 1
|-
| C++ || 2.5 || 1
|-
| 포트란 || 2.5 || .8
|-
| 자바 || 2.5 || 1.5
|-
| MS 비주얼 베이직 || 4.5 || ?
|-
| 펄 || 6 || 6
|-
| 스몰토크 || 6 || 6.25
|-
| 파이썬 || 6 || 6.5
|}
{{-}}

프로그래밍 언어에 관한 문헌에는 언어들의 상대적인 표현력에 관한 수많은 주장이 들어있지만, 정형화된 구조를 가지거나 합당한 결과를 도출하지 않는 것이 대부분이다.<ref>From [http://citeseer.ist.psu.edu/cache/papers/cs/633/ftp:zSzzSzftp.cs.indiana.eduzSzpubzSzscheme-repositoryzSzdoczSzpubszSzexpress.pdf/felleisen90expressive.pdf On the Expressive Power of Programming Languages], Matthias Felleisen, ESOP '90 3rd European Symposium on Programming.</ref> 이 도표는 2개의 다른 출처로부터 온 2가지 표현력 측정을 제공한다. 추가적으로, GZip bytes로 표현력 측정은 [https://web.archive.org/web/20120831065317/http://shootout.alioth.debian.org/ The Computer Language Benchmarks Game]의 비교 툴을 이용할 수 있다.

== 벤치마크 ==
[[벤치마크 (컴퓨팅)|벤치마크]]는 컴포넌트나 시스템에 실제와 유사하게 만든 특정 패턴의 부하를 발생시킨다. 컴퓨터 프로그램은 벤치마크 자료를 컴파일하는데 사용된다. 이 경우 대부분 컴파일 최적화 옵션은 사용하지 않는다. 가장 정확성이 높은 벤치마크는 사용자의 특정 상황에 맞춘 벤치마크일 것이다. 다른 사람의 벤치마크 자료는 도움이 되지만, 많은 어려움을 극복해야 올바른 해석이 가능하다. [https://web.archive.org/web/20060924084737/http://shootout.alioth.debian.org/gp4/miscfile.php?file=benchmarking&title=Flawed%20Benchmarks 여기(영어)]에 잘못 해석한 벤치마크 비교에 대한 자료가 있다. [https://web.archive.org/web/20120831065317/http://shootout.alioth.debian.org/ The Computer Language Benchmarks Game] 사이트에는 사용자 참여로 이루어진 많은 마이크로 벤치마크가 있으며, 프로그래밍 언어간 비교에 다양한 도표와 표를 제공한다.

== 같이 보기 ==
* [[프로그래밍 언어]]

== 각주 ==
<references/>

== 외부 링크 ==
* {{Dmoz|Computers/Programming/Languages/Comparison_and_Review}}
* {{언어링크|en}} [http://99-bottles-of-beer.net/ 99-bottles-of-beer.net] — one program in over a thousand variations and multiple languages.
* {{언어링크|en}} [http://gmarceau.qc.ca/blog/2009/05/speed-size-and-dependability-of.html The speed, size and dependability of programming languages] — charts and narrative based on The Computer Language Benchmarks Game data.
* {{언어링크|en}} [https://web.archive.org/web/20170124051601/http://benchmarksgame.alioth.debian.org/u32/which-programs-are-fastest.html Which programs are fast?] The Computer Language Benchmarks Game website language comparisons
* {{언어링크|en}} [http://www.scriptol.com/programming/choose.php Comparison of syntaxes] with sample codes.
* {{언어링크|en}} [http://rigaux.org/language-study/syntax-across-languages.html Syntax Across Languages]
* {{언어링크|en}} [http://rosettacode.org/ Rosetta Code] — a programming language comparison wiki
* {{언어링크|en}} [https://web.archive.org/web/20170228180532/http://macbeth.cs.ucdavis.edu/lang_study.pdf A large scale study of programming languages and code quality in github] A 2014 study of 19 programming languages {{doi|10.1145/2635868.2635922}}

{{C++}}

[[분류:프로그래밍 언어의 비교| ]]
[[분류:프로그래밍 언어]]