본문 바로가기
프로그래밍언어론

[프로그래밍언어론] 5. 프로그래밍 언어 설계

by 파스텔코랄 2023. 9. 11.
새로운 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 구현컴파일러 또는 인터프리터 구현과 동일하다.

다음 강좌에서는 컴파일러인터프리터에 대해 다룬다.

 

댓글