Programming language
프로그래밍 언어는 컴퓨터 시스템을 구동시키는 소프트웨어를 작성하기 위한 언어이다. 고급 언어일수록 사람이 사용하는 언어에 가깝다.
일반적으로 말할 때에는 프로그래밍 언어를 지원하는 소프트웨어, 곧 소프트웨어를 작성하기 위한 소프트웨어를 가리키는 때가 많고, 이때에는 프로그래밍 언어와 소프트웨어를 구분하지 않고 소프트웨어를 프로그래밍 언어로 보기도 한다. 예를 들면, 델파이는 프로그래밍 언어인 오브젝트 파스칼을 지원하는 소프트웨어를 작성하기 위한 소프트웨어일 뿐이지만, 델파이를 별개의 프로그래밍 언어로 보는 때가 더 많다.
Category
- BNF
- First-class function
- 기계어 (Machine code)
- Computer Language
- Read–eval–print loop (REPL)
- Glue code
- C/C++
- 파이썬 (Python)
- 자바스크립트 (JavaScript)
- 타입스크립트 (TypeScript)
- 본 어게인 셸 (Bourne-again shell; Bash)
저급언어 (Low-level programming language)
저급 프로그래밍 언어란 컴퓨터 내부에서 바로 처리가능한 프로그래밍 언어로, 일반적으로 기계어와 어셈블리어를 일컫는다. 강력하나 배우기 어려운 것이 단점으로, 현재는 특수한 경우가 아니면 사용되지 않는다. 저급언어와 반대되는 것으로 고급 프로그래밍 언어가 있다.
고급언어 (High-level programming language)
고급 프로그래밍 언어란 사람이 알기쉽도록 씌어진 프로그래밍 언어로서, 저급 프로그래밍 언어보다 가독성이 높고 다루기 간단하다는 장점이 있다. 컴파일러나 인터프리터에 의해 저급 프로그래밍 언어로 번역되어 실행된다. C 언어, 자바, 베이직 등 대부분의 프로그래밍 언어들은 고급언어에 속한다.
프로그래밍 언어의 사용방법 비교
- [추천] Hyperpolyglot - commonly used features in a side-by-side format 1
- Wikipedia (en) 프로그래밍 언어의 비교
- Wikipedia (ko) 프로그래밍 언어의 비교
언어 | 실행 모델 | 영향 받음 | 프로그래밍 패러다임 | 타입 시스템 | 등장시기 |
에이다 | 컴파일러 | 알골 (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 |
Favorite site
- Wikipedia (en) 프로그래밍 언어에 대한 설명
- [추천] Learn X in Y minutes (수 분으로 익일 수 있는.. 시리즈 ~ 여러 프로그래밍 언어의 치트시트 같은 느낌)
- PYPL PopularitY of Programming Language
- [추천] Riju: fast online playground for every programming language (매우 빠른 온라인 플레이 그라운드; 현재 224개의 언어 및 환경들 지원; Programming language; REPL)
- Github - EbookFoundation/free-programming-books - List of Free Learning Resources In Many Languages (프로그래밍 무료 학습 자료 모음)
References
-
Hyperpolyglot.org.zip ↩