bunta의 보조기억장치

[프로그래밍 언어론] 2-1 프로그래밍 언어의 발전 본문

Study/필기

[프로그래밍 언어론] 2-1 프로그래밍 언어의 발전

bunta 2022. 10. 4. 18:06
반응형

컴퓨터 시스템의 발전

아이디어 시대 → 계산 자동화를 위한 상상 속의 기계 설계

전자식 컴퓨터 → 전자 신호를 통한 계산 기계 1940~50년대 최초의 전자식 컴퓨터(에니악, 콜로서스)

                          기능을 수정하기 위해서는 컴퓨터 자체를 손봐야 함(프로그램 개념 X)

프로그램 저장 방식의 컴퓨터 → 프로그램과 처리기를 분리(에드박)

                                                 관리자(operator)가 프로그램이 짜여진 펀치 카드 같은 것을 계속 컴퓨터에 입력하여 작동시킴

 

 

운영체제의 발전

일괄처리 운영체제

→ 관리자(operator)를 대신할 프로그램 등장(자동화)

     But 입력된 순서대로만 처리 가능

 

시분할 운영체제

→ 한 컴퓨터(서버)를 여러 사람이 사용

     cpu가 각 사용자가 명령한 일을 일정한 간격을 두고 돌아가면서 처리하여 한 컴퓨터를 여러 사람이 동시에 사용하는 것처럼 보이게 작동

 

DOS

→ IBM, Apple 등 개인용 컴퓨터(personal computer, PC) 등장

 

PC 환경 운영체제 발전

→ GUI(Graphical User Interface) 운영체제와 Linux의 발전

     서버에서 사용했던 기능들을 PC에서도 사용할 수 있는 운영체제가 발전함


초기 프로그래밍 언어(1950년대)

Fortran: 수식과 문장, 제어문의 등장

→ IBM의 존 배커스(John Backus)에 의해 개발

→ 과학계산용 언어(Fomula Translation)

 

Algol: 구조화 프로그래밍의 발전

→ 본래 이름은 IAL(International Algebraic Language)

→ 국제 위원회 ACM-GAMM을 통해 설계된 언어

→ 알고리즘을 기술 가능한 언어

 

LISP: 초기 함수형 언어

→ MIT의 존 매카시(John McCarthy)가 설계

→ 최초의 함수형 언어

→ 초기 인공지능 분야에서 많이 사용됨


프로그래밍 언어의 발전(1960년대)

Cobol: 레코드 타입의 소개

→ 미 해군에서 그레이스 호퍼(Grace Hopper)가 이끄는 팀에 의해 개발

→ 사무용 언어

 

 PL/I: 복잡한 언어

→ 여러 언어를 합쳐 보았으나 결과적으로 너무 복잡해 사용이 어려움

 

BASIC: 교육용 언어

→ Beginner's All-purpose Symbolic Instruction Code

→ 줄단위 처리

 

Simula: 객체지향

→ 시뮬레이션 언어

 

Pascal: 차세대 교육용 언어

→ 구조화 프로그래밍(BASIC언어와 차이점)

 

C: 시스템 프로그래밍

* 시스템 프로그래밍: 하드웨어와 사용자 중간에서 연결을 목적으로 한 프로그램

→ Unix 개발용 언어

→ Objective-C, C++,  Java, C# 등 다양한 언어에 지대한 영향을 끼침

 

Prolog: 선언적 논리 언어

→ 최초의 논리 언어

 

Smalltalk: 객체지향 언어의 발전

→ 최초로 GUI, 마우스 등을 도입한 언어


프로그래밍 언어의 단순화(1970년대)

Ada: 안전성을 위주로 개발

→ 미 국방성(DoD) RHDAH

→ 매우 복잡한 언어로 1983년에 첫 컴파일러 등장(안전성을 높이기 위해 1970년대부터 개발을 시작하여 약 10년만에 공개)

 

ML: 타입 시스템을 갖춘 현대 프로그래밍 언어

→ 강력한 정적 타입 검사, 타입 추론, 패턴 검사, 예외 처리 등

→ 실행 시간이 아닌 사전에 프로그램을 작성한 뒤 타입 오류 체크

 

Scheme: 간결한 LISP

→ MIT 학생들의 기초 프로그래밍 언어


현대 프로그래밍 언어 등장(1980년대)

Common LISP: 방대한 LISP의 통합

→ 함수형 언어 패러다임과 객체지향 패러다임을 동시에 지원

 

Objective-C: C의 탈을 쓴 Smalltalk

→ C를 기초로 한 객체지향 언어의 신호탄

→ Apple의 애플리케이션 작성 언어로 발전

 

C++: 객체지향으로 변신한 C

→ 클래스 개념을 C에 도입

 

Perl: 문자열 처리를 위한 언어

→ 정규식을 바탕으로 한 강력한 패턴 매칭 기능 포함


프로그래밍 언어의 대중화(1990년대 이후)

Java: 단순한 객체지향 언어

→ 원래 목적은 임베디드 컴퓨팅 분야

→ 웹 브라우저에 탑재되면서 인기가 높아짐

→ JVM(Java Virtual Machine)을 통해 어디서나 Java 프로그램 동작 가능

 

JavaScript: 웹 프로그래밍 언어

→ Netscape에서 개발

→ 스크립트 형태로 만들어져서 브라우저에서 동작하기 수월함

→ Elm, TypeScript 등 다양한 변종 언어로 발전

 

Python: 빠른 프로토타이핑 언어

→ 스크립트 언어

→ 동적 언어를 추구(미리 자료형을 지정하지 않고 실행 시 필요에 따라 지정)

→ 다중 패러다임 언어(명령형, 객체지향 등 모두 포함)

 

Haskell: 순수 함수형 언어

→ 모나드(monad)가 탑재되면서 점차 인기가 높아짐

→ Scala에 영향을 줌

 

 

 

한국방송통신대학 [프로그래밍 언어론] 강의 필기입니다.

반응형
Comments