언어론 - 프로그래밍 언어 설계

minhee·2020년 6월 4일
0
post-thumbnail
post-custom-banner

언어론의 필요성

일단 언어론은 현재까지 생긴 언어들을 바탕으로 작성한 것으로 프로그래밍 언어 설계에 대해 배우기 전에 왜 언어론에 대한 지식이 필요한가부터 알아야할거 같습니다!

  1. 생각을 표현할 수 있는 능력 향상
    아이디어가 있으면 이것을 최적화된 코드로 작성하는 능력을 향상 시킬 수 있습니다.

  2. 적합한 언어를 선택할 수 있는 능력 향상
    하나의 프로젝트를 할 때 가장 적합한 언어를 선택해서 효율적으로 진행시킬 수 있는 배경을 형성 할 수 있습니다.

  3. 새로운 언어의 습득 능력 향상
    언어론을 배우면서 언어들의 구조나 공통적인 방향을 알 수 있습니다. 새로운 언어를 배울 때 기본적인 로직이나 흐름을 알기 때문에 비교적 빠르게 배울 수 있습니다.

  4. 구현의 중요성 이해

  5. 이미 습득한 언어에 대한 더 나은 사용 -> 효율적으로 사용 가능

프로그래밍 언어와 설계 기준

  • 초기에는 실행의 효율성과 판독성에 중점을 두었습니다. 이 말은 프로그램이 언어를 읽는 능력과 얼마나 빠르게 실행 할 수 있나에 중점을 두었다는 이야기죠. 이때 생긴 언어로는 오토코드가 있습니다.

  • 1960년 대에는 복잡성제어로 추상화 기법과 규칙과 제한의 최소화에 중점을 두었습니다. 언어로는 CPL로 C언어의 시초가 된 언어가 만들어졌습니다.

  • 1970년 대에는 간결성과 추상화를 중요시 했습니다. 예약어가 많을 수록 깔끔한 코드를 작성할 수 있습니다!. 이때 생긴 언어로는 C언어가 있습니다.

  • 1980년 대에는 논리와 수학적 개념을 접목해서 언어를 만들기 시작했습니다. 이때 생긴 언어론 객체지향 언어인 C++이 생겼습니다.

설계 원칙

효율성

  1. 목적 코드의 효율성 -> 효율적인 실행

  2. 번역의 효율성
    번역기에 의해서 빠르게 번역이 되는가를 말하는 것으로 만약 번역기가 오류를 검사하지 않으면 속도가 빨라져 효율성은 높아지지만 신뢰성이 떨어지는 단점이 있습니다.

  3. 프로그래밍 효율성
    언어를 사용해서 작성할 때 얼마나 빠르고 쉽게 작성할 수 있는가

일반성

  • 밀접하게 관련이 있는 여러 개념들을 일반적으로 하나의 개념으로 결합한 것 입니다.

예시를 들어보자면 밑에서 볼 수 있듯이 두개의 언어의 대입 연산을 비교해보겠습니다. 파스칼에서는 ':=' 이러한 형태로 값을 넣어줄 수 있는데 자바는 '='를 사용해서 대입해주는 형태를 볼 수 있습니다.

직교성

  • 언어 구성자들이 각각의 의미를 가진 채 결합될 수 있다.

만약 어떤 언어에서는 Add 명령 하나를 사용해서 정수+정수 / 실수+실수를 더할 수 있다면 또 다른 언어에서는 정수+정수를 계산할 땐 AddInt를 사용하고 실수+실수를 계산할 땐 AddFloat를 사용해야할 수도 있습니다. 이렇게 각각의 의미를 가진 채 결합될 수 있습니다

획일성

  • 유사한 것들은 유사하게 보여야 하고, 유사한 의미를 가져야 하며 상이한 것들은 서로 다르게 보이도록 행동해야 한다.

밑에 사진을 참고하면 파스칼이나 자바 모두 if 이라는 예약어는 조건문으로 사용되며 유사한 형태로 사용이 되는 걸 볼 수 있습니다.

기타 설계원칙

  1. 간결성

  2. 표현력: 언어가 복잡한 과정이나 구조 표현 시 용이한가

  3. 정확성: 언어의 행위가 예측될 수 있도록 하는 정의

  4. 기계 독립성: 특정 기계에 독립적으로 언어를 정의해서 사용하는가

  5. 보안성: 프로그래머가 만들 수 있는 오류의 수를 최소화 하였는가

  6. 확장성: 언어의 새로운 기능을 추가하고 라이브러리에 새로운 함수를 추가할 수 있는가

  7. 제약성: 최소한의 지식과 일부 언어 구조 지식으로 프로그램을 작성할 수 있는가

post-custom-banner

0개의 댓글