2022-10-20 TIL

SanE·2024년 1월 26일
0

컴퓨터공학

목록 보기
3/23

프로그래밍 언어론

프로그래밍 언어 기본 원칙


언어 설계의 기본 원칙

  • 효율성
  • 일반성
  • 직교성
  • 획일성

기타 설계 원칙

  • 간결성
  • 안전성
  • 표현력
  • 기존 표기나 규칙과의 일관성
  • 정확성
  • 확장성
  • 기계 독립성
  • 제약성

효율성


  • 목적 코드의 효율성
    • 번역기의 효율적 실행 코드 생성 → 최적화
  • 번역의 효율성
    • 적절한 크기의 번역기로 빠르게 번역 가능해야함
  • 구현의 효율성
    • 번역기의 효율적 작성 가능 여부
  • 프로그래밍 효율성
    • 프로그램 작성의 단순성, 용이성 문제
    • 언어의 표현성, 추상화 메커니즘과 관련

실제 효율성은 신뢰도와 관계

일반성


  • 특별한 경우를 피하거나 밀접한 관련의 여러 개념들을 하나의 개념으로 결합

  • 일반성이 갖는 문제점

    • 간결성 저하
    • 판독성 저하
    • 신뢰성 저하

직교성


독립성 확보, 결합도 줄이기를 의미함

각자의 의미를 가진채 결합할 수 있는 능력

  • 언어의 구성ㅈ들이 각각의 의미를 가진 채 결합하는 성질
  • 비직교성 → 문맥에 의존하는 제한
  • 비일반성 → 문맥과 관계없는 제한

Algol68 의 설계 목표 - 직교성 보장

획일성


  • 언어 구조들의 외모와 행동에서의 조화에 중점을 둠
  • 유사한 것들은 유사하게 보이게 하고 유사한 의미를 갖게 함

기타 설계 원칙

간결성


  • Pascal 의 주된 설계 원칙은 간결성
  • 직교성, 일반성, 획일성 : 간결성 보장 못함
  • 과다한 단순성 ⇒ 언어 사용 방해, 표현력 부족, 많은 제한 발생

표현력


  • 복잡한 과정이나 구조를 표현하는데 용이함
  • 표현력은 강하나 단순하지 않은 언어 (Lisp, Algol68, Prolong)
  • 표현력이 강하며 단순한 언어 - C언어

정확성 == 명확성


  • 언어에 대한 정확한 정의
  • 정확한 언어 정의 → 언어의 신뢰도, 번역기의 신뢰도 영향

기계 독립성


  • 기계 독립적인 언어 정의를 통하여 보장
  • 기억 장소 할당과 기계 구조와 별개로 정의된 자료형 사용

안전성


  • 프로그래밍 오류를 줄이고, 오류 발견 용이한 언어 목표
  • 언어의 신뢰성과 정확성에 밀접한 관계
  • 언어 설계 시 자료형, 형 검사, 변수 선언을 도입

기존 표기나 규칙과의 일관성


  • 언어 설계 시 표준화된 특성과 개념을 갖도록 해야함
  • Algol68 - 표준화된 표기를 잘 따르지 않는 언어

확장성


  • 사용자가 언어의 특성을 쉽게 부가하도록 허용하는 기법
  • 추상화 개념은 확장성 지원

제약성, 부분성


  • 일부의 언어 지식과 언어 구조만 가지고도 효과적인 프로그램 작성 가능

성공적인 언어 설계를 위한 충고


  • 신뢰성
    • 진단 컴파일러 또는 점검 컴파일러 사용
    • 과다한 간결성과 생략은 판독성 저하
    • 적절한 간결성은 신뢰성을 증가
  • 효율적인 번역
    • 초기 고급 언어 (Fortran, Cobol) : 분리 컴파일 제공 ⇒ 효율적 번역 가능, 오류 유발
  • 코드 최적화
    • 효율적인 목적 코드 / 컴파일링 비용 증가
    • 반복 수행부 등 일부분만 최적화
    • 실제 컴파일러 : 여러 최적화 단계 제공
profile
완벽을 찾는 프론트엔드 개발자

0개의 댓글