為什么Smalltalk不流行


最近讀到一本書,說Python程序員比Java程序員聰明。同理,懂Smalltalk的程序員也比Java程序員聰明。所以,我在StackOverflow上找到這個關閉很久的問題,整理了一下,跟大家分享。 

在介紹為什么Smalltalk不流行之前,你一定會想它有什么特別之處嗎,以至於很多技術刊物和出版物在談論面向對象時都拿它作為參照。我只會Java,它真的有那么重要嗎,或者說我需要學習它。因此我先就這個問題作了整理。 

Smalltalk可以說是OO語言的先驅之一(當時與之對應的是Simula和Eiffel),它是相當純粹的OO語言。 

  • 一切皆對象,對象之間的通訊只能通過發送消息實現
  • 無原生對象(例如int或boolean等)
  • 無結構控制(例如for或switch等),聽起來不可思議但這是真的
  • 無靜態對象(static)

它甚至實現了一些現在看來司空見慣的設計: 

  • 虛擬機(JIT編譯)
  • 檢查式調試
  • “Hotswapping”執行代碼
  • 閉包
  • 現代IDE
  • Duck typing
  • 基於Model-View Controller (MVC) 的UI
  • 測試驅動開發(TDD)和敏捷方法


另外Smalltalk還有很多特性讓它顯得另類: 

  • 基於Image的系統而不是基於文件
  • 面向對象的數據庫


毫不誇張的說,Java和apache-common的集合類(collections)API都極大地受到Smalltalk的影響。 

我不會建議你去學習Smalltalk,但熟悉這些基本概念(目前很多語言都提供了)對你相當有幫助。 該語言的創作者Alan Kay最初的目的是兒童教育。現在人們不再大規模使用它,但這不並不是說它完全退出了。比如,JPMorgan有一個大型的管理衍生品風險的系統就是用Smalltalk語言編寫的。 

言歸正傳,回到剛才的主題,為啥Smalltalk沒有流行起來。 某人說,最近幾個月來我一直在看Smalltalk(VisualWorks),我越學越對它刮目相看。不過我總覺得我是不是忽略了一些東西,它現在為啥不再流行還是它從未流行過。那些拋棄Smalltalk轉而學習Java或C++的人,誰能告訴我這是為什么。 

大家普遍認可的一個回答說,有很多原因(大部分是歷史造成的)導致Smalltalk沒有火起來。 

  • 與那個時代的硬件相比,它太超前了。
  • 1995年,Java橫空出世,Smalltalk主要的廠商(ParcPalace)正忙着呢與另一個廠商(Digitalk)合並,最終以失敗告終。
  • 2000年,Cincom收購VisualWork時,人們已經不再對Smalltalk感冒了。
  • 此后,Smalltalk不再扮演重要角色,但它又恢復了一些市場。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM