'프로그래밍/객체 지향 프로그래밍'에 해당되는 글 2

  1. 2007.10.17 목차 - 객체 지향 프로그래밍
  2. 2007.10.17 객체 지향 프로그래밍이란?
목차


  1. 객체 지향 프로그래밍 소개
    1. 객체 지향 프로그래밍이란?
    2. 객체 지향 프로그래밍의 역사
EXIFEEDI의 다른 블로그 보기
목차 보기


객체 지향 프로그래밍이란?

위키피디아(Wikipedia)에서는 객체 지향 프로그래밍(object-oriented programming, OOP)에 대해 다음과 같이 이야기하고 있다.
Object-oriented programming (OOP) is a programming paradigm that uses "objects" and their interactions to design applications and computer programs. It is based on several techniques, including inheritance, modularity, polymorphism, and encapsulation. It was not commonly used in mainstream software application development until the early 1990s. Many modern programming languages now support OOP.
즉, 애플리케이션이나 컴퓨터 프로그램을 설계할 때 "객체(objects)"와 이들 객체 사이의 상호 작용을 이용하는 프로그래밍 패러다임이라고 할 수 있다. 이때 많이 이용되는 기술이 상속(inheritance), 모듈화(modularity), 다형성(polymorphism), 캡슐화(encapsulation)이다.


등장 배경

객체 지향 프로그래밍은 소프트웨어 공학(software engineering)이라는 분야가 처음 생기면서 "소프트웨어의 위기(software crisis)"에 대해 논의가 시작되던 1960년대로 거슬러 올라간다.

"소프트웨어의 위기(software crisis)"란, 컴퓨터의 급격한 성능 향상에 따른 영향력과 해결해야 할 문제들의 복잡성을 설명하기 위한 용어로, 본질적으로는 정확하고(correct), 이해할 수 있으며(understandable), 검증할 수 있는(verifiable) 컴퓨터 프로그램을 작성하는 것이 힘들다는 것을 일컫고 있다. 이러한 "소프트웨어의 위기"에 대해 에져 다익스트라(Edsger Dijkstra)는 1972년 ACM 튜링상(Turing Award) 강좌에서 "보잘것없는 프로그래머(The Humble Programmer)"라는 제목으로 강좌를 하며 다음과 같이 이야기한다.
[The major cause of the software crisis is] that the machines have become several orders of magnitude more powerful! To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming has become an equally gigantic problem.

– Edsger Dijkstra, The Humble Programmer

이처럼 하드웨어와 소프트웨어가 급격하게 복잡해지자 많은 연구자들이 어떻게 소프트웨어 품질을 유지할 수 있을 것인가에 대해 연구를 했고, 이에 객체 지향 프로그래밍(object-oriented programming)이 모듈화(modularity)와 소프트웨어 재사용성(reusability)을 강조하며 퍼져 나갔다.


기본 개념(fundamental concepts)

데보라 암스트롱(Deborah J. Armstrong)의 조사에 따르면, 객체 지향 프로그래밍에서는 클래스(class), 객체(object), 메쏘드(method), 메시지 패싱(message passing), 상속(inheritance), 캡슐화(encapsulation), 추상화(abstraction), 다형성(polymorhpism)과 같은 주요 기본 개념이 등장한다고 한다.



References
  1. Wikipedia.org, "Object-oriented programming".
  2. Wikipedia.org, "Software crisis".
EXIFEEDI의 다른 블로그 보기