일단 언어론은 현재까지 생긴 언어들을 바탕으로 작성한 것으로 프로그래밍 언어 설계에 대해 배우기 전에 왜 언어론에 대한 지식이 필요한가부터 알아야할거 같습니다!
생각을 표현할 수 있는 능력 향상
아이디어가 있으면 이것을 최적화된 코드로 작성하는 능력을 향상 시킬 수 있습니다.
적합한 언어를 선택할 수 있는 능력 향상
하나의 프로젝트를 할 때 가장 적합한 언어를 선택해서 효율적으로 진행시킬 수 있는 배경을 형성 할 수 있습니다.
새로운 언어의 습득 능력 향상
언어론을 배우면서 언어들의 구조나 공통적인 방향을 알 수 있습니다. 새로운 언어를 배울 때 기본적인 로직이나 흐름을 알기 때문에 비교적 빠르게 배울 수 있습니다.
구현의 중요성 이해
이미 습득한 언어에 대한 더 나은 사용 -> 효율적으로 사용 가능
초기에는 실행의 효율성과 판독성에 중점을 두었습니다. 이 말은 프로그램이 언어를 읽는 능력과 얼마나 빠르게 실행 할 수 있나에 중점을 두었다는 이야기죠. 이때 생긴 언어로는 오토코드가 있습니다.
1960년 대에는 복잡성제어로 추상화 기법과 규칙과 제한의 최소화에 중점을 두었습니다. 언어로는 CPL로 C언어의 시초가 된 언어가 만들어졌습니다.
1970년 대에는 간결성과 추상화를 중요시 했습니다. 예약어가 많을 수록 깔끔한 코드를 작성할 수 있습니다!. 이때 생긴 언어로는 C언어가 있습니다.
1980년 대에는 논리와 수학적 개념을 접목해서 언어를 만들기 시작했습니다. 이때 생긴 언어론 객체지향 언어인 C++이 생겼습니다.
목적 코드의 효율성 -> 효율적인 실행
번역의 효율성
번역기에 의해서 빠르게 번역이 되는가를 말하는 것으로 만약 번역기가 오류를 검사하지 않으면 속도가 빨라져 효율성은 높아지지만 신뢰성이 떨어지는 단점이 있습니다.
프로그래밍 효율성
언어를 사용해서 작성할 때 얼마나 빠르고 쉽게 작성할 수 있는가
예시를 들어보자면 밑에서 볼 수 있듯이 두개의 언어의 대입 연산을 비교해보겠습니다. 파스칼에서는 ':=' 이러한 형태로 값을 넣어줄 수 있는데 자바는 '='를 사용해서 대입해주는 형태를 볼 수 있습니다.
만약 어떤 언어에서는 Add 명령 하나를 사용해서 정수+정수 / 실수+실수를 더할 수 있다면 또 다른 언어에서는 정수+정수를 계산할 땐 AddInt를 사용하고 실수+실수를 계산할 땐 AddFloat를 사용해야할 수도 있습니다. 이렇게 각각의 의미를 가진 채 결합될 수 있습니다
밑에 사진을 참고하면 파스칼이나 자바 모두 if 이라는 예약어는 조건문으로 사용되며 유사한 형태로 사용이 되는 걸 볼 수 있습니다.
간결성
표현력: 언어가 복잡한 과정이나 구조 표현 시 용이한가
정확성: 언어의 행위가 예측될 수 있도록 하는 정의
기계 독립성: 특정 기계에 독립적으로 언어를 정의해서 사용하는가
보안성: 프로그래머가 만들 수 있는 오류의 수를 최소화 하였는가
확장성: 언어의 새로운 기능을 추가하고 라이브러리에 새로운 함수를 추가할 수 있는가
제약성: 최소한의 지식과 일부 언어 구조 지식으로 프로그램을 작성할 수 있는가