╱╱╭╮╱╱╱╱╱╱╭━━━╮╱╱╱╭╮╱╭╮╱╱╱╱╱╱ ╱╱┃┃╱╱╱╱╱╱┃╭━╮┃╱╱╱┃┃╱┃┃╱╱╱╱╱╱ ╱╱┃┣━━┳━━╮┃┃╱┃┣━╮╱┃╰━╯┣━━┳━╮╱ ╭╮┃┃╭╮┃┃━┫┃╰━╯┃╭╮╮┃╭━╮┃╭╮┃╭╮╮ ┃╰╯┃╭╮┃┃━┫┃╭━╮┃┃┃┃┃┃╱┃┃╭╮┃┃┃┃ ╰━━┻╯╰┻━━╯╰╯╱╰┻╯╰╯╰╯╱╰┻╯╰┻╯╰╯

CS/프로그래밍 언어론

[프로그래밍 언어론] Language Design Issues (1)

재안안 2024. 4. 25. 02:17

[1] Language Design Issues

 

프로그래밍 언어의 역할

- Man-machine interface

- Man-man interface

 

프로그래밍 언어의 분류

-  문제영역

-  패러다임

-  계산모델

 

좋은 언어의 조건

-  언어의 성공은 외부적인 요인인 경우가 많다

-  명료성, 간결성, 일관성

-  직교성

-  Language features

-  추상화 지원 (control abstraction + data abstraction)

-  Ease of verification

-  Programming environment

-  Portability

-  비용 (수행, 번역, 작성, 관리)

 

직교성

-  몇 개의 다른 기능을 임의로 조합할 수 있는 기능 (예외 없이)

-  기능들의 독립성이 보장되어 있다는 의미

 

Language features

-  자료구조등

-  필요한 것을 지원하고 없으면 만들 수 있도록

 

프로그래밍 환경 변천사

-  Batch -> Time-sharing -> PC -> Internet

 

프로그래밍 패러다임

-  A general model for problem solving

-  언어가 지원하는 패러다임과 계산 모델은 정확히 일대일 대응 관계x

 

명령형 언어

-  Imperative, Procedural Languages

-  상태를 변경하는 명령문 중심의 언어

-  계산 모델 : state transition machine

 

함수형 언어

-  Functional, Applicative Languages

-  함수 작성 및 함수 합성이 주요 수단 (재귀 포함)

-  계산 모델 : 입력 값을 받아서 출력 값을 내는 함수 (변수x)

 

규칙기반 언어

-  Rule-Based, Logic languages

-  문제의 여러 특성을 논리 규칙으로 설정 (규칙 순서 중요)

-  계산 모델 : 논리 규칙에 입각한 추론

 

객체지향 언어

-  Object-Oriented Languages

-  객체(instance) = Identity + property + behaivor

-  클래스는 IS-A를 통한 계층

-  계산 모델 : 실 세계 내의 객체들의 움직임

 

구조화 프로그래밍

-  흐름 제어(순차, 선택, 반복)

-  하향식 설계 (top-down)

-  프라임 프로그램 (single entry single exit)

 

언어 표준

-  문서(언어 설계도)

 

언어 구현

-  컴파일러, 인터프리터

 

언어 표준화(국제화)

-  Unicode

-  Collating sequence (문자들의 나열 순서)

 

프로그래밍 환경

-  프로그램 작성, 테스트에 사용되는 환경 (수행x)

-  언어 설계에 영향 (분리 컴파일, 테스트 및 디버깅)

 

분리 컴파일

-  Subprogram protocols (순서)

-  Types for shared variables

-  Definitions of data types

-  필요한 것(변수)을 1) 다시 선언하거나 2) 특정 순서로 컴파일 3) 라이브러리 형태로 참조할 수 있도록 지원

 

테스트 및 디버깅

-  Execution trace

-  Breakpoints

-  Assertion