Nesneye yönelik paradigmalar neden ana akım haline gelmek için bu kadar uzun sürdü?


12

Bu soruyu okudum ve oldukça yeni bir şey hakkında düşünmemi sağladı. Nesneye yönelik diller. İlkinin ne zaman oluşturulduğundan emin değilim, ancak ana akım haline gelmeleri neden bu kadar uzun sürdü?

  • C çok popüler oldu, ancak yıllarca (on yıllardır?) Nesne yönelimli C ++ olmadı?
  • 90'lardan önce hiçbir ana dil nesneye yönelik değildi
  • Nesne yönelimli bir şekilde Java ve C ++ ile aynı anda hareket ediyor gibiydi

Şimdi sorum, bu neden bu kadar uzun sürdü? C neden başlangıçta nesne yönelimli bir dil olarak tasarlanmamıştı? C ++ 'ın çok küçük bir alt kümesini almak çekirdek dili çok fazla etkilemezdi, bu yüzden neden bu fikir 90'lara kadar popüler değildi?


1
Ha! Birinin bunu sonunda soracağından emindim;) Ancak biraz daha fazla araştırma yapmanız gerekiyor, Smalltalk son derece popüler olmayabilir, ancak bence en azından 70'lerin başlarındaki terimin tanımı ile ana akım olarak sayılıyor (ve Simula'yı unutmayın). Ayrıca, özellikle sınıf tabanlı nesne yönelimi hakkında mı konuşuyorsunuz?
yannis

6
İlginç soru. Kısa bir süre önce Simula 67'nin sanal yöntemlere sahip olduğunu keşfettim (zaten '60'lı yıllarda!). CS'deki en önemli kavramların birçoğunun, tarihinin ilk iki, otuz yıllık döneminde (1950-1970) keşfedildiği görülmektedir. Bugün gördüğümüz birçok yeni şey aslında çok eski kavramların bir karışımı.
Giorgio

3
@Giorgio: Bu keşfin, büyümenizi en son ve en büyüğüyle delicesine düşmekten fadsları görebilen ve gerçekten neyin yararlı olduğunu ayırt edebilen deneyimli bir geliştirici olmaya işaret eden bir geçit töreni olduğunu düşünüyorum.
Michael Borgwardt

@Michael Borgwardt: Sana tamamen katılıyorum (ve en son teknolojilerden kolayca etkilenmiyorum :-)). Deneyimli bir geliştiricinin teknolojiyi sorunlarını ne kadar etkili bir şekilde çözebileceğine karar vermesi gerektiğini düşünüyorum. Bir acemi yeni şeylerden etkilenebilir ve sadece yeni olduğu için daha iyi düşünebilir (yutturmaca). OOP ile ilgili olarak: Bu kavramların uzun yıllar boyunca geliştirildiğini biliyordum, ancak Simula'ya baktığımda ve bugün yaygın olarak kullandığımız birçok kavramı zaten icat ettiklerini görünce gerçekten şaşırdım.
Giorgio

Yanıtlar:


25

İlk olarak, bir zaman çizelgesi oluşturmaya çalışalım:

  • 1963 - Ivan Sutherland'ın Eskiz defteri hem nesne yönelimi hem de GUI'lerde öncü bir çalışma olarak kabul ediliyor.
  • 1967 Simula ortaya çıkıyor ve Smalltak'ın mı yoksa Smalltak'ın mı düşünülmesi gerektiği ilk nesneye yönelik dil hala tartışma konusudur.
  • 1969 - Dennis Ritchie C'yi geliştirmeye başladı .
  • 1972 - Simula'dan çok etkilenen bir dil olan Smalltalk ortaya çıkıyor. Genellikle "nesne yönelimi" teriminin mucidi olarak kabul edilen Alan Kay'ın beyni çocuğudur (Alan Kay ayrıca Tron'daki isimsiz karaktere de ilham verdi .).
  • 1979 - Bjarne Stroustrup, C ++ ' ın öncüsü olan Class'larla C üzerinde çalışmaya başlar .
  • 1983 - Amaç C belirir ve esasen Smalltalk'ın nesne yönelimi lezzetini C'ye eklemek için bir çabadır.
  • 1985 - Object Pascal ortaya çıkıyor ve Turbo Pascal 5.5 tarafından neredeyse popüler hale geliyor .
  • 1986 - Ortak Lisp'e nesne yönelimini getirme çabası olan CLOS üzerinde çalışma başladı .
  • 1991 - Visual Basic çıktı.
  • 1995 - Java yayınlandı.
  • 1995 - Delphi piyasaya sürüldü.

Ritchie'nin ana etkileri BCPL ve ALGOL'du (her ikisi de zorunlu dillerdir) ve C, Simula'nın ve Smalltalk'ın nesne yönelimi yaklaşımının henüz bilinmediği bir zamanda yaratıldı. 1972 civarında tamamlandı ve C sınıfı sadece 7 yıl sonra ortaya çıktı, hem Dennis Ritchie hem de Brian Kernighan başlangıcında yer aldı :

O zaman, C'yi mevcut en iyi sistem programlama dili olarak gördüm. Daha sonra olduğu kadar açık değildi (1979), ancak öğrenip geri bildirim alabileceğim koridorda Dennis Ritchie, Steve Johnson, Sandy Fraser, Greg Chesson, Doug McIlroy ve Brian Kernighan gibi uzmanlarım vardı. Onların yardımı ve tavsiyesi olmadan ve C olmadan, C ++ ölü doğmuş olurdu.

Tekrarlanan söylentilerin aksine, asla C kullanmam gerektiği söylenmedi; C'yi kullanmamam da söylenmedi. Aslında, ilk C ++ el kitabı Dennis'in bana verdiği C el kitabının troff kaynağından büyüdü. Bell laboratuvarlarında birçok yeni dil tasarlandı; en azından "Araştırma" da dil bağnazlığını zorunlu kılan hiçbir kural yoktu.

Hedef C 11 yıl sonra ortaya çıktı ve hem C hem de C ++, nesne yönelimini C'ye getirmek için büyük ve başarılı çabalardı. Boşluk şimdi uzun görünebilir, ancak o zaman çok uzun olduğunu düşünmüyorum, konuştuğumuzu hatırlayın World Wide Web'den önceki bir dönem hakkında. 1993, Mosaic (ilk tarayıcı) ortaya çıktığında sektörde bir dönüm noktasıydı. Birkaç yıl sonra yayınlanan Java ve Delphi, öncekilere göre en azından popülerlik açısından büyük bir avantaja sahipti. Web de Güneş kendi ile hedef oldu platformlarından biri olan Wora vaadi , zaman belki de daha önemli biri ve Java ağır olarak pazarlanan sonra yeni doğan platformu için dilin.

Bir diğer önemli faktör, 1980'lerin sonu ve 1990'ların başında GUI'lerin, özellikle ev bilgisayarlarında popüler olmaya başladığı, aynı zamanda donanımın daha ucuz ve ucuzlaştığı bir zamandı. Genel olarak GUI'ler ve grafik odaklı uygulamalar geliştirirken nesne yönelimi son derece uygun bir paradigmadır ve Turbo Pascal, Delphi, Visual Basic ve (belki de daha az bir ölçüde) Java, GUI geliştirmesine getirdikleri basitlik için övündü.

Sun'ın Java'nın agresif pazarlaması da bir rol oynadı, ancak onunla ilk etkileşimi hala canlı bir şekilde hatırladığımdan kesinlikle etkilenmedim. Java'ya ilk tepkim "hm, C ++ 'a aç bir yorum açmadan başka bir şey değildi, Turbo Pascal'a sadık kalacağım, çok teşekkür ederim" (hey, o zaman sadece 17 yaşındaydım;). O zamanlar başka birinin Java'ya nasıl tepki verdiğini bilmiyorum, ama benim için sadece bir fad ve hızlı bir şekilde Delphi'ye (ve Visual Basic, iç çekmeye) geçtim ve sadece birkaç yıl sonra üniversitede Java kullanmaya başladım ve sadece zorunlu bir ders olduğu için.

Java'nın ve nesne yönelimi lezzetinin son derece hızlı bir şekilde popüler olduğu doğru olsa da, paradigmanın 1990'ların ortalarından önce oldukça popüler olmadığını düşünüyorum, web'in tanıtımı popülerlik tanımımızı değiştirdi. Her halükarda, 1990'ların ortaları, yazılım geliştirmenin, web, GUI'lerin çoğalması ve daha ucuz donanımın temel faktörler olduğu popülerlik artışına sahip olduğu bir zamandı. Java doğru zamanda doğru yerdeydi.

Daha fazla okuma:

İlgili sorular:


Yakın tarihli bir bulgu : ALGOL 68 TARİHİ - Nesne yönelimi ile ilgisi olmasa da, tarih meraklılarını programlamak için büyüleyici bir okuma.
yannis


2
@gerrit biliyorum ve 90'lı yılların başlarında ve ortasında yayınladığım bazı diller var (örneğin Perl, PHP, Ruby, JavaScript), ya ilk başta gerçekten popüler olmadıkları için ya da nesnenin yönelimini en başından beri desteklemedi. Python ilk yıllarında gerçekten etkili bir dil değildi ...
yannis
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.