프로그래밍 언어 는 기계(또는 컴퓨터 )를 제어하기 위해서 사용된다. 프로그래밍 언어도 자연어와 같이 의미를 정의하기 위해서 구문적, 의미적인 규칙을 사용한다.
현재 수천 개의 프로그램 언어 [ 1] 가 있고, 매년 새로운 것들이 생겨나고 있다. 대부분의 언어는 많은 사람들이 사용하는 일반적인 언어로 발전하지 못했다. 많은 전문 프로그래머 들은 수십 가지의 다른 언어를 사용하고 있다.
전반적인 비교
아래의 표는 주요 프로그래밍 언어 를 비교하고 있다. 자세한 정보는 각 언어별 문서를 참조.
언어
실행 모델
영향 받음
방법론
타입 시스템
등장시기
에이다
컴파일러
알골 (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# [ 2]
명령형 , 객체지향 , 다중 플랫폼, 제네릭
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
표현력
언어
문(文)의 비중[ 3]
줄의 비중[ 4]
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
프로그래밍 언어에 관한 문헌에는 언어들의 상대적인 표현력에 관한 수많은 주장이 들어있지만, 정형화된 구조를 가지거나 합당한 결과를 도출하지 않는 것이 대부분이다.[ 5] 이 도표는 2개의 다른 출처로부터 온 2가지 표현력 측정을 제공한다. 추가적으로, GZip bytes로 표현력 측정은 The Computer Language Benchmarks Game 의 비교 툴을 이용할 수 있다.
벤치마크
벤치마크 는 컴포넌트나 시스템에 실제와 유사하게 만든 특정 패턴의 부하를 발생시킨다. 컴퓨터 프로그램은 벤치마크 자료를 컴파일하는데 사용된다. 이 경우 대부분 컴파일 최적화 옵션은 사용하지 않는다. 가장 정확성이 높은 벤치마크는 사용자의 특정 상황에 맞춘 벤치마크일 것이다. 다른 사람의 벤치마크 자료는 도움이 되지만, 많은 어려움을 극복해야 올바른 해석이 가능하다. 여기(영어) 에 잘못 해석한 벤치마크 비교에 대한 자료가 있다. The Computer Language Benchmarks Game 사이트에는 사용자 참여로 이루어진 많은 마이크로 벤치마크가 있으며, 프로그래밍 언어간 비교에 다양한 도표와 표를 제공한다.
같이 보기
각주
↑ As of May 2006 Diarmuid Pigott's Encyclopedia of Computer Languages 보관됨 2011-02-20 - 웨이백 머신 hosted at Murdoch University , 오스트레일리아 lists 8512 computer languages.
↑ In Java 5.0, several features (the enhanced for loop , autoboxing , varargs , annotations and enums ) were introduced, after proving themselves useful in the similar (and competing) language C# . [1] [2] [3] 보관됨 2012-07-27 - archive.today
↑ 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.
↑ 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 보관됨 2007-07-04 - 웨이백 머신 . 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.
↑ From On the Expressive Power of Programming Languages , Matthias Felleisen, ESOP '90 3rd European Symposium on Programming.
외부 링크