PL

[PL] 프로그래밍 언어 설계

서노리 2022. 4. 14. 00:56
반응형

 언어 설계에 미친 영향

  • Computer Architecture(컴퓨터 구조)
    - 컴퓨터의 기본 구조는 언어 설계에 영향을 끼치는데, 지금까지 널리 사용된 대부분의 언어는 폰 노이만 구조에 기반하여 설계된 명령형 언어들이다.

    ※ Von Neuman Architecture(폰 노이만 구조)
    - 메모리에 프로그램(명령어와 데이터) 저장하고 순차적으로 실행한다.
    -CPU는 메모리에 저장된 명령어를 하나씩 가져와서 인출(fetch)-해석(decode)-실행(execute)을 반복한다.

    ※ 명령형 언어(Imperative languages)의 특징
    - 메모리 위치를 표현하는 변수의 사용
    - 변수의 값을 변경하기 위한 대입문의 사용
    - 명령의 순차적 실행_반복

    이러한 특징들 때문에 명령형 언어는 폰 노이만 구조의 컴퓨터에서 빠르고 효율적이게 동작한다.

  • Program Design Methodologies(프로그래밍 설계 방법론)
    - 다양하고 새로운 방법론 패러다임의 등장 ex) 객체지향

프로그래밍 언어의 분류

  • Imperative Language(명령형 언어)
    - ex) C/C++, Java, JavaScript

  • Functional Language(함수형 언어)
    - 수학적인 함수를 기반으로 프로그램이 수행되는 언어
    - 변수 및 대입문이 없음 (매개변수로 입력을 받아 처리)
    - 반복문이 없음 (재귀에 의한 반복)
    - ex) LISP, Scheme, ML, F# 

  • Logic Language(논리 언어)
    - p -> q 형태의 술어 논리를 기반으로 하여 선언적으로 프로그래밍하는 언어
    - 반복문, 선택문 등의 제어 추상화가 없음
    - 변수는 메모리 위치가 아니라 부분 결과 값에 대한 이름임
    - ex) Prolog

언어 설계의 절충(Trade-off)

  • Reliability(신뢰성) vs Cost of execution(실행 시간)
    - ex) 자바는 배열 원소에 대한 모든 참조가 적합한지를 검사하는데 이로 인해 신뢰성은 올라가지만 실행 시간이 늘어난다.

  • Readability(판독성) vs Writability(작성력)
    - ex) APL은 많은 수학적인 연산자를 지원하는데 이로 인해 작성력은 올라가지만 판독성은 떨어진다.

  • Writability(작성력) vs Reliability(신뢰성)
    - ex) C/C++의 포인터는 주소를 가르키는데 매우 유용하게 사용되어 작성력은 올라가지만 신뢰성은 떨어진다.


 

반응형