Written by JS970
on
on
프로그래밍언어론 2023-03-07 수업정리
Flow
- 프로그래밍 언어의 역할
- 프로그래밍 언어에 대해 공부해야 하는 이유
- 수많은 프로그래밍 언어를 어떻게 다루어야 하나?
- Requirements & Constraints
- 프로그래밍 언어에 대한 평가
프로그래밍 언어의 역할
- 사람과 기계 사이의 의사 소통이 가능하게 한다.(단방향)
- 사람과 사람 사이의 의사소통이 가능하게 한다.(양방향)
- 다른 사람이 본인의 코드를 쉽게 이해할 수 있다.
- 프로그래머가 프로그램을 쉽게 작성할 수 있는가? -> writability
- 다른 프로그래머가 자신의 코드를 쉽게 이해할 수 있는가? -> readability
- readability의 향상을 위해 IAL(International Algol Language)가 있다.
- 실제로는 거의 사용되지 않았다.
- 이후 이 언어의 영향을 받아 Pascal, C등 High Level Language로의 발전이 이루어졌다.
프로그래밍 언어를 공부해야 하는 이유
"The limits of my language mean the limits of my world." - Wittgenstein(1989~1951)
- 새로운 언어에 의해 사고가 확장될 수 있다.
- 더 효율적으로 문제를 풀어낼 수 있다.
- 더 효율적으로 언어를 선택할 수 있다.
- 더 효율적으로 언어를 학습할 수 있다.
- 더 효율적으로 언어를 사용할 수 있다.
- 더 효율적으로 언어를 작성할 수 있다.
- 더 효율적으로 관리할 수 있다.
언어에 대한 접근
- 프로그래머와 컴퓨터를 잇는 다리 역할을 한다.
- 어떠한 도메인에 사용되는가?
- Scientific, Buisness, AI, Graphics, Embedded Systems, web Applications, System Programming, Script ...
- 어떠한 패러다임을 따르는가?
- Procedural, Functional, Module-Based, Object-Oriented, Imperative, Declarative ...
- 어떠한 컴퓨터 구조 모델을 따르는가?
- Imperative(폰 노이만 구조), Functional($\lambda$), Logic(deductive logic) ...
Requirements & Constraints
- 프로그래머는 Requirements에 맞는 Programming Language를 선택한다.
- Computer Architecture는 Programming Language에 Constraint를 부여한다.
- 이를 도식으로 나타내면 아래와 같다.
프로그래밍 언어에 대한 평가
- 프로그래밍 언어는 다음과 같은 세 가지의 기본 요구사항이 존재한다.
- Expressiveness - 표현력
- Maintainability - 유지보수성
- Executability - 실행가능성
- 위의 세 가지 요소가 적절히 섞인(?) 프로그래밍 언어가 좋은 프로그래밍 언어이다.
- 프로그래밍 언어의 평가 기준은 다음과 같다.
- 이런 평가기준은 논쟁 가능성이 높지만 그래도 대부분이 동의하는 기준이다.
- 이 이외에도 많은 평가 특성(속성) 을 바탕으로 평가한다.
- Orthogonality
- Abstraction
- Homoiconicity