ทำไมกระบวนทัศน์เชิงวัตถุใช้เวลานานมากในการก้าวไปสู่กระแสหลัก?


12

ฉันอ่านคำถามนี้และทำให้ฉันคิดถึงสิ่งที่เพิ่งเกิดขึ้นเมื่อไม่นานมานี้ ภาษาเชิงวัตถุ ฉันไม่แน่ใจว่าเมื่อแรกสร้าง แต่ทำไมมันใช้เวลานานก่อนที่พวกเขาจะกลายเป็นกระแสหลัก?

  • C กลายเป็นที่นิยมอย่างมากมาย แต่ไม่ได้กลายเป็น c ++ เชิงวัตถุเป็นเวลาหลายปี (ทศวรรษ) ในภายหลัง
  • ไม่มีภาษาหลักก่อนยุค 90 ที่เป็นเชิงวัตถุ
  • ดูเหมือนว่า Object oriented นั้นจะใช้งานได้กับ Java และ C ++ ในเวลาเดียวกัน

ตอนนี้คำถามของฉันทำไมใช้เวลานานขนาดนี้? เหตุใด C จึงไม่เข้าใจว่าเป็นภาษาเชิงวัตถุ การใช้ชุดย่อย C ++ ขนาดเล็กมากจะไม่ส่งผลกระทบต่อภาษาหลักอย่างมากดังนั้นทำไมความคิดนี้จึงไม่เป็นที่นิยมจนถึงยุค 90


1
ฮา! ฉันแน่ใจว่าใครบางคนจะถามสิ่งนี้ในที่สุด;) อย่างไรก็ตามคุณต้องทำการวิจัยเพิ่มเติมอีกเล็กน้อย Smalltalk อาจไม่ได้รับความนิยมอย่างมาก แต่ฉันคิดว่ามันนับว่าเป็นกระแสหลักอย่างน้อยตามคำจำกัดความของคำว่าในต้นทศวรรษ 70 อย่าลืม Simula) นอกจากนี้คุณกำลังพูดถึงการวางแนววัตถุตามคลาสโดยเฉพาะหรือไม่?
yannis

6
คำถามที่น่าสนใจ ฉันเพิ่งค้นพบว่า Simula 67 มีวิธีเสมือน (ใน '60 -ties แล้ว!) ดูเหมือนว่าแนวคิดที่สำคัญที่สุดใน CS ถูกค้นพบในช่วงสองทศวรรษแรกของประวัติศาสตร์ (1950-1970) หลายสิ่งใหม่ ๆที่เราเห็นในวันนี้เป็นจริงการผสมผสานของแนวความคิดเก่ามาก
Giorgio

3
@Giorgio: ฉันคิดว่าการค้นพบพิธีกรรมทางเดินที่แสดงให้เห็นว่าคุณเติบโตขึ้นมาจากการหลงรักสิ่งใหม่ล่าสุดและยิ่งใหญ่ที่สุดในการเป็นนักพัฒนาที่มีประสบการณ์ซึ่งสามารถมองผ่าน fads และแยกแยะสิ่งที่มีประโยชน์จริง ๆ
Michael Borgwardt

@Michael Borgwardt: ฉันเห็นด้วยกับคุณโดยสิ้นเชิง (และฉันไม่หลงรักเทคโนโลยีล่าสุด :-)) ฉันคิดว่าผู้พัฒนาที่มีประสบการณ์ควรตัดสินเทคโนโลยีด้วยประสิทธิภาพในการแก้ปัญหาของเขา / เธอ มือใหม่อาจจะรู้สึกประทับใจกับสิ่งใหม่ ๆ และคิดว่ามันดีกว่าเพราะมันเป็นของใหม่ เกี่ยวกับ OOP: ฉันรู้ว่าแนวคิดเหล่านี้พัฒนามานานหลายปี แต่เมื่อฉันดูที่ Simula และเห็นว่าพวกเขาได้คิดค้นแนวคิดมากมายที่เราใช้กันอยู่ทุกวันนี้ฉันประหลาดใจจริงๆ
Giorgio

คำตอบ:


25

อันดับแรกลองสร้างไทม์ไลน์:

  • 1963 - Sketchpadของ Ivan Sutherland ถือเป็นงานบุกเบิกทั้งในการวางแนววัตถุและ GUI
  • 1967 Simulaปรากฏขึ้นและไม่ว่าจะเป็น Smalltak หรือควรได้รับการพิจารณาเป็นภาษาเชิงวัตถุแรกยังคงเป็นเรื่องของการอภิปราย
  • 1969 - เดนนิสริตชี่เริ่มพัฒนาC
  • 1972 - Smalltalkภาษาที่ได้รับอิทธิพลอย่างมากจาก Simula ปรากฏขึ้น มันเป็นผลิตผลของอลันเคย์ซึ่งโดยทั่วไปถือว่าเป็นนักประดิษฐ์ของคำว่า "การวางแนววัตถุ" (อลันเคย์ยังเป็นแรงบันดาลใจให้กับตัวละครในบาร์นี้ในตรอน ;)
  • 1979 - Bjarne Stroustrup เริ่มทำงานใน C ที่มีการเรียนการสอนผู้นำกับC ++
  • 2526 - วัตถุประสงค์ Cปรากฏขึ้นและเป็นความพยายามอย่างยิ่งที่จะเพิ่มรสชาติของการจัดวางวัตถุของ Smalltalk
  • 1985 - Object Pascalปรากฏขึ้นและเกือบจะเป็นที่นิยมในทันทีโดยTurbo Pascal 5.5
  • 1986 - งานเริ่มต้นที่CLOSซึ่งเป็นความพยายามที่จะนำการจัดวางวัตถุไปที่ Common LISP
  • 1991 - เปิดตัวVisual Basic
  • 1995 - Javaเปิดตัว
  • 1995 - Delphiเปิดตัวแล้ว

อิทธิพลหลักของ Ritchie คือBCPLและALGOL (ทั้งสองเป็นภาษาบังคับ) และ C ถูกสร้างขึ้นในเวลาที่แนวทางของ Simula และ Smalltalk ในการวางแนววัตถุยังไม่เป็นที่รู้จักกันดี มันเสร็จประมาณปี 1972 และ C กับ Classes ปรากฏเพียง 7 ปีต่อมาทั้งDennis Ritchie และ Brian Kernighan มีส่วนร่วมในการก่อตั้ง :

ในเวลานั้นฉันคิดว่า C เป็นภาษาโปรแกรมที่ดีที่สุดในระบบ นั่นไม่ชัดเจนในขณะนั้น (1979) อย่างที่มันเกิดขึ้นในภายหลัง แต่ฉันมีผู้เชี่ยวชาญเช่น Dennis Ritchie, Steve Johnson, Sandy Fraser, Greg Chesson, Doug McIlroy และ Brian Kernighan ลงทางเดินที่ฉันสามารถเรียนรู้และรับข้อเสนอแนะ หากปราศจากความช่วยเหลือและคำแนะนำและหากไม่มี C, C ++ จะยังไม่สำเร็จ

ตรงกันข้ามกับข่าวลือที่ซ้ำ ๆ กันฉันไม่เคยบอกว่าฉันต้องใช้ C; และฉันก็ไม่เคยบอกว่าจะไม่ใช้ C. ในความเป็นจริงคู่มือ C ++ แรกขยายตัวจากแหล่ง troff ของคู่มือ C ที่เดนนิสให้ฉัน ภาษาใหม่หลายภาษาได้รับการออกแบบที่ห้องทดลองของเบลล์ ใน "การวิจัย" อย่างน้อยก็ไม่มีกฎบังคับใช้ความดื้อรั้นทางภาษา

วัตถุประสงค์ C ปรากฏขึ้น 11 ปีต่อมาและทั้งมันและ C ++ เป็นความพยายามครั้งสำคัญและประสบความสำเร็จในการนำการวางแนววัตถุไปที่ C ช่องว่างอาจดูยาวในขณะนี้ แต่ฉันไม่คิดว่ามันจะยาวเป็นพิเศษจำไว้ว่าเรากำลังพูด เกี่ยวกับยุคก่อนเวิลด์ไวด์เว็บ ปี 1993 เมื่อโมเสก (เบราว์เซอร์แรก) ปรากฏว่าเป็นจุดเปลี่ยนในอุตสาหกรรม Java และ Delphi เปิดตัวสองสามปีต่อมามีข้อได้เปรียบอย่างมากจากรุ่นก่อนอย่างน้อยก็ในแง่ของความนิยม เว็บยังเป็นหนึ่งในแพลตฟอร์มที่ดวงอาทิตย์ได้รับการกำหนดเป้าหมายของพวกเขากับสัญญาวรอาจจะเป็นหนึ่งในสิ่งที่สำคัญมากในเวลานั้นและ Java ถูกวางตลาดเป็นภาษาสำหรับแพลตฟอร์มแล้วเกิดใหม่

อีกหนึ่งปัจจัยสำคัญคือช่วงปลายปี 1980 และต้นปี 1990 เป็นช่วงเวลาที่ GUI เริ่มเป็นที่นิยมโดยเฉพาะอย่างยิ่งในการคำนวณที่บ้านในขณะที่ฮาร์ดแวร์ในเวลาเดียวกันก็เริ่มมีราคาถูกลง การวางแนววัตถุเป็นกระบวนทัศน์ที่สะดวกสบายอย่างยิ่งเมื่อพัฒนา GUI และแอปพลิเคชั่นที่เน้นกราฟิกโดยทั่วไปและ Turbo Pascal, Delphi, Visual Basic และ (อาจจะขยายน้อยกว่า) Java ได้รับการยกย่อง (ในเวลานั้น)

การตลาดเชิงรุกของ Sun ของ Java ก็มีบทบาทอย่างชัดเจนเช่นกัน แต่เนื่องจากฉันยังจำได้อย่างชัดเจนถึงการมีปฏิสัมพันธ์ครั้งแรกกับฉันฉันจึงไม่ประทับใจอย่างแน่นอน ปฏิกิริยาแรกของฉันกับ Java คือ "hm ไม่มีอะไรมากไปกว่าความหิวโหยแปล C ++ ฉันจะติดกับ Turbo Pascal ขอบคุณมาก" (เฮ้ฉันเพิ่งอายุ 17 ปีเท่านั้น) ฉันไม่รู้ว่าคนอื่นมีปฏิกิริยาอย่างไรต่อ Java ในเวลานั้น แต่สำหรับฉันมันเป็นแค่แฟชั่นและฉันก็ย้ายไปที่ Delphi (และ Visual Basic, ถอนหายใจ) อย่างรวดเร็วและเริ่มใช้ Java เพียงไม่กี่ปีต่อมาในวิทยาลัย และเพียงเพราะมันเป็นวิชาบังคับ

ในขณะที่มันเป็นความจริงที่ Java และรสชาติของการวางแนววัตถุได้รับความนิยมอย่างรวดเร็วฉันไม่คิดว่ากระบวนทัศน์นั้นไม่ได้รับความนิยมพอสมควรในช่วงกลางปี ​​1990 การแนะนำเว็บเปลี่ยนนิยามความนิยมของเรา ไม่ว่าในกรณีใดช่วงกลางปี ​​1990 เป็นช่วงเวลาที่การพัฒนาซอฟต์แวร์โดยทั่วไปมีความนิยมอย่างล้นหลามกับเว็บการขยายตัวของ GUIs และฮาร์ดแวร์ราคาถูกเป็นปัจจัยสำคัญ Java เป็นเพียงสถานที่ที่เหมาะสมในเวลาที่เหมาะสม

อ่านเพิ่มเติม:

คำถามที่เกี่ยวข้อง:


การค้นพบเมื่อเร็ว ๆ นี้: ประวัติของอัลกอล 68 - แม้ว่ามันจะไม่เกี่ยวกับการวางแนวของวัตถุ แต่เป็นการอ่านที่น่าสนใจสำหรับผู้ชื่นชอบการเขียนโปรแกรมประวัติศาสตร์
yannis

ในปี 1994 Python 1.0 เปิดตัวแล้ว
gerrit

2
@gerrit ฉันรู้และมีภาษาอื่นอีกหลายภาษาที่เปิดตัวในช่วงต้นและกลาง 90s ที่ฉันตั้งใจข้าม (ตัวอย่างเช่น Perl, PHP, Ruby, JavaScript) เพราะพวกเขาไม่ได้รับความนิยมในตอนแรกหรือเพราะพวกเขา ไม่รองรับการวางแนววัตถุตั้งแต่ต้น งูหลามไม่ได้จริงๆเป็นภาษาที่มีอิทธิพลในช่วงปีแรกของ ...
Yannis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.