프로그래밍[Univ]/프로그래밍 언어론

[프로그래밍 언어론] 프로그램 언어의 카테고리와 언어 설계/디자인의 절충

Cloud Travel 2011. 9. 14. 17:58
1. 언어의 카테고리
 일단 언어를 나누는 주요 4가지 카테고리를 보도록한다.

 - 명령형 언어 : 폰 노이만 구조에 의해 생성된 변수, 어사인먼트. 레퍼티션 이 3가지의 요소의 상호관계 존재
                      대부분의 언어가 이곳에 속한다.
 - 함수형 언어 : 명령형 언어에서 추구하는 것을 모두 거부
                      세상의 모든일을 함수로 가능하다는 원리 / 함수가 함수를 부르면서 실행 됨.
                      변수 없이 함수의 결과물이 다른 함수에 입력되어 결과물이 나올때까지 실행 됨.
                      함수의 연결리스트와 함수 2가지만 제공된다.
                      ex) 리습(LISP(list processing))
 - 조직형 언어 : 명령형/함수형 언어에서 추구하는 것을 모두 거부
                      prospositions, predicates, logical dedcation으로 이뤄짐
                      논리 프로그래밍 언어 ex) 프로로그(Prolog)
 - 객체지향형 : 명령형 언어와 밀접한 관계를 가지며, 명령형언어에 추가적으로 상속, 다향성등을 지원해줌.
                      ex) Java. C++...
 
 지금 부터는 언어를 나누는 부가적 요인 2가지를 알아본다.
 
 - 마크업(Mark up) / 프로그래밍 하이브리드 언어(Programming Hybrid Language) 
  ex) HTML, XML
 - 특정 목적을 위한 언어
 
 이렇게 주 4가지 요인과 더나아가 세부적으로 부 2가지 요인으로 나누는데 어느 곳에서는 비주얼 언어라고하여 7가지로 나누는 곳도 있다. 비주얼언어는 명령형 언어의 일종이라고 생각해서 적지 않았다.


2. 프로그램 언어의 설계 / 디자인 절충
 다음에 나오는 것은 언어의 설계시 절충하여야하는 부분이다.
 프로그램언어의 평가에서 적잘함 이라는 단어를 사용했는데, 이 부분에서 나오는 것이 바로 적절함이
필요되고 비교 되는 것들이다.

 - 신뢰성 vs 실행의 효율성
 ex) ADA vs C
  ADA : 무조건 타입 체킹을 실시함 > 느리지만 정확함
  C : 타입체킹을 하지 않음 > 빠르게 실행 되지만 정확도는 떨어짐

 - 작성력 vs 가독성
  ex) APL : 각종 기능을 프로그램의 operator로 지정 > 자판의 모든 것에 의미를 부여
                프로그램은 매우 짧아졌지만, 이것을 이해하고 해석하는데 오랜 시간이 필요함
  
 - 유연함(자율성) vs 안전함(제한함)
  ex) C/C++ vs Java
   C++과 C의 경우는 포인터를 사용하게 하여 메모리의 연산(메모리 주소 이동)을 가능하게하여 편리를 제공
   But, 안정성은 떨어짐.
   이에비해, 자바는 이를 제한함으로써 안정성을 높여주었다.