프로그래밍 언어의 비교

프로그래밍 언어는 기계(또는 컴퓨터)를 제어하기 위해서 사용된다. 프로그래밍 언어도 자연어와 같이 의미를 정의하기 위해서 구문적, 의미적인 규칙을 사용한다.
현재 수천 개의 프로그램 언어가 있고, 매년 새로운 것들이 생겨나고 있다. 대부분의 언어는 많은 사람들이 사용하는 일반적인 언어로 발전하지 못했다. 많은 전문 프로그래머들은 수십 가지의 다른 언어를 사용하고 있다.
아래의 표는 주요 프로그래밍 언어를 비교하고 있다. 자세한 정보는 각 언어별 문서를 참조.
 
 
 
 언어
 
 실행 모델
 
 영향 받음
 
 방법론
 
 타입 시스템
 
 등장시기
 에이다
 컴파일러
 알골 (Ada 83), 파스칼, C++ (Ada 95), 스몰토크 (Ada 95), 자바 (Ada 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
 대부분 인터프리터, 약간 컴파일러
 배열지향
 1964
 B
 인터프리터, 컴파일러
 BCPL, Bon
 명령형
 1969
 베이직
 인터프리터, 컴파일러
1963
 C
 컴파일러
 알골 68, B
 명령형, flow-driven
 static, weak, unsafe
 1973
 C++
 
 컴파일러
 
 C, 시뮬라, 알골 68
 
 명령형, 객체지향, 제네릭, 다중 플랫폼
 static, strong, unsafe, nominative
 
 1985
 
 
 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
 
 컴파일러
 
 C, C++, 자바, C#
 
 명령형, 객체지향, 제네릭
 
 static, strong, unsafe, contracts
 
 2000
 
 
 Eiffel
 
 컴파일러
 
 에이다, 시뮬라
 
 명령형, 객체지향, 제네릭
 
 static, strong, safe, nominative, contracts
 
 1985
 
 
 얼랭
 
 컴파일러 / 인터프리터 / JIT 컴파일러
 
 프롤로그, Ericsson Pascal, CSP
 
 함수형, 동시성, 분산, 다중 플랫폼
 
 dynamic, weak
 
 1987
 
 
 F#
 
 JIT 컴파일러
 
 C#, 오브젝티브 Caml
 
 함수형, 객체지향, 명령형, 제네릭
 
 static, strong, safe, nominative, 타입 유추
 
 2005
 
 
 Forth
 
 인터프리터 / 컴파일러
 
 RPN, 어셈블리어
 
 명령형, 스택지향
 
 typeless
 
 1977
 
 
 포트란
 
 컴파일러
 
 APL (포트란 90), 알골 68 (포트란 90), C (포트란 2003)
 
 명령형, 절차적, 객체지향
 
 static, strong, safe, nominative
 
 1957
 
 
 하스켈
 
 인터프리터 / 컴파일러
 
 미란다, ML, λ-calculus
 
 함수형, 제네릭, lazy evaluation
 
 static, strong, 타입 유추
 
 1990
 
 
 아이오
 
 인터프리터
 
 스몰토크, 셀프, 루아, NewtonScript, Act1
 
 명령형, 객체지향
 
 dynamic
 
 2002
 
 
 자바
 
 인터프리터 / JIT 컴파일러
 
 C++, 오브젝티브-C, C#
 
 명령형, 객체지향, 다중 플랫폼, 제네릭
 
 static, strong
 
 1994
 
 
 자바스크립트
 
인터프리터, JIT 컴파일
 
 C, 셀프, awk, Perl
 
 명령형, 객체지향, 함수형
 
 dynamic
 
 1995
 
 
 Joy
 
 인터프리터
 
 RPN, Forth, 포스트스크립트
 
 함수형, 스택지향
 
 typeless
 
 2005
 
 
 리스프
 
 인터프리터, 컴파일러
 
 λ-calculus
 
 함수형
 
 dynamic, strong
 
 1958
 
 
 루아
 
 인터프리터, JIT 컴파일러
 
 파이썬, 아이콘, 리스프, 스킴
 
 절차적, 명령형, 반영
 
 dynamic, strong, safe
 
 1993
 
 
 Mathematica
 
 인터프리터
 
 리스프, APL
 
 함수형, 절차적
 
 dynamic, strong
 
 1986
 
 
 오브젝티브-C
 
 컴파일러
 
 C, 스몰토크
 
 명령형, 객체지향
 
 static/dynamic hybrid, strong
 
 1986
 
 
 오브젝티브 Caml
 
 인터프리터 / 컴파일러
 
 ML, 리스프
 
 객체지향, 함수형, 명령형, 제네릭
 
 static, safe, structural, 타입 유추
 
 1996
 
 
 오브젝트 파스칼 (델파이)
 
 컴파일러
 
 파스칼
 
 명령형, 객체지향, 다중 플랫폼
 
 static, strong, safe (but unsafe allowed), nominative
 
 1985
 
 
 오즈
 
 컴파일러 / 인터프리터
 
 프롤로그
 
 논리형, 함수형, 명령형, 객체지향, 동시
 
 
 
 1991
 
 
 파스칼
 
 컴파일러
 
 알골 60
 
 명령형
 
 static, strong, safe
 
 1970
 
 
 Perl
 
 인터프리터
 
 C, 셸, awk, sed, 리스프
 
 함수형, 객체지향, 절차적
 
 dynamic
 
 1987
 
 
 PHP
 
 인터프리터
 
 Perl, C, C++, 자바
 
 명령형, 객체지향
 
 dynamic, weak
 
 1995
 
 프롤로그
 
 컴파일러 (WAM)
 
 
 
 논리형-oriented
 
 dynamic, strong
 
 1972
 
 
 파이썬
 
 인터프리터 / JIT 컴파일러
 
 ABC, 알골 68, 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, 리스프, 셸, awk, sed
 
 함수형, 객체지향, 명령형, 절차적, 이벤트 처리
 
 dynamic
 
 1988
 
 
 비주얼 베이직
 
 컴파일러
 
 퀵베이직
 
 컴포넌트 지향, 이벤트 처리
 
 static/dynamic hybrid, weak/strong hybrid, safe, nominative
 
 1991
 
 
 비주얼 베이직 닷넷
 
 JIT 컴파일러
 
 비주얼 베이직
 
 객체지향, 이벤트 처리
 
 static, strong
 
 2001
 
 
 비주얼 프롤로그
 
 컴파일러
 
 프롤로그, C++, C#, 하스켈, SML
 
 논리형, 객체지향, 함수형, 이벤트 처리, 명령형, 선언형
 
 static, strong, safe, nominative/structural
 
 1985
 
 언어 
 문(文)의 비중
 줄의 비중
 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
프로그래밍 언어에 관한 문헌에는 언어들의 상대적인 표현력에 관한 수많은 주장이 들어있지만, 정형화된 구조를 가지거나 합당한 결과를 도출하지 않는 것이 대부분이다. 이 도표는 2개의 다른 출처로부터 온 2가지 표현력 측정을 제공한다. 추가적으로, GZip bytes로 표현력 측정은  The Computer Language Benchmarks Game의 비교 툴을 이용할 수 있다.
벤치마크는 컴포넌트나 시스템에 실제와 유사하게 만든 특정 패턴의 부하를 발생시킨다. 컴퓨터 프로그램은 벤치마크 자료를 컴파일하는데 사용된다. 이 경우 대부분 컴파일 최적화 옵션은 사용하지 않는다. 가장 정확성이 높은 벤치마크는 사용자의 특정 상황에 맞춘 벤치마크일 것이다. 다른 사람의 벤치마크 자료는 도움이 되지만, 많은 어려움을 극복해야 올바른 해석이 가능하다.  여기(영어)에 잘못 해석한 벤치마크 비교에 대한 자료가 있다.  The Computer Language Benchmarks Game 사이트에는 사용자 참여로 이루어진 많은 마이크로 벤치마크가 있으며, 프로그래밍 언어간 비교에 다양한 도표와 표를 제공한다.
* 프로그래밍 언어
* 
*   99-bottles-of-beer.net — one program in over a thousand variations and multiple languages.
*   The speed, size and dependability of programming languages — charts and narrative based on The Computer Language Benchmarks Game data.
*   Which programs are fast? The Computer Language Benchmarks Game website language comparisons
*   Comparison of syntaxes with sample codes.
*   Syntax Across Languages
*   Rosetta Code — a programming language comparison wiki
*   A large scale study of programming languages and code quality in github A 2014 study of 19 programming languages 
 
분류:프로그래밍 언어