카테고리 없음

프로그래밍 언어의 개념 2탄

seungdols 2015. 1. 3. 18:38

프로그래밍의 역사


디지털 컴퓨터의 이전에는 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를 뒤를 이어가는 개발 방법론이다.



반응형