Programming Languages

Download Report

Transcript Programming Languages

제2장
언어의 변천
 디지털 컴퓨터 이전의 언어
 BC1500~3000년대 : Mesopotamia 지역에서 찰흙판의 알고리즘 발견
 60진법 사용, 부동 소수점 표기 사용(곱셈, 나눗셈, 크기 평가 가능)
 수학적 표를 이용한 대수학 방적식 해결  프로그래밍 언어 표기의 첫 출현
 “if x<0 then branch”와 같은 조건문 不在  음수와 0의 개념 不在
 BC300년경 : Euclid(그리스, GCD 계산을 위한 알고리즘 기술)
 1820~50년 : C. Babbage(EUK, difference & analytical engine 설계)
 1930~40년 : Zuse(Plan Calculus), Turing(Turing Machine),
Church(Lambda Calculus), Aiken(Mark I),
Von Neumann(Flow Diagrams)

불행히도, 대부분의 연구가 현 Digital Computer의 초기 개발
자들에게 알려지지 못함.
언어의 변천
 1950년대 : 최초의 프로그래밍 언어
 Stored programming 방식 출현(1948, Nuemann)
 Assembly 언어 탄생 (저급언어로서 Symbol로 표현)
 최초의 고급언어 : J. Backus(IBM, FORTRAN, 1954~57)
FORTRAN II  FORTRAN IV  FORTRAN 66  FORTRAN 77  FORTRAN
90 : 컴파일러가 다른 언어에 비해 효율적인 기계어 코드를 생성
 COBOL(59~60년) : Zgrace Hopper(미국방성 해군)의 팀이 개발
 목적 : 일반 사용자들의 判讀性과 理解性의 容易를 위해 設計
 단점 : 일반 서술형 문장 記述로 인한 간결함 不在와 문법의 複雜性
특징 : 프로그래밍 언어 디자인에 새로운 특징 추가에 기여
 Record 구조 도입
 자료구조와 실행 부분의 분리
 PICTURE 구에 의한 출력 양식의 可變性 附加
언어의 변천
 ALGOL60(58~60년) : 알고리즘 기술을 위한 언어로 개발(연구 및 응용)
 영향 : Pascal, C, Modula-2, Ada 등 Algol 파생어에 영향
 특징 : 양식의 자유화(free-format), 구조적 명령문, 블록 개념 도입,
자료형 선언, Recursion, call-by-value 기법
스택기반의 실행 환경, 구문정의를 위한 Backus-Naur Forms의 사용
 LISP(50년대 후반) : J. McCarthy(MIT大)가 고안, Neumann방식 탈피
 영향 : MacLisp, UTLisp, Franz Lisp, Common Lisp, Scheme
 특징 : 리스트 구조와 함수의 응용을 기본, 인공지능 분야에서 사용,
획일적인 자료구조, S-expression, 함수 응용이 기본 표기법
run-time 기억장소 할당 제공을 위한 Heap/garbage collection 사용
 APL(50년대 후반~60년대 초) : K. Iverson(Harvard大)이 고안
 특징 : 행렬을 포함하는 수학적 연산의 편리 제공,
스타일이 기능적, 반복구조 자동 제공 연산자 채택
 단점 : 제어구조 不在, Greek 문자 사용, 프로그램 이해에 어려움
언어의 변천
 1960년대 : 프로그래밍 언어의 폭증
 수많은 언어의 생성 시기, 대부분 소멸, 일부 언어는 P.L 발전에 큰 공헌
 PL/I(63~64년) : IBM Project(IBM 360 시리즈에 사용 계획)
 목적 : 일반적이고 보편적인 언어의 설계에 목표를 둠
 특징 : FORTRAN, COBOL, Algol60의 장점들을 수합하여 설계
Concurrency, Exception Handling 구조 도입
 실패 : PL/I 번역기 작성의 어려움과 번역 속도의 느림, 시대에 앞서감
 Algol68(63~68년)
 목적 : 직교(orthogonal) 언어(임의의 제한이 없는 수식 위주 언어)로 변경
 Snobol(StriNg Oriented symBOlic Language) : R. Griswold가 개발
 특징 : 문자열 처리, 복잡 다단하고 강력한 패턴 매칭 기능 제공
 Simula67 (Object-Oriented Language) Nygaard & Dhal(Norway) 개발
 Basic (1964년) J. Kemeny & T. Kurtz(Dartmouth大)
언어의 변천
 프로그래밍 언어의 바벨탑
언어의 변천
 1970년대 : 간결성, 추상화, 연구 사항
 간결성과 일관성 추구 및 새로운 방향 감각으로 언어 개발 복귀
 Pascal(1971년) : N. Wirth(IBM 360 시리즈에 사용 계획)
 목적 : 작고 간결하고 효율적 언어로 개발
 특징 : 분리 컴파일, 문자열 조작, 확장된 입출력 기능 제외
 C(1972년) : Dennis Ritchie(Bell Lab.)
목적 : Algol의 한계성 극복
 특징 : 간결성 시도, 수식 위주로 국한하고 하드웨어 접근 가능
 CLU(1974~77년) : Barbara Liskov(MIT大)
 특징 : 추상화 메커니즘을 위한 일관성 있는 접근 방식 제공
 Euclid (1976~77년) CLU Committee(Tronto大) 개발
 특징 : aliasing 개선, 자료 추상화, 프로그램의 증명 보조(형식적 검증에 목적)
 Mesa (1976~79년) Palo Alto Lab.(Xerox社) O.S/S.P에 사용
언어의 변천
 1980년대 : 통합과 새로운 방향
 80년대에 설계된 유일한 언어인 Ada의 등장
 Ada : J. Ichbiah Team(미 국방성의 공모작 수정)
 특징 : 자료 추상화, Type System(package)과 병행처리(task) 도입,
예외 처리 기능 추가, 방대한 규모와 복잡 다단
 Modula-2(1982,85,88년) : N. Wirth
특징 : Pascal 결점 보완, 추상화와 부분적 동시 처리 개념 도입
 함수형/논리형 언어와 또 다른 언어의 전형에 관심을 갖은 시기
 함수형 언어 : Scheme(Sussman, MIT大), ML(Meta-Language; Milner,
Edinburgh大), Miranda(Turner, Manchester大)
 논리형 언어 : Prolog(Colmerauer, Marseille)
집합론 적용을 위한 언어 : SETL(Schwartz, NY大)
 객체지향 언어 : Smalltalk(Kay & Ingalls, Xerox社), C++(Stroustrup),
Eiffel(Meyer)
언어의 변천
 프로그래밍 언어의 세대론과 미래
 1세대 언어 : 어셈블리 언어
 2세대 언어 : 비구조적 고급 언어
 3세대 언어 : Procedure 위주의 고급 언어(Pascal, C 등 대다수의 언어)
 4세대 언어 : “Software Crisis”의 해결책으로 제시된 언어
 특징 : 강력한 명령들로 구성, 개발 도구들과 함께 디자인 환경에 포함
 예 : SQL, Lotus, Delphi 등
 장점 : 초보자도 빠른 적응 가능, 데이터베이스 처리의 용이
 5세대 언어 : 초고급 언어(Prolog, SETL 등의 다른 형태의 고급 언어)
 Software Crisis의 해결
언어적 기술의 해결이 아닌 조직적 방법으로 해결
코드의 재사용 증대, 이식성 증대, 문법 위주의 editor를 이용한 생산성 증대
 미래 : 예측 불가능, H.W와 컴퓨터 구조의 변화에 의한 기대
새로운 언어의 설계보다는 기존 언어의 발전 형태를 취할 것으로 예상
Programming Languages
- The end of Chapter 2 -
To Be Continue ...
Copyright, 1999 © H. Y. Kwak, Cheju National University.