언어 평가 기준

정혜인·2022년 12월 20일
0

💨 언어 평가 기준

  • Readability : 얼마나 읽기 쉬운지
  • Writability : 얼마나 쉽게 표현 가능한지
  • Reliability : 내가 생각한대로 돌아가는지
  • Cost : 비용, 시간, 메모리 크기 등

✅ CRITERIA

❗ Readability ❗

- Overall simplicity (단순함)

: 좋은 언어는 최소한의 기능만을 가짐
=> 좋은 language가 되려면 하나의 symbol은 하나의 의미만 가져야함
ex) a = &b : 포인터
	a = b&c : bit 연산자
        => c++의 단점 (같은 symbol이 여러가지의 의미를 가짐)

- Orthogonality (직교성)

: 모듈 간의 독립성 (하나가 바뀌어도 나머지에 어떤 영향도 주지 않으면 서로 직교)
ex) void a; ->불가능
	void f(); -> 가능
    void *a; -> 가능
    void array; -> 불가능
=> but, 너무 많은 orthogonality는 readability를 해침

- Control statements (제어구조)

:잘 알려진 control statements의 존재
ex) while이 없으면 되게 많은 goto가 필요해짐

- Data types and structures (데이터 타입과 구조)

: 데이터 구조를 정의하기 위한 적절한 기능의 존재
ex) C에는 boolean type이 없음 -> readability ↓

- Syntax Consideration (문법 디자인)

: Identifier 형태 
ex) 예약어나 키워드 사용 불가
: 형태, 의미
ex) static in C

❗ Writability ❗

- Abstraction (추상화)

: 똑같은 코드를 여러번 쓸 때 따로 독립시켜서 간단하게 쓸 수 있게 하는 것

- Expressivity (표현력)

ex) for : 없어도 되지만 있으면 편함
	and then : short-circuit evaluation
   => but, expressivity가 너무 높으면 simplicity ↓

❗ Reliability ❗

- Type checking

: 컴파일 시간에 type error 테스트
-> 최대한 빨리, 강력하게 해야함 (but, writability ↓)
short typed language : 모든 순간에 type checking 가능

- Exception handling

런타임에서 가로채고, 올바른 방법 제공
ex) try .. catch

- Aliasing (별명)

: 동일한 메모리 위치에 대해 두 개 이상의 구별되는 참조 방법 존재
ex) 포인터, reference type

❗ Cost ❗

  • 프로그래머가 언어를 배우는 데 걸리는 시간
  • 프로그램 작성 시간
  • 프로그램 컴파일링 시간, 프로그램 실행 시간 (Optimization 과정을 거치면 컴파일 시간 줄어듦)
  • 언어 구현 시스템
  • 관리/유지 비용

❗ Others ❗

- Portability (휴대성)

: 다른 곳으로 쉽게 옮겨갈 수 있는지
ex) C#은 윈도우에서밖에 안되기 때문에 portability↓, 잘 안쓰임
-> standardization(표준화)

- Generality : 광범위한 응용 가능성

- Well-definedness

	: 문서화가 잘 되어있는지, 문법이 잘 정의되어 있는지
	ex) 파이썬은 documation이 잘 안 되어있음

0개의 댓글