[프로그래밍언어론] 프로그래밍 언어의 발전 및 동작원리
프로그래밍 언어의 발전
컴퓨터 시스템의 발전
- 아이디어 시대
- 계산 자동화를 위한 상상 속의 기계 설계(튜링기계)
- 계산 자동화를 위한 상상 속의 기계 설계(튜링기계)
- 전자식 컴퓨터 등장
- 전자 신호를 통한 계산 기계(애니악, 클로서스)
- 전자 신호를 통한 계산 기계(애니악, 클로서스)
- 프로그램 저장 방식의 컴퓨터
- 프로그램과 처리를 분리(에드박)
- 프로그램과 처리를 분리(에드박)
운영체제의 발전
- 일괄처리 운영체제
- 관리자(operator)를 대신할 프로그램 등장
- 관리자(operator)를 대신할 프로그램 등장
- 시분할 운영체제
- 한 컴퓨터를 여러 사람이 사용
- 한 컴퓨터를 여러 사람이 사용
- DOS
- IBM 컴퓨터, Apple 등 개인용 컴퓨터(PC) 등장
- IBM 컴퓨터, Apple 등 개인용 컴퓨터(PC) 등장
- PC 환경 운영체제 발전
- GUI 운영체제와 Linux의 발전
- GUI 운영체제와 Linux의 발전
1950년대 : 초기 프로그래밍 언어
- Fortran : 수식과 문장, 제어문의 등장
- IBM의 존 배커스에 의해 개발됨
- 과학 계산용 언어
- IBM의 존 배커스에 의해 개발됨
- Algol : 구조화 프로그래밍의 발전
- 본래 이름 : IAL(Internation Algebraic Language)
- 국제 위원회 ACM-GAMM을 통해 설계된 언어
- 알고리즘 기술 언어
- 본래 이름 : IAL(Internation Algebraic Language)
- LISP : 초기 함수형 언어
- MIT의 존 매카시가 설계함
- 최초의 함수형 언어
- MIT의 존 매카시가 설계함
1960년대 : 프로그래밍 언어의 발전
- Cobol : 레코드 타입의 소개
- 미 해군에서 그레이스 호퍼가 이끄는 팀에 의해 개발됨
- 사무용 언어
- 미 해군에서 그레이스 호퍼가 이끄는 팀에 의해 개발됨
- PL/I : 너무 복잡한 언어
- 모든 언어를 합쳐 보았으나 결과적으로 너무 복잡해짐
- 모든 언어를 합쳐 보았으나 결과적으로 너무 복잡해짐
-
BASIC : 교육용 언어
- Simula : 객체지향의 등장
- 시뮬레이션 언어
- 시뮬레이션 언어
1970년대 : 프로그래밍 언어의 단순화
- Pascal : 차세대 교육용 언어
- 구조화 프로그래밍 지원
- 구조화 프로그래밍 지원
- C : 진정한 시스템 프로그래밍 언어
- Unix 개발용 시스템 프로그래밍 언어
- Objective-C, C++, Java, C# 등 다양한 언어에 지대한 영향을 끼침
- Unix 개발용 시스템 프로그래밍 언어
- Prolog : 선언적 논리 언어
- 최초의 논리 언어
- 최초의 논리 언어
- Smalltalk : 객체지향 언어의 발전
- 최초로 GUI, 마우스 등을 도입
- 최초로 GUI, 마우스 등을 도입
- Ada : 안전성을 위한 대장정
- 미 국방성(DoD) 공모
- 매우 복잡한 언어로 1983년에 첫 컴파일러 등장
- 미 국방성(DoD) 공모
- ML : 타입 시스템을 갖춘 현대 프로그래밍 언어
- 강력한 정적 타입 검사, 타입 추론, 패턴 검사, 예외 처리 등
- 강력한 정적 타입 검사, 타입 추론, 패턴 검사, 예외 처리 등
- Scheme : 간결한 LISP
- MIT 학생들의 기초 프로그래밍
- MIT 학생들의 기초 프로그래밍
- Common Lisp : 방대한 LISP의 통합
- 함수형 언어 패러다임과 객체지향 패러다임을 동시에 지원
- 함수형 언어 패러다임과 객체지향 패러다임을 동시에 지원
- Objective-C : C의 탈을 쓴 Smalltalk
- C를 기초로 한 객체지향 언어의 신호탄
- Apple의 애플리케이션 작성 언어로 발전
- C를 기초로 한 객체지향 언어의 신호탄
- C++ : 객체지향으로 변신한 C
- 클래스 개념을 C에 도입
- 클래스 개념을 C에 도입
- Perl : 문자열 처리를 위한 언어
- 정규식을 바탕으로 한 강력한 패턴 매칭 기능 포함
- 정규식을 바탕으로 한 강력한 패턴 매칭 기능 포함
1990년대 : 프로그래밍 언어의 대중화
- Java : 단순한 객체지향 언어
- 원래 목적은 임베디드 컴퓨팅 분야였으나 웹 브라우저에 탑재되면서 인기
- JVM (Java Virtual Machine)
- 원래 목적은 임베디드 컴퓨팅 분야였으나 웹 브라우저에 탑재되면서 인기
- JavaScript : 웹 프로그래밍 언어
- Netscape
- Elm, TypeScript 등 다양한 변종 언어로 발전
- Netscape
- Python : 빠른 프로토타이핑 언어
- 스크립트 언어
- 동적 언어를 추구
- 다중 패러다임 언어
- 스크립트 언어
- Haskell : 순수 함수형 언어
- 모나드(monad)가 탑재되면서 점차 인기
- Scala에 영향을 줌
- 모나드(monad)가 탑재되면서 점차 인기