1.절차 지향 프로그래밍
객체 지향 이전의 프로그래밍 방법을 흔히 절차 지향 프로그래밍 또는 구조적 프로그래밍이라고 한다. 이들에 대해서 간단히 설명하자면 이들을 대단히 구조적으로, 또한 대단히 순서적으로 만들어져 있다는 것이다. 이들 최대 관심사는 얼마나 효율적으로, 얼마나 빠르게 연산을 수행할 수 있는가 하는것이다. 프로그래밍의 관심사는 얼마나 효율적으로, 얼마나 빠르게 연산을 수행할 수 있는가 하는 것이다. 프로그래밍의 관심사가 연산의 속도와 효율성에 맞춰진 것은 당시 상황이 이러한 것들을 필요로 햇기 때문이다. 그 당시에 컴퓨터화 프로그램을 필요로하건 거의 모든 분야가 엄청난 수의 계산을 필요로 하던 곳이었다. 최초의 컴퓨터라고 불리는 애니악의 용도가 탄도계산이었다는 사실만 봐도 이말은 쉽게 공감할 수 있을것이다.
이때의 컴퓨터는 일종의 계산기 정도의 역할만 수행할 수 있으면 되었다. 당연히 프로그래밍의 모든 초점은 계산을 하는데 필요한 데이터와 어떻게하면 이 데이터를 보다 빠르고 효율적으로 이용할 수 있을까에 초점이 맞춰지게 된 것이다. 프로그램의 모든 흐름은 데이터를 중심으로움직였고 이방법은 당시로서는 최상의 선택이었다. 이때의 프로그래밍이라는 것은 가장 중요한 데이터를 중심에두고 여러 함수가 이 데이터를 가공하는 일련의 작업을 수행하는 것이었다.
이들은 마치 톱니바뀌와 같이 모든 일이 곡 마추어진 순서에 의해서 진행된다. 1번함수가 데이터를 가공하면 2번함수가 다음 작업을 처리하고. 다음은 3번이나 4번 함수가 작업을 처리하게 된다. 물론 이러한 방법이 가장 좋은 연산 성능을 이끌어내기 위한 것임은 말할 것도 없다. 그리고 더 중요한 것은 이것이상의 방법을 필요로 하지 않았다는 것이다.
간단하게 지금의 계산기를 생각해보자. 사용자는 계산기를 사용하면서 많은 것을 요구하지 않는다. 단지 얼마나 빨리 정확한 계산 결과를 돌려주느냐 하는 것에만 관심을 가질뿐이다. 절차 지향프로그래밍은 이러한 요구사항을 받아들여 가장 최적의 계산능력을 수행할 수 있도록 발전되어 왔고, 프로그램의 요구사항을 처리하는데도 아무 문데가 발생하지 않았다.
그러나 문제는 컴퓨터가 점점 더 많은 일을 처리하면서 생기기 시작했다. 이제 컴퓨터는 단순히 계산만을 하던 물건에서 벗어나 데이터 처리는 물론이고 결과의 출려과 보관, 그외의 워드프로세싱이나 그래픽 등 다양한 용도로 사용되고 있다. 당연히 이들 분야에서 필요로 하는 프로그램의 양은 많아졌고. 점점 더 복잡한 프로그램을 요구하게 되었다. 프로그래밍의 양은 이전과 비교했을 때 기하급수적으로 증가 했고, 혼자서 만든다는 것은 상상할 수도 없는 엄청난 규모의 프로그램을 필요로 하게 되었다. 이때부터 절차 지향 언어는 그 한계를 드러내기 시작했다.
우선 절차 지향 언어는 짜여진 순서에 의해 일을 진행하기 때문에 만일 이들 중 어느 한 부분이 수정이나 추가, 삭제되어야 한다면 이것은 한 부분만의 문제가 아니라 프로그램 전체에 막대한 영향을 줄수있다. 또한 순서와 앞뒤과정이 중요하기 때문에 규모가 큰 프로그램을 다른 사람과 공유하여 개발하기가 힘들어지면서 절차 지향 언어는 프로그램 유지 보수의 어려움과 대규모 프로젝트 추진에서 상당한 단점을 보이게 되었다. 그리고 이러한 단점은 시간이 지날수록 치명적인 약점으로 바뀌게 되었다. 이러한 절차 지향의 단점을 보완하고자 나온 방법이 바로 객체 지향 프로그래밍이다.
'My work space > Java' 카테고리의 다른 글
[아시나요?]객체 (0) | 2008.08.14 |
---|---|
[아시나요?]객체 지향 언어_2 (0) | 2008.08.14 |
[아시나요?]배열 (0) | 2008.08.14 |
[아시나요?]조건연산 , 비트연산 , 시프트연산 (0) | 2008.08.14 |
[아시나요?]이스케이프 문자 (0) | 2008.08.14 |