1. 언어 (Language) 이란?
ㅇ 사상,생각,감정을 나타내고 의사 소통을 위한 기호 체계
- 자연 언어 (Natural Language) : 한국어,영어,독어,일본어 등
- 인공 언어 (Artificial Language) : 에스패란토오어, 프로그래밍 언어 등
- 형식 언어 (Formal Language) : 언어의 문법 구조를 수학적 측면에서 형식화한 인공 언어
2. 프로그래밍 언어 (Programming Language)
ㅇ 프로그래밍 언어 이란?
- 프로그램 작성용 언어
. 프로그램을 작성하기 위한 일종의 표기법(notation)
- 프로그래밍 의도를 추상화시켜, 컴퓨터에 전달하는 도구
ㅇ 프로그래밍 언어를 학습해야 하는 이유
- 새로운 프로그래밍 언어를 더 잘 배우기 위해
- 지금 사용하는 프로그래밍 언어를 더 잘 이해하기 위해
- 새로운 프로그래밍 언어를 설계하기 위해
ㅇ 프로그래밍 언어론 (Programming Language Theory, PLT)
- 프로그래밍 언어의 구조,설계 방식에 대해 다루는 학문 분야
3. 프로그래밍 언어의 분류 : 처리 (추상화) 수준에 따른 분류
ㅇ 고급 언어 (High-level Language)
- 일상적인 언어 수준에 가까운 고수준 언어
. 例) C 언어, Java 언어 등
ㅇ 저급 언어 (Low-level Language)
- 기계어와 1:1 대응되는 언어 (기계 중심적 언어)
. 例) 어셈블리어(Assembly Language) 등
ㅇ 기계어 (Machine Language)
- 기계가 직접 이해할 수 있는 2진수 언어
. 데이터를 비트 수준으로 보이고, 기계 명령을 직접 표현함
. 기계 종속적 (다른 종류의 기계에서 사용 불가)
4. 프로그래밍 언어의 분류 : 처리계에 의한 분류
ㅇ 인터프리터 언어 또는 스크립트 언어
- 인터프리터에 의해 프로그램 소스를 한 줄 씩 해석해가며 실행하는 부류
- 例) PHP, Perl, Python, Javascript, VBScript 등
ㅇ 컴파일러 언어
- 컴파일러에 의해 프로그램 소스를 실행 환경에 맞춰 해석,변환한 후 실행하는 부류
- 例) C 언어, Java 등
※ 프로그래밍 언어를 만든다는 것은,
- 결국, 인터프리터 또는 컴파일러를 설계,구현하는 것을 말함
5. 프로그래밍 언어의 분류 : 형태(패러다임)적 분류
※ ☞ 프로그래밍 방법론 (프로그래밍 패러다임) 참조
- 프로그램을 개발/구축해 나아갈 때, 쓰이는 고급 프로그래밍 기법
ㅇ 명령형 프로그래밍 언어 (Imperative Programming Language)
- 순차적 명령 수행을 기본으로 함
. 절차식 프로그래밍 언어 또는 프로시저 지향 프로그래밍 언어 라고도 함
- 例) FORTRAN, Pascal, C 언어 등
ㅇ 객체지향 프로그래밍 언어 (OOP Language)
- 모든 것을 객체로 표현하고 객체를 조립해가며 프로그램을 완성하게 됨
- 例) Java, Ruby, C++ 언어 등
ㅇ 함수형 프로그래밍 언어 (Functional Programming Language)
- 함수들의 집합/조합으로써 프로그램을 구성
- 例) LISP, Scheme, Haskell 등
ㅇ 선언형 프로그래밍 언어 (Declarative Programming Language)
- 주어진 문제에 정형화된 범용 문제 해결 알고리즘을 적용하는 방식
. 원하는 데이터가 무엇인지 만 제시하고,
. 결과를 얻기위한 정확한 절차/단계를 명시하지 않고,
.. 즉, `어떻게(=로직)/어떤 절차로` 얻을 것인지가 중요하지 않음
. 단지 `무엇`을 할 것인지 만을 정의하는 방식을 이용함
. 즉, 내부 코드를 어떻게 구현했는지, 데이터 흐름을 어떻게 제어하는지 등을 밝히지 않음
- 例) SQL 등
ㅇ 논리형 프로그래밍 언어 (Logical Programming Language)
- 기호 논리학에 기반을 두고, 데이터 간의 관계와 논리를 설명해 나가는 언어
. 프로그램을 기호 논리의 형식으로 표현하고,
.. 결과 도출을 위해, 논리적 추론을 사용 함
- 절차적 이라기 보다는 선언적 이므로, 선언형 언어 라고도 함
- 例) Prolog
※ 크게 대별하면,
- 절차식 언어 : Pascal, C 언어 등
- 비 절차식 언어 : 객체지향 언어, 함수형 언어, 선언형 or 논리형 언어
6. [참고용어]
※ ☞ 구문(Syntax), 어휘 구조(Lexical Structure), 의미(Semantic) 등 참조
- 구문/구조/형식(통사론) : 언어가 구성되는 방법/구조 (언어의 구조)
- 어휘(형태론) : 구문에 기반을 두고있는 구성요소들 (토큰의 구조)
- 의미(내용) : 표현식,문장,프로그램 단위 등이 주는 의미(Meaning)