[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
'CS > 프로그래밍 언어론' 카테고리의 다른 글
[프로그래밍 언어론] Structured Data Types (6) (0) | 2024.04.25 |
---|---|
[프로그래밍 언어론] Elementary Data Types (5) (0) | 2024.04.25 |
[프로그래밍 언어론] Modeling Language Properties (4) (0) | 2024.04.25 |
[프로그래밍 언어론] Language Translation Issues (3) (0) | 2024.04.25 |
[프로그래밍 언어론] Impact of Machine Architecture (2) (0) | 2024.04.25 |