방송대/프로그래밍언어론
2장 프로그래밍 언어의 발전 및 동작원리
피클s
2022. 8. 25. 10:27
목차
프로그래밍 언어의 발전
동작 방식의 발전
- 아이디어 시대 : 계산 자동화를 위한 상상 속의 기계 설계(튜링기계)
- 전자식 컴퓨터 등장 : 전자 신호를 통한 계산 기계(애니악)
- 프로그램 저장 방식의 컴퓨터 : 프로그램과 처리기를 분리(에드박)
운영체제의 발전
- 일괄처리 운영체제 : 관리자를 대신할 프로그램
- 시분할 운영체제 : 한 컴퓨터를 여러 사람이 사용
- DOS : CLI를 활용한 개인용 컴퓨터
- PC 환경 운영체제 : GUI 운영체제와 리눅스의 발전
프로그래밍 언어의 역사
1950년대 : 초기 프로그래밍 언어
- Portran : 수식과 문장, 제어문의 등장(과학계산용 언어)
- Algol : 구조화 프로그래밍의 발전. 알고리즘 기술 언어
- LISP : 초기 함수형 언어
1960년대 : 프로그래밍 언어의 발전
- Cobol : 레코드 타입의 소개. 서로다른 자료형을 한 묶음으로 표현. 사무용 언어
- BASIC : 교육용언어
- Simula : 객체지향의 등장
1970년대 : 프로그래밍 언어의 단순화
- Pascal : 차세대 교육용 언어. 구조화 프로그래밍 지원
- C : 진정한 시스템 프로그래밍 언어. Unix 개발용 언어
- Prolog : 선언적 논리 언어
- Smalltalk : 객체지향 언어의 발전. GUI, 마우스 등을 도입
- Ada : 안정성을 위한 언어. 매우 복잡함
- ML : 타입 시스템을 갖춘 현대 프로그래밍 언어. 강력한 정적 타입 검사
- Scheme : 간결한 LISP
1980년대 : 현대 프로그래밍 언어 등장
- Common Lisp : 방대한 LISP의 통합. 객체지향 도입
- Object-C : C를 기초로한 객체지향 언어
- C++ : 객체지향 C언어
- Perl : 문자열 처리를 위한 언어
1990년대 : 프로그래밍 언어의 대중화
- Java : 단순한 객체지향 언어. JVM 도입
- JavaScript : 웹 프로그래밍 언어
- Python : 빠른 프로토타이핑 언어. 스크립트 언어
- Haskell : 순수 함수형 언어. monad 탑재
프로그램 동작 원리
컴퓨터 동작 원리
CPU : 인출-해석-실행 주기를 반복하여 메모리에 적재된 프로그램의 명령어를 실행
프로그래밍 언어 구현이 필요한 이유
- 기계어 : CPU가 이해하고 수행하는 명령어라 사람이 이해하기 매우 어려움
- 어셈블리어 : 기계어에 거의 일대일 대응하는 형태의 기호 언어(CPU에 종속적)
- 고급프로그래밍 언어 : 사람에 가까운 표현. 기계에 종속적이지 않음. 소스프로그램을 목적프로그램으로 변환 필요
구현방법
- 컴파일러 : 소스프로그램을 미리 해석함.(효율적)
- 인터프리터 : 명령어를 하나씩 해석함. CPU의 인출-해석-실행주기를 흉내냄.
- 하이브리드 : 인터프리터와 컴파일러 조합. ex) JVM
프로그래밍 언어의 평가 기준
요구사항
- 표현 풍부성 : 프로그래머의 아이디어를 표현할 수 있어야 함
- 유지보수성 : 변화에 쉽게 대처할 수 있어야 함
- 실행 가능성 : 컴퓨터에서 실행할 수 있어야 함
설계원칙
- 규칙성 : 언어의 기능이 잘 조합될 수 있어야 함(일반성, 직교성, 일관성)
- 추상화 지원 : 실세계의 대상을 추상화할 수 있고 이를 대상으로 연산할 수 있어야 함(데이터 추상화, 제어 추상화, 추상 데이터 타입 정의)
- 복잡도 제어 : 복잡한 대상 및 처리 방법을 제어할 수 있어야 함(캡슐화, 모듈화)
평가기준
- 작성력 : 수식, 문장을 쉽게
- 가독성 : 쉽게 이해할 수 있게 작성할 수 있는가
- 신뢰성 : 오류에 빠지는 가능성을 줄일 수 있는가
- 직교성 : 언어 기능이 서로 간섭하지 않고 자유롭게 조합 가능
- 일관성 : 유사 기능을 같은 형태로 나타낼 수 있는가
- 확장성 : 새로운 기능 추가
- 효율성 : 프로그램이 효율적으로 수행할 수 있는가
- 유연성 : 프로그래머가 표현하고 싶은 용을 수용할 수 있는가
- 이식성 : 다른 환경에서 실행할 수 있는가
선택기준
- 커뮤니티가 활발한지
- 특정 응용 분야에서 사용됨
- 새로운 패러다임을 지원