학습개요
프로그래밍 언어는 어떻게 발전되어 왔을까요? 역사를 모르는 사람에게 미래는 없다고 하는데, 그렇다면 프로그래밍 언어의 발전 과정에서 우리는 무엇을 배워야 할까요? 도대체 프로그래밍 언어는 컴퓨터에서 어떻게 동작하는 것일까요? 프로그래밍 언어론을 배우고 나면 프로그래밍 언어를 더 잘 이해하고 현명하게 프로그래밍 언어를 선택할 수 있다고 했는데 그렇다면 좋은 프로그래밍 언어란 무엇일까요? 프로그래밍 언어의 어떤 특성이 좋은 프로그래밍 언어를 만드는 것일까요? 프로그래밍 언어를 어떻게 현명하게 선택할 수 있을까요? 프로그래밍 언어론을 처음 배우는 우리에게는 너무도 많은 의문점이 생깁니다. 이번 강의에서는 이런 의문점을 하나씩 살펴보고 그 해답을 찾아봅니다.
학습목표
- 프로그래밍 언어의 발전 과정을 이해하고, 프로그래밍 언어 발전에 지대한 영향을 끼친 주요 언어의 특징을 설명할 수 있다.
- 컴퓨터 구조와 프로그래밍 언어의 동작 원리를 이해하고 프로그래밍 언어의 구현 방법을 설명할 수 있다.
- 프로그래밍 언어가 갖추어야 할 세 가지 요구사항을 이해하고 프로그래밍 언어의 평가 기준을 설명할 수 있다.
- 프로그래밍 언어의 평가 기준 중 서로 상충되는 평가 기준을 살펴보고 기타 프로그래밍 언어의 다양한 특성을 설명할 수 있다.
정리하기
- 저장 프로그램 방식의 에드박이 등장하면서 프로그램이라는 개념이 등장하게 되었다.
- 1950년대 초기 프로그래밍 언어로 Fortran은 수식 계산, 변수, 대입문, 함수, 제어문의 초기 형태를, Algol은 제어 구조 개념을, LISP는 함수형 언어 개념을 소개하였다.
- 1960년대 발표된 Cobol은 레코드를 통한 자료 구조 개념을 제시하였다. BASIC은 교육용 언어로서 큰 인기를 끌었으며 Simula는 객체지향 개념을 처음 소개하였다.
- 1970년대 가장 영향력이 높은 프로그래밍 언어는 C이다. Pascal은 구조화 프로그래밍의 교육용 언어로 자리잡았고, 그 외 다양한 패러다임의 언어가 등장하였다.
- 1980년대에는 객체지향 개념이 더욱 견고해지고 다양한 언어 표준이 이루어졌다.
- 1990년대에는 Java와 JavaScript, Python을 필두로 하여 프로그래밍 언어의 대중화가 시작되었다.
- 인터프리터는 고급언어 프로그램으로 작성된 문장을 하나씩 읽어서 수행한다. 컴파일러는 고급언어 프로그램을 기계어로 미리 번역한다. 하이브리드 구현은 고급언어 프로그램을 중간 코드 형태로 컴파일하고 이 중간 코드를 가상기계 상에서 해석한다.
- 프로그래밍 언어의 요구사항을 효과적으로 지원하기 위해 따라야 하는 프로그래밍 언어 설계 원칙으로는 규칙성, 추상화 지원, 복잡도 지원 등을 들 수 있다.
- 프로그래밍 언어의 평가 기준 중 대표적인 것으로 작성력, 가독성, 신뢰성, 직교성, 일관성, 확장성, 효율성, 유연성, 이식성 등을 들 수 있다.
- 프로그래밍 언어를 선택할 때는 언어 사용 커뮤니티가 활발하고 호의적인지, 언어의 특정 응용 분야가 있는지, 새로운 프로그래밍 패러다임을 지원하는지 등을 고려해야 한다.