새로운 PL을 설계하려면 먼저 새로운 프로그래밍 언어의 목적을 알아야한다.
예) 수치계산, 웹 프로그래밍, 시스템 프로그래밍 등
그리고 새로운 프로그래밍 언어의 목적에 유용한 공통 개념을 구현하고
목적을 달성하기 위해 이러한 개념으로 인해 발생하는 단점을 최소화시킨다.
예) Null Safety
언어 설계 기준
- 좋은 프로그래밍 언어 디자인은 다양한 기준을 고려한다.
- 이러한 기준은 언어의 다양한 특성에 영향을 받는다.
- Readability(가독성) : 언어를 읽고 이해하는 것이 얼마나 쉬운가?
- Writability(작성가능성) : 우리가 원하는 프로그램을 작성하는 데 언어가 얼마나 쉬운가?
예) 어셈블리 언어 vs. C/C++ vs. Python. - Reliability(신뢰성) : 언어가 항상 예상대로 작동하는가?
예) 유형 검사, 예외 처리, 앨리어싱.
직교성(Orthogonality)
- 구성요소가 독립적으로 사용 가능
- PL에서는 일련의 규칙을 기반으로 소수의 기본 구성을 결합하여 복잡한 프로그램을 만들 수 있다.
- 장점 : 몇 가지 구조와 규칙을 배운 후에 언어를 사용 가능하다.
- 단점 : 올바른 프로그램을 작성하는 것이 더 어려울 수 있다, 구성의 조합은 올바르지만 원하는 대로 수행하지 않는다.
앨리어싱(Aliasing)
- 동일한 객체가 다른 이름으로 참조될 수 있다.
예) C++ 참조 변수
int val = 10; int& ref = val; - 프로그래머는 변수 값 수정에 따른 영향을 예상하기 위해 변수의 모든 참조를 기억한다.
- 해당 언어로 작성된 프로그램의 신뢰성에 영향
그외
- Type Safety - C / C++ vs. Rust
- Null Safety - Java vs. Kotlin / Dart
- 호환성(Compatibility) - C++ vs. Java vs. JavaScript
- 사용 및 배우기 쉬움 - C++/Java vs. Python
- 성능 - Python vs. Julia / Mojo
PL을 구현하는 방법
- 사람: 고급 언어가 더 이해하기가 더 쉽다.
- 컴퓨터: 기계 명령만 이해할 수 있다.
- PL 구현: 고급 언어를 저급 언어로 번역하는 프로세스를 구현
- 번역은 컴파일러나 인터프리터가 수행
- PL 구현은 컴파일러 또는 인터프리터 구현과 동일하다.
다음 강좌에서는 컴파일러와 인터프리터에 대해 다룬다.
'프로그래밍언어론' 카테고리의 다른 글
[프로그래밍언어론] 7. Syntax vs. Semantics vs. Pragmatics (0) | 2023.09.19 |
---|---|
[프로그래밍언어론] 6. 컴파일러와 인터프리터 (0) | 2023.09.11 |
[프로그래밍언어론] 4. 튜링 머신, 튜링 완전성 (0) | 2023.09.11 |
[프로그래밍언어론] 3. PL의 관점에서 본 컴퓨터 (0) | 2023.09.11 |
[프로그래밍언어론] 2. 통합개발환경(IDE), VSCode (0) | 2023.09.05 |
새로운 PL을 설계하려면 먼저 새로운 프로그래밍 언어의 목적을 알아야한다.
예) 수치계산, 웹 프로그래밍, 시스템 프로그래밍 등
그리고 새로운 프로그래밍 언어의 목적에 유용한 공통 개념을 구현하고
목적을 달성하기 위해 이러한 개념으로 인해 발생하는 단점을 최소화시킨다.
예) Null Safety
언어 설계 기준
- 좋은 프로그래밍 언어 디자인은 다양한 기준을 고려한다.
- 이러한 기준은 언어의 다양한 특성에 영향을 받는다.
- Readability(가독성) : 언어를 읽고 이해하는 것이 얼마나 쉬운가?
- Writability(작성가능성) : 우리가 원하는 프로그램을 작성하는 데 언어가 얼마나 쉬운가?
예) 어셈블리 언어 vs. C/C++ vs. Python. - Reliability(신뢰성) : 언어가 항상 예상대로 작동하는가?
예) 유형 검사, 예외 처리, 앨리어싱.
직교성(Orthogonality)
- 구성요소가 독립적으로 사용 가능
- PL에서는 일련의 규칙을 기반으로 소수의 기본 구성을 결합하여 복잡한 프로그램을 만들 수 있다.
- 장점 : 몇 가지 구조와 규칙을 배운 후에 언어를 사용 가능하다.
- 단점 : 올바른 프로그램을 작성하는 것이 더 어려울 수 있다, 구성의 조합은 올바르지만 원하는 대로 수행하지 않는다.
앨리어싱(Aliasing)
- 동일한 객체가 다른 이름으로 참조될 수 있다.
예) C++ 참조 변수
int val = 10; int& ref = val; - 프로그래머는 변수 값 수정에 따른 영향을 예상하기 위해 변수의 모든 참조를 기억한다.
- 해당 언어로 작성된 프로그램의 신뢰성에 영향
그외
- Type Safety - C / C++ vs. Rust
- Null Safety - Java vs. Kotlin / Dart
- 호환성(Compatibility) - C++ vs. Java vs. JavaScript
- 사용 및 배우기 쉬움 - C++/Java vs. Python
- 성능 - Python vs. Julia / Mojo
PL을 구현하는 방법
- 사람: 고급 언어가 더 이해하기가 더 쉽다.
- 컴퓨터: 기계 명령만 이해할 수 있다.
- PL 구현: 고급 언어를 저급 언어로 번역하는 프로세스를 구현
- 번역은 컴파일러나 인터프리터가 수행
- PL 구현은 컴파일러 또는 인터프리터 구현과 동일하다.
다음 강좌에서는 컴파일러와 인터프리터에 대해 다룬다.
'프로그래밍언어론' 카테고리의 다른 글
[프로그래밍언어론] 7. Syntax vs. Semantics vs. Pragmatics (0) | 2023.09.19 |
---|---|
[프로그래밍언어론] 6. 컴파일러와 인터프리터 (0) | 2023.09.11 |
[프로그래밍언어론] 4. 튜링 머신, 튜링 완전성 (0) | 2023.09.11 |
[프로그래밍언어론] 3. PL의 관점에서 본 컴퓨터 (0) | 2023.09.11 |
[프로그래밍언어론] 2. 통합개발환경(IDE), VSCode (0) | 2023.09.05 |