OOP vs. Structured Programming¶
Structured Programming은 Edsger wybe dijkstra (에츠허르 위베 데이스크라, 1930-2002)가 1968년 제안한 프로그래밍 패러다임이다.
OOP는 Alan curtis kay (앨런케이)의 small talk에서 시작된 것으로 알려져 있으며, 현재 가장 인기있는 프로그래밍 패러다임이다.
비교하기¶
이 둘을 비교한 표는 다음과 같다.
OOP | Structured Programming |
---|---|
Object간의 역할과 관계, 즉 상호작용이 중심. | Function이 중심. 모든 프로그램은 Functional decomposition이 이루어짐. |
Object-orientation | Procedure-orientation |
데이터는 감추어지고, 행위(Method)만 공개됨. | |
Object는 필요한 데이터와 function을 같이 묶어서 가지고 있음. (Encapsulation, Data hiding) | 데이터는 변수로 노출되며, function과 관련된 변수에 대한 이해가 필요.(function에 맞추어진 data에 해당하는 변수가 같이 있어야 하나 분리되어 있음) |
필요한 데이터와 function이 Object로 묶여 있기 때문에, 모듈화가 자연스럽게 이루어지고 재사용성이 높음. | 처리 프로세스에 초점을 두고 있으며, 프로세스와 관련된 데이터가 드러나있음. 재사용성을 위해서 함수와 데이터 모두 파악해야 함 |
순서보다는 메시지 기반으로 수행됨 (message passing) | 순차적인 알고리즘으로 수행됨. |
이를 좀더 간략하게 정리하면 다음과 같다.
OOP | Structured Programming |
---|---|
Object, Relation 중심 | Function, Procedure 중심 |
메시지 기반 | 순차적 수행 |
Data hiding | Data 노출 |
참고자료: 창시자들¶
Edsger wybe dijkstra (에츠허르 위베 데이크스라)¶
네덜란드의 Computer Scientist. 1972년 튜링상 수상.
- 1930~2002
- ALGOL개발(고급언어의 조상님,50년대)
- 1968년 구조적 프로그래밍 시대 개척 (Goto Statement Considered Harmful)
- SW 공학과 Structured programming의 시대를 연 선구자.
- 최단거리 알고리즘이나 세마포어등의 개념을 연구, 제안.
Alan curtis kay (앨런케이)¶
미국의 Computer Scientist. 2003년 튜링상 수상.
- 1940 ~
- Small talk 개발 (70년대) : 제록스 파크 (PARC)에서.
- OOP의 개척자
The best way to predict the future is to invent it.
프로그래밍 언어 분류.¶
구조적 프로그래밍 (Structured Programming)
- Pascal, C
- 명령형 프로그래밍 (Imperative Programming).
- Fortran, Cobol, C, Aida
- 선언형 프로그래밍 (Declarative Programming )
- SQL, Prolog
- 함수형 프로그래밍 (Functional Programming)
- LISP
객체지향 프로그래밍 (OOP)
- Java, C++
- 객체기반 프로그래밍
- Java Script
심지어 Python 은 fundamental data type이 없이 모든 것이 Object 인 언어이다. 재미있는 것은 그럼에도 구조적으로 또는 순차적으로 프로그래밍하기가 쉽다는 점이며 엄격한 OOP를 적용하기가 쉽지않다는 점이다. (Java는 반강제적으로 OOP를 따르게 하는 것과 차이가 있다.)