왜 객체 지향 패러다임이 주류가되기까지 오랜 시간이 걸렸습니까?


12

나는 질문을 읽었고 상당히 최근의 다른 것에 대해 생각하게했다. 객체 지향 언어. 첫 번째가 언제 만들어 졌는지 잘 모르겠지만 주류가되기까지 왜 그렇게 오래 걸렸습니까?

  • C는 큰 인기를 얻었지만 몇 년 동안 객체 지향 C ++이되지 않았습니다 (수십 년?)
  • 90 년대 이전에는 주류 언어가 없었습니다.
  • 객체 지향은 Java와 C ++에서 거의 동시에 이륙하는 것처럼 보였습니다.

자, 제 질문은, 왜 이렇게 오래 걸렸습니까? C가 원래 객체 지향 언어로 고안되지 않은 이유는 무엇입니까? C ++의 아주 작은 부분 집합을 취해도 핵심 언어에는 그다지 영향을 미치지 않았을 것입니다. 왜이 아이디어가 90 년대까지 인기가 없었습니까?


1
하아! 나는 누군가가 결국 이것을 요구할 것이라고 확신했다.) 그러나 당신은 조금 더 많은 연구를해야 할 필요가있다. Simula를 잊지 마십시오). 또한 클래스 기반 객체 방향에 대해 구체적으로 이야기하고 있습니까?
yannis

6
흥미로운 질문입니다. 나는 최근 Simula 67이 이미 60 년대에 가상적인 방법을 가지고 있음을 발견했습니다. CS에서 가장 중요한 많은 개념들이 그 역사의 첫 20 년 (1950-1970) 동안 발견 된 것으로 보인다. 오늘날 우리가 보는 많은 새로운 것은 실제로 매우 오래된 개념의 혼합입니다.
Giorgio

3
@Giorgio : 나는 그 발견이 최신의 것부터 가장 큰 것에 푹 빠지는 것에서부터 유행을 통해보고 실제로 유용한 것을 구별 할 수있는 숙련 된 개발자가되는 것을 나타내는 통과 의례라고 생각합니다.
마이클 보그 워드

@ Michael Borgwardt : 나는 당신에게 전적으로 동의합니다 (그리고 나는 최신 기술에 쉽게 영향을받지 않습니다 :-)). 숙련 된 개발자가 자신의 문제를 얼마나 효과적으로 해결할 수 있는지 기술을 판단해야한다고 생각합니다. 초보자는 새로운 것들에 깊은 인상을받을 수 있으며 새로운 것이기 때문에 간단하게 생각할 수 있습니다. OOP에 관하여 : 나는이 개념들이 수년에 걸쳐 개발되었다는 것을 알았지 만, Simula를 살펴보면서 그들이 오늘날 우리가 일반적으로 사용하는 많은 개념을 이미 발명 한 것을보고 정말 놀랐습니다.
Giorgio

답변:


25

먼저 타임 라인을 설정해 봅시다.

  • 1963-Ivan Sutherland의 스케치 패드 는 객체 방향과 GUI 모두에서 선구적인 작업으로 간주됩니다.
  • 1967 Simula 가 나타나고, Smalltak이 객체 지향 언어로 간주되어야하는지 여부는 여전히 논쟁의 여지가 있습니다.
  • 1969-Dennis Ritchie가 C 개발을 시작합니다 .
  • 1972- Simula의 영향을 많이받는 언어 인 Smalltalk 가 나타납니다. 그것은 일반적 용어는 "객체 지향"의 발명가로 간주됩니다 앨런 케이 (Alan Kay)의 발명품이다 (앨런 케이 (Alan Kay)는 트론의 시조 문자 영감 ).
  • 1979-Bjarne Stroustrup은 C ++ 의 선구자 인 Classes로 C 작업을 시작합니다 .
  • 1983- Objective C 가 등장하며, Smalltalk의 풍향을 C에 추가하려는 노력입니다.
  • 1985- Object Pascal이 나타나고 Turbo Pascal 5.5 가 거의 즉시 대중화합니다 .
  • 1986- CLOS 에서 작업을 시작합니다. CLOS 에서 객체 지향을 Common Lisp로 가져 오려고합니다.
  • 1991- Visual Basic 이 릴리스되었습니다.
  • 1995- Java 가 출시되었습니다.
  • 1995- 델파이 가 출시되었습니다.

Ritchie의 주요 영향은 BCPLALGOL (둘 다 필수 언어)이며 Simula와 Smalltalk의 객체 방향 접근 방식이 아직 알려지지 않은 시점에 C가 만들어졌습니다. 1972 년경에 완공되었으며 7 년 후 C 클래스와 함께 데니스 리치 (Dennis Ritchie)와 브라이언 케르 니 한 (Brian Kernighan)이 처음 등장했습니다 .

당시 저는 C를 최고의 시스템 프로그래밍 언어로 생각했습니다. 당시에는 그렇게 분명하지 않았지만 (1979 년) 데니스 리치, 스티브 존슨, 샌디 프레이저, 그렉 체슨, 더그 맥 일로이, 브라이언 케르 니 한과 같은 전문가들이 제가 배우고 피드백을받을 수있는 복도를 내려 놓았습니다. 그들의 도움과 조언과 C가 없다면 C ++는 아직 태어 났을 것입니다.

반복되는 소문과는 반대로, 나는 C를 사용해야한다는 말을 듣지 못했습니다. C를 사용하지 말라고 말한 적은 없었습니다. 사실, 첫 번째 C ++ 매뉴얼은 Dennis가 제공 한 C 매뉴얼의 소스에서 나왔습니다. 많은 새로운 언어가 Bell 연구소에서 설계되었습니다. 최소한 "연구"에서는 언어의 편견을 강제하는 규칙이 없었다.

객관적인 C는 11 년 후에 나타 났으며, C와 ++는 모두 객체 지향을 C로 가져 오려는 주요한 성공한 노력이었습니다. 격차가 지금은 길어 보일지 모르지만 그 시간이 특히 길 었다고 생각하지는 않습니다. 월드 와이드 웹 이전 시대. 1993 년에 Mosaic (첫 번째 브라우저)가 나타 났을 때 업계의 전환점이되었습니다. 2 년 후 출시 된 Java와 Delphi는 최소한 인기 측면에서 이전 모델보다 큰 이점을 제공했습니다. 웹은 또한 썬이 WORA의 약속 으로 목표로 삼 았던 플랫폼 중 하나였으며 , 아마도 그 당시 가장 중요한 웹 사이트였으며 Java는 당시 새로 태어난 플랫폼 언어 로 많이 판매되었습니다 .

또 다른 핵심 요소는 1980 년대 후반과 1990 년대 초반에 GUI가 특히 홈 컴퓨팅에서 인기를 얻기 시작한시기였으며, 동시에 하드웨어는 점점 더 저렴 해졌다는 것입니다. 객체 지향은 일반적으로 GUI 및 그래픽 지향 응용 프로그램을 개발할 때 매우 편리한 패러다임이며 Turbo Pascal, Delphi, Visual Basic 및 Java는 (때로는 확장 성이 낮음) GUI 개발의 단순성을 높이 평가했습니다.

썬의 공격적인 자바 마케팅도 분명히 중요한 역할을했지만, 여전히 내 첫 인터랙션을 생생하게 기억하고 있기 때문에 나는 감명받지 못했습니다. Java에 대한 나의 첫 반응은 "hm, 자원 배고픈 해석 C ++에 지나지 않습니다. Turbo Pascal을 고수하겠습니다. 대단히 감사합니다"(저는 당시 17 세였습니다.). 나는 당시에 다른 사람이 Java에 어떻게 반응했는지 알지 못했지만, 그것은 단지 유행이었고 델파이 (및 Visual Basic, 한숨)로 빨리 옮겨 갔으며 몇 년 후에 대학에서 Java를 사용하기 시작했습니다. 필수 코스 였기 때문입니다.

Java와 객체 지향의 풍미가 매우 빠르게 대중화되는 것은 사실이지만, 1990 년대 중반 이전에는 패러다임이 그다지 대중적이지 않다고 생각하지는 않지만 웹의 도입으로 인해 대중의 정의가 바뀌 었습니다. 어쨌든 1990 년대 중반은 웹, GUI의 확산 및 저렴한 하드웨어가 주요 요인으로 소프트웨어 개발이 전반적으로 인기를 끌었던시기였습니다. Java는 적시에 적절한 장소에있었습니다.

더 읽을 거리 :

관련 질문 :


최근 발견 : ALGOL의 역사 68- 객체 지향과는 관련이 없지만 프로그래밍 히스토리 버프에 대한 흥미 진진한 읽기입니다.
yannis


2
@gerrit 알고 있습니다. 90 년대 초반 중반에 출시 된 다른 언어 (예 : Perl, PHP, Ruby, JavaScript)는 처음에는 인기가 없었거나 초기부터 객체 방향을 실제로 지원하지 않았습니다. 파이썬은 처음 몇 년 동안 실제로 영향력있는 언어가 아니 었습니다 ...
yannis
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.