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

2023. 9. 11. 13:20·프로그래밍언어론
목차
  1. 언어 설계 기준
  2. 직교성(Orthogonality)
  3. 앨리어싱(Aliasing)
  4. PL을 구현하는 방법
새로운 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
  1. 언어 설계 기준
  2. 직교성(Orthogonality)
  3. 앨리어싱(Aliasing)
  4. PL을 구현하는 방법
'프로그래밍언어론' 카테고리의 다른 글
  • [프로그래밍언어론] 7. Syntax vs. Semantics vs. Pragmatics
  • [프로그래밍언어론] 6. 컴파일러와 인터프리터
  • [프로그래밍언어론] 4. 튜링 머신, 튜링 완전성
  • [프로그래밍언어론] 3. PL의 관점에서 본 컴퓨터
파스텔코랄
파스텔코랄
Developer Blog 📜 Lots of rules and no mercy ✨
파스텔코랄
슬기로운 개발일지
파스텔코랄
전체
오늘
어제
  • 스터디
    • 컴퓨터시스템구조
    • 모바일프로그래밍
    • 프로그래밍언어론
    • 운영체제
    • 컴퓨터네트워크
    • 데이터분석
    • 소프트웨어공학
    • 시스템프로그래밍

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • About

링크

공지사항

인기 글

태그

운영체제
네트워크
어셈블리어
프로그래밍언어론

최근 댓글

최근 글

hELLO· Designed By정상우.v4.6.1
파스텔코랄
[프로그래밍언어론] 5. 프로그래밍 언어 설계
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.