프로그래밍의 역사
디지털 컴퓨터의 이전에는 BC1500~3000년경 찰흙판을 이용하였고 60진법을 사용했다.
유클리드는 최대 공약수 알고리즘을 만들었다...무려 기원전 사람이....
튜링머신 / 폰 노이만 시대에는 Flow Chart를 사용하였다.
1950s
기계어 , 어셈블리어, FORTRAN, COBOL, ALGOL60, LISP, APL
1960s
PL/1, ALGOL68, Simula67, BASIC
1970s
PASCAL, C, Euclid, Mesa
1980s
Ada, scheme, ML, Prolog, Modula-2, C++, python, perl
1990s
HTML, Java, PHP, C#
찰스 배비지는 주 기억 장치의 개념이 아닌 유한 차의 원리를 기본으로 함
Analytical Engine은 현 디지털 Computer의 원리를 포함한다.
그것은 바로 Input - Control - Output을 말한다.
-튜링 머신
무한 테이프와 유한 제어로 계산.
기억장소 + 알고리즘을 이용하면 어떤 계산도 가능하다.
- Church의 lambda Calculus
함수 형태를 사용하여 계산의 Formal 표현을 제시했다.
- 폰 노이만의 Flow Chart
프로그램 내장 방식 제어 권유
조건 제어 전이 = 서브 루틴
* 기계어가 어려운 이유?
- 가독성이 낮고, 수정이 어렵고, 코딩 스킬이 어느 정도 수준이 되어야 한다.
어셈블리어 1950년
: 기계어 코드 - 알기 쉬운 영어 단어 사용 - 명령어를 만든다.
Auto code 1952년
: Mark 1에서 사용했고 , 저장 가능하며 서브 루틴의 개념이 있다.
Flow-Matic
: 1951년 A - o 라는 컴파일러(UNiVac) Math-matic(명령에 단어를 이용)이라 불려지는 최초의 영문처리 컴파일러 배포
FORTRAN 1954년
구현은 아직 안 된 상태
FORTRAN 1의 개발 1957년
:최초의 대중 고급언어
과학 계산용이고 IBM에서 설계했다. 현재도 많이 사용한다.
APL 1957년
: 수학 행렬 처리 목적으로 한 언어
제어 구조가 없으며, 그리스 기호를 사용하므로 문자를 이해하기 어려운 점이 있다.
FORTRAN 2 1958년
: 서브루틴을 분리해서 컴파일
LISP 1959년
: MIT에서 개발했으며, 리스트 구조와 함수 적용이 기본이다.
함수형 언어이며, Garbage-collection 개념 도입
Recursion의 원조
ALGOL 60 1960년
: 포트란과 비슷하며, 블록 구조를 도입하고, BNF를 최초로 사용함.
COBOL 1960년
: 사무 처리용 언어이며, 레코드 구조를 가진다.
식별부 , 표지부, 데이터부, 절차부로 구성 된다.
FORTRAN 4 1962년
:기능의 향상( IF, 명시적 타입 선언, 함수에 파라미터 전달등)
COMMON, QEUIVALENCE(전역변수) 실행의 향상
SNOBOL 1963년
:최초의 문자열 처리 언어, 패턴 매칭 기능이 포함 되었다.
PL/1 1964년
: 포트란의 계산 , 코볼의 사무처리, 알골의 알고리즘등의 장점을 모두 수용한 언어
컴파일러 사이즈가 크기에 효율성이 낮다.
배우기도 어렵다.
Simula67 1965년
: 객체 지향 언어의 토대
Class의 최초 사용
Basic 1964년
:교육용 언어이고 이 언어가 훗날 Visual Basic의 토대가 된다.
BCPL 1967년
: B와 C언어에 영향을 미침
70년대에는 간결성과 추상화 연구가 시작 되었다. = 가장 많은 언어 탄생 = 컴파일러 종류도 많아졌다.
Pascal 1970년
:Aliasing 사용, Pointer사용
작고 간결하고 효율적이며 구조적인 장점
C언어 1972년
: 시스템 프로그래밍 = 유닉스 개발용
SmallTalk 1972년
:객체 지향의 모든 특징을 구현
Data abstract, Inheritance, dynamic Binding
Prolog 1973년
: 논리 언어
Scheme 1975년
:LISP언어의 일종으로 lambda Calculus에 가깝게 설계 됨
CLU 1975년
:자료 추상화, 제어 추상화, 예외 처리 방식등의 추상화
AWK 1978년
: 컴파일이 필요 없다.
Text Formatting, data Extraction을 위한 언어
Modula 2 1981년
: 내장형 시스템 프로그래밍 목적
상속은 허용하지 않고, 추상 데이터는 허용한다.
Ada 1983년
:OOP의 특징 + Block 구조 언어
미 국방성에서 보안에 강력한 언어를 설계하다보니 방대해져서 사용하기가 어렵다
C++ 1983년
:C언어에서 나온 OOP를 위한 언어
병행처리, 연속성, GC 기능이 없다.
Java 1995년
:C++기반언어로 JVM에서 Byte Code를 번역 후 기계로어 변환하는 방식으로
초기에는 엄청 느렸다. 단 이식성이 좋다는 장점이 있다.
그러나 현재는 JIT 컴파일러를 사용하기에 속도가 빨라졌다.
1995년부터 스크립트 언어의 등장
Client - HTML, CSS,
Server - PHP, Ruby, Python
2000년대
:C#이 등장했으며, C++, Java 기반의 언어이다.
CBD의 개념을 가지고 있다.
*CBD란? Component Based Develop의 약어로 소프트웨어 개발 방법론 중의 하나로 OOP를 뒤를 이어가는 개발 방법론이다.