-
[프로그래밍 언어론] Language Design Issues프로그래밍 언어론 2025. 3. 20. 17:36
프로그래밍 언어의 역할
- Man-machine interface
- Man-man interface
프로그래밍 언어의 분류
- 문제영역에 따른 분류 (business, scientific, system, AI, web)
- 패러다임에 따른 분류 (절차 언어, 함수형 언어, 논리 언어, 객체지향 언어)
- 계산모델에 따른 분류 (명령형 언어, 함수형 언어, 논리 언어)
좋은 언어의 조건
- 명료성, 간결성, 일관성
- 직교성
- 응용 분야 지원
- 추상화 지원
- 테스트 용이성
- 프로그래밍 환경
- 이식성
- 비용 (수행, 번역, 작성, 관리, 학습 등)
직교성
- 몇 개의 다른 기능을 예외없이 임의로 조합할 수 있는 기능
- 기능들의 독립성이 보장되어 있다는 의미이다.
응용 분야 지원 ( lanuage features)
- 필요한 것(data structure etc)을 지원하고 없으면 만들 수 있도록 한다.
명령형 언어
- 계산 모델 : 상태전이 기계(state transition machine)
- ex) FORTRAN, COBOL, C, Pascal
함수형 언어
- 계산 모델 : 함수
- 변수도 없고 대입 연산도 없음
- 함수 합성이 주요 수단
- ex) LISP, Scheme, ML, Haskell
논리 언어 (규칙기반 언어)
- 계산 모델 : 논리규칠에 입각한 추론
- 입력 : 명제의 조합
- 출력 : 추론 결과 얻은 명제 또는 명제의 일부
- ex) Prolog
객체지향 언어
- 계산 모델을 가정하고 있지 않지만, 주로 명령형 패러다임 언어로 구현됨
- ex) Smalltalk, C++, Java
구조화 프로그래밍
- 이론적 기반
- 순차구조
- 선택구조
- 반복구조
분리 컴파일
- 분리 컴파일 시 공유되어야 하는 정보
- 서브 프로그램 호출 정보
- 공유되는 변수의 타입
- 공동으로 사용해야 할 타입의 정의
- 분리 컴파일 지원을 위한 방법
- 필요한 것을 다시 선언하도록 함
- 특정 순서로 컴파일 되도록 함
- 관련 정보를 라이브러리 형태로 참조할 수 있도록 함
독립 컴파일 : 각 컴파일 단위가 독립적 -> 1번 방법과 동일한 것임