bunta의 보조기억장치

[프로그래밍 언어론] 2-3 프로그래밍 언어의 평가 기준 본문

Study/필기

[프로그래밍 언어론] 2-3 프로그래밍 언어의 평가 기준

bunta 2022. 10. 4. 20:02
반응형

프로그래밍 언어의 요구사항 및 설계 원칙

- 요구사항

표현 풍부성(expressiveness)

→ 프로그래머의 아이디어를 표현할 수 있어야 함

 

유지 보수성(maintainability)

→ 변화에 쉽게 대처할 수 있어야 함

 

실행 가능성(executability)

→ 컴퓨터에서 실행할 수 있어야 함

 

- 설계 원칙

규칙성(regularity)

→ 언어의 기능이 잘 조합될 수 있어야 함

     * 일반성, 직교성, 일관성

     * 일반성:  3 > 1의 크기 비교는 가능하지만 a=3, b=1일 때 a > b 의 크기 비교가 가능한지의 여부

                     즉 숫자 이외에 데이터를 저장하고 있는 구조체에 대해서도 같은 기능을 사용이 가능하면 일반성이 좋다고 표현 

 

추상화 지원(support of abstraction)

→ 실세계의 대상을 추상화하여 나타낼 수 있고 이를 대상으로 어떤 연산을 수행할 수 있어야 함

    * 데이터 추상화, 제어 추상화, 추상 데이터 타입 정의 등이 지원되어야 함

 

복잡도 제어(complexity control)

→ 복잡한 대상 및 처리 방법을 제어할 수 있어야 함

     * 캡슐화, 모듈화 기능이 지원되어야 함


프로그래밍 언어의 평가 기준

작성력

→ 프로그램 수식이나 문장, 기능을 쉽게 표현할 수 있는가

 

가독성

→ 작성된 프로그램을 보고 쉽게 이해할 수 있도록 하는가

 

신뢰성

→ 작성된 프로그램이 오류에 빠지는 가능성을 줄이는가

 

직교성

→ 언어 기능이 서로 간섭하지 않고 자유롭게 조합될 수 있는가

→ 예를 들어 '+'가 옆에 어떤 정수나 실수 등이 오더라도 더하기 연산을 수행한다면 직교성이 좋음

     상황에 따라 더하기 연산을 수행하지 못하거나 오류가 발생한다면 직교성이 나쁨

 

일관성

→ 유사한 기능을 같은 형태로 나타낼 수 있는가

→ C++ 경우 클래스를 생성할 때 중괄호 뒤에 세미콜론을 붙이는 반면, 함수를 생성할 때는 중괄호 뒤에 세미콜론을 붙이지 않음

     이런 경우 일관성이 나쁘다고 볼 수 있음

 

확장성

→ 사용자가 원하는 새로운 기능을 추가할 수 있는가

 

효율성

→ 작성된 프로그램이 효율적으로 수행될 수 있도록 하는가

 

유연성

→ 프로그래머가 표현하고 싶은 내용을 유연하게 수용하는가

 

이식성

→ 프로그램을 다른 실행 환경으로 이전할 수 있는가

→ 이식성이 좋은 대표적인 언어에는 'Java'가 있음

     JVM만 설치한다면 어떤 실행환경이라도 프로그램을 실행할 수 있음

평가기준 \ 요구사항 표현 풍부성 유지 보수성 실행 가능성
작성력 O O  
가독성   O  
신뢰성   O O
직교성 O O  
일관성 O O  
확장성 O O  
효율성   O O
유연성 O O  
이식성   O O

 


프로그래밍 언어의 평가 기준 사이의 절충

프로그램 사용자 측면   프로그램 개발자 측면
검사 비용을
줄여야 함
효율성 신뢰성 더 많이 검사해야 함
간단한 기능이
이해하기 쉬움
가독성 작성력 복잡하더라도
많은 기능이
지원되어야 함
안전을 위해
더 많은 제약을 함
신뢰성 유연성 프로그램 작성 시
제약이 적어야 함

프로그래밍 언어의 선택 기준

- 해당 프로그래밍 언어를 사용하는 커뮤니티가 활발하고 호의적인 언어

   → 해당 언어에 대한 정보를 얻기 쉬움

- 특정 응용 분야가 존재하는 프로그래밍 언어

- 접해 보지 못한 프로그래밍 패러다임을 지원할 수 있는 프로그래밍 언어

 

즉, 본인의 상황과 취향에 맞추어 언어를 선택하는 것이 바람직함

 

 

 

한국방송통신대학 [프로그래밍 언어론] 강의 필기입니다.

반응형
Comments