Tại sao các mô hình hướng đối tượng mất quá nhiều thời gian để đi vào dòng chính?


12

Tôi đọc câu hỏi này và nó khiến tôi suy nghĩ về một điều khá gần đây. Ngôn ngữ hướng đối tượng. Tôi không chắc chắn khi cái đầu tiên được tạo ra, nhưng tại sao phải mất rất lâu trước khi chúng trở thành chủ đạo?

  • C trở nên phổ biến rộng rãi, nhưng không trở thành C ++ hướng đối tượng trong nhiều năm (nhiều thập kỷ?) Sau đó
  • Không có ngôn ngữ chính trước thập niên 90 là hướng đối tượng
  • Hướng đối tượng dường như thực sự cất cánh cùng với Java và C ++ cùng một lúc

Bây giờ, câu hỏi của tôi, tại sao điều này mất quá nhiều thời gian? Tại sao C ban đầu được hình thành như một ngôn ngữ hướng đối tượng? Lấy một tập hợp con rất nhỏ của C ++ sẽ không ảnh hưởng đến ngôn ngữ cốt lõi rất nhiều, vậy tại sao ý tưởng này không phổ biến cho đến những năm 90?


1
Hà! Tôi chắc chắn sẽ có người hỏi điều này cuối cùng;) Tuy nhiên, bạn cần nghiên cứu thêm một chút, Smalltalk có thể không phổ biến lắm, nhưng tôi nghĩ nó được coi là chính thống, ít nhất là theo định nghĩa của thuật ngữ vào đầu những năm 70 (và hãy đừng quên Simula). Ngoài ra, bạn đang nói cụ thể về định hướng đối tượng dựa trên lớp?
yannis

6
Câu hỏi thú vị. Gần đây tôi đã phát hiện ra rằng Simula 67 đã có các phương thức ảo (trong '60 -ty rồi!). Dường như nhiều khái niệm quan trọng nhất trong CS đã được phát hiện trong hai, ba thập kỷ đầu tiên của lịch sử (1950-1970). Nhiều điều mới mà chúng ta thấy ngày nay thực sự là một sự pha trộn của các khái niệm rất cũ.
Giorgio

3
@Giorgio: Tôi coi khám phá đó là một nghi thức vượt qua đánh dấu sự trưởng thành của bạn từ việc say mê những người mới nhất và vĩ đại nhất để trở thành một nhà phát triển có kinh nghiệm có thể nhìn xuyên qua mốt nhất thời và phân biệt những gì thực sự hữu ích.
Michael Borgwardt

@Michael Borgwardt: Tôi hoàn toàn đồng ý với bạn (và tôi không dễ bị mê đắm bởi các công nghệ mới nhất :-)). Tôi nghĩ rằng một nhà phát triển có kinh nghiệm nên đánh giá công nghệ bằng cách nó có thể giải quyết vấn đề của anh ấy / cô ấy hiệu quả như thế nào. Một người mới có thể bị ấn tượng bởi những thứ mới và xem xét nó tốt hơn đơn giản vì nó là mới (cường điệu). Về OOP: Tôi biết rằng những khái niệm này đã được phát triển trong nhiều năm, nhưng khi tôi xem Simula và thấy rằng họ đã phát minh ra rất nhiều khái niệm mà chúng ta thường sử dụng ngày nay, tôi thực sự ngạc nhiên.
Giorgio

Câu trả lời:


25

Trước tiên, hãy thử thiết lập một dòng thời gian:

  • 1963 - Bảng vẽ phác thảo của Ivan Sutherland được coi là một tác phẩm tiên phong trong cả định hướng đối tượng và GUI.
  • 1967 Simula xuất hiện, và liệu nó hay Smalltak nên được coi là ngôn ngữ hướng đối tượng đầu tiên vẫn còn là vấn đề tranh luận.
  • 1969 - Dennis Ritchie bắt đầu phát triển C .
  • Năm 1972 - Smalltalk , một ngôn ngữ chịu ảnh hưởng nặng nề của Simula, xuất hiện. Đó là đứa con tinh thần của Alan Kay, người thường được coi là người phát minh ra thuật ngữ "hướng đối tượng" (Alan Kay cũng lấy cảm hứng từ nhân vật cùng tên trong Tron ;).
  • 1979 - Bjarne Stroustrup bắt đầu làm việc trên C với Classes, tiền thân của C ++ .
  • 1983 - Mục tiêu C xuất hiện và về cơ bản là một nỗ lực để thêm hương vị của định hướng đối tượng của Smalltalk vào C.
  • 1985 - Object Pascal xuất hiện và gần như ngay lập tức được phổ biến bởi Turbo Pascal 5.5.
  • 1986 - Công việc bắt đầu trên CLOS , một nỗ lực để đưa định hướng đối tượng đến Common Lisp.
  • 1991 - Visual Basic được phát hành.
  • 1995 - Java được phát hành.
  • 1995 - Delphi được phát hành.

Ảnh hưởng chính của Ritchie là BCPLALGOL (cả hai đều là ngôn ngữ bắt buộc) và C được tạo ra vào thời điểm cách tiếp cận đối tượng của Simula và Smalltalk chưa được biết đến. Nó được hoàn thành vào khoảng năm 1972 và C với Classes xuất hiện chỉ 7 năm sau đó, với cả Dennis Ritchie và Brian Kernighan đều tham gia vào sự khởi đầu của nó :

Vào thời điểm đó, tôi coi C là ngôn ngữ lập trình hệ thống tốt nhất hiện có. Điều đó không rõ ràng sau đó (1979) như sau này, nhưng tôi đã có các chuyên gia như Dennis Ritchie, Steve Johnson, Sandy Fraser, Greg Chesson, Doug McIlroy và Brian Kernighan từ hành lang mà tôi có thể tìm hiểu và nhận phản hồi. Nếu không có sự giúp đỡ và lời khuyên của họ, và nếu không có C, C ++ sẽ chết non.

Trái với những tin đồn lặp đi lặp lại, tôi không bao giờ được nói rằng tôi phải sử dụng C; Tôi cũng không bao giờ được bảo là không sử dụng C. Trên thực tế, hướng dẫn sử dụng C ++ đầu tiên đã phát triển từ nguồn troff của hướng dẫn sử dụng C mà Dennis đưa cho tôi. Nhiều ngôn ngữ mới được thiết kế tại phòng thí nghiệm Bell; trong "Nghiên cứu" ít nhất, không có quy tắc nào bắt buộc sự cố chấp ngôn ngữ.

Mục tiêu C xuất hiện 11 năm sau đó, cả nó và C ++ đều là những nỗ lực lớn và thành công để đưa định hướng đối tượng đến C. Khoảng cách có vẻ lâu nay, nhưng tôi không nghĩ rằng nó đặc biệt dài vào thời điểm đó, hãy nhớ rằng chúng ta đang nói chuyện về một kỷ nguyên trước World Wide Web. Năm 1993, khi Mosaic (trình duyệt đầu tiên) xuất hiện là một bước ngoặt trong ngành. Java và Delphi, được phát hành một vài năm sau đó, có lợi thế rất lớn so với người tiền nhiệm của họ, ít nhất là về mức độ phổ biến. Web cũng là một trong những nền tảng Sun đã được nhắm mục tiêu với họ lời hứa Wora , có lẽ là một quan trọng hơn vào thời điểm đó, và Java được rất nhiều thị trường như các ngôn ngữ cho nền tảng sau đó mới được sinh ra.

Một yếu tố quan trọng khác là vào cuối những năm 1980 và đầu những năm 1990 là thời điểm GUI bắt đầu trở nên phổ biến, đặc biệt là điện toán gia đình, đồng thời phần cứng ngày càng rẻ hơn. Định hướng đối tượng là một mô hình cực kỳ thuận tiện khi phát triển GUI và các ứng dụng hướng đồ họa nói chung và Turbo Pascal, Delphi, Visual Basic và (có lẽ là mở rộng ít hơn) Java đã được ca ngợi (tại thời điểm đó) vì sự đơn giản mà chúng mang lại cho phát triển GUI.

Tiếp thị Java mạnh mẽ của Sun rõ ràng cũng đóng một vai trò, tuy nhiên vì tôi vẫn nhớ rất rõ tương tác đầu tiên của mình với nó, tôi chắc chắn không ấn tượng. Phản ứng đầu tiên của tôi đối với Java là "hm, không gì khác hơn là một tài nguyên đói đã giải thích C ++, tôi sẽ gắn bó với Turbo Pascal, cảm ơn rất nhiều" (hey, lúc đó tôi chỉ mới 17 tuổi;). Tôi không biết bất kỳ ai khác đã phản ứng với Java vào thời điểm đó, nhưng đối với tôi đó chỉ là một mốt nhất thời và tôi nhanh chóng chuyển sang Delphi (và Visual Basic, thở dài), và chỉ bắt đầu sử dụng Java vài năm sau đó, ở trường đại học và chỉ bởi vì đó là một khóa học bắt buộc.

Mặc dù đúng là Java và hương vị của hướng đối tượng, trở nên phổ biến cực kỳ nhanh chóng, tôi thực sự không nghĩ rằng mô hình này không phổ biến trước giữa những năm 1990, việc giới thiệu web đã thay đổi định nghĩa về mức độ phổ biến của chúng tôi. Trong mọi trường hợp, giữa những năm 1990 là thời điểm mà sự phát triển phần mềm nói chung có sự phổ biến, với web, sự phổ biến của GUI và phần cứng rẻ hơn là những yếu tố chính. Java chỉ đơn giản là ở đúng nơi vào đúng thời điểm.

Đọc thêm:

Câu hỏi liên quan:


Một phát hiện gần đây: LỊCH SỬ ALGOL 68 - Mặc dù nó không liên quan nhiều đến định hướng đối tượng, nhưng đây là một bài đọc hấp dẫn cho những người yêu thích lịch sử lập trình.
yannis


2
@gerrit Tôi biết, và có một số ngôn ngữ khác được phát hành vào đầu và giữa thập niên 90 mà tôi đã cố tình bỏ qua (ví dụ như Perl, PHP, Ruby, JavaScript), vì lúc đầu chúng không thực sự phổ biến, hoặc vì chúng không thực sự hỗ trợ định hướng đối tượng từ sớm. Python không thực sự là một ngôn ngữ có ảnh hưởng trong những năm đầu tiên ...
yannis
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.