Smalltalk語言

Smalltalk,被公認為歷史上第二個面向對象程式設計語言,和第一個真正的集成開發環境(IDE)。Smalltalk由艾倫·凱,Dan Ingalls,Ted Kaehler,Adele Goldberg等於70年代初在Xerox PARC開發。

Smalltalk對其它眾多的程式設計語言的產生起到了極大的推動作用,主要有:C++C#Objective-CActorJavaRuby等。90年代的許多軟體開發思想得利於Smalltalk,例如設計模式、敏捷編程和代碼重構等。

基本介紹

  • 開發商施樂帕克研究中心
  • 軟體平台:多平台
  • 名稱:Smalltalk
  • 屬性:程式設計語言
  • 領域:計算機、信息技術、軟體、編程
  • 開發者:AlanKay、DanIngalls等
  • 開發時間:20世紀70年代到80年代
什麼是Smalltalk,Smalltalk中的對象,Smalltalk的歷史,Smalltalk-71與Smalltalk-72,Smalltalk-76,Smalltalk-80,程式實例,數學計算,

什麼是Smalltalk

Smalltalk和許多程式設計語言不同,它不僅僅是一門語言。下面從幾個不同的角度來解釋Smalltalk。
  • 一種面向對象的程式設計語言:它是一種面向對象的語言,包含語言的語法和語義。一些編譯器可以透過Smalltalk源程式產生執行檔。這些編譯器通常產生一種能在虛擬機上運行的二進制代碼。Smalltalk語言本身非常精煉。
  • 一種程式設計環境:這裡指的是一種提供許多對象的系統,而不是某種特殊的開發環境。和許多語言不同(包括C++),Smalltalk附帶有一個巨大的、相當標準的類庫。這些使得開發Smalltalk程式的效率非常高。在其它語言(例如AdaCPascal)中通常被作為語言的一部分的功能(例如條件判斷,循環等),在Smalltalk由特定的類提供。
  • 一個套用開發環境(ADE):由於Smalltalk的歷史原因,它具有一個非常優秀的高度集成、開放的套用開發環境。由於開發環境中的瀏覽器、監視器以及調試器都由同樣的源程式派生出來的,不同的版本之間也具有相當好的兼容性。此外,這些工具的源程式都可以在ADE直接訪問。

Smalltalk中的對象

在Smalltalk中所有的東西都是對象,或者應該被當作對象處理。例如下面的表達式:
2 + 3.
應當被理解為:向對象2傳送訊息+,參數為對象3。
純面向對象使得Smalltalk在語言結構方面有許多與其他語言不同的特點,例如在Smalltalk語言中沒有條件語句,取而代之的是一些傳送給對象true或者false的訊息,因此它們不屬於語言部分,而屬於Smalltalk的類庫;也沒有循環重複語句(C語言中的for, while),Smalltalk用向數字對象或塊對象傳送訊息來實現重複執行。

Smalltalk的歷史

最早的Smalltalk原型由艾倫·凱於70年代初提出。類(來自Simula-67)、海龜繪圖(來自MIT的LOGO)以及圖形界面等概念的有機組合,構成了Smalltalk的最初的藍圖。

Smalltalk-71與Smalltalk-72

在1971年到1975年之間,艾倫·凱在Xerox PARC的小組設計並實現了第一個真正的Smalltalk語言系統,編譯器由Dan Ingalls負責主要實現。這個系統具有以下幾個技術創新:
  • 語言完全基於Simula的類和訊息的概念。
  • 語言沒有固定的語法,語法分析由類本身完成。
開發環境的革新相當迅速。雖然當時的點陣圖顯示器十分昂貴,但是艾倫·凱卻說服了PARC讓他使用這些點陣圖顯示器,這使得艾倫·凱和他的小組能夠實現不同大小和字型的文字,使用多視窗環境,以及一些對圖像處理的高端支持。

Smalltalk-76

1975-76年間,艾倫·凱小組認識到應當對執行效率和規模進行最佳化。於是他們在許多重要方面重新設計了Smalltalk系統,在語言上:
  • 引入了繼承和子類的概念。
  • 確定了語言的語法,這使得編譯器能夠產生高效、可執行、精煉的二進制代碼。
  • 拉里·泰斯勒(Larry Tesler)設計了瀏覽器,這極大地提高了Smalltalk程式設計師的編程效率。
前述的所有Smalltalk系統都是在特殊的硬體上實現的,直到1977-78年,Bruce Horn和Ted Kaehler把Smalltalk-76移植到由Intel 8086處理器和自定顯示器所組成的硬體環境(被稱為NoteTaker)上。雖然這種硬體環境只生產了10台,但是它證明了在通常的處理器上實現Smalltalk的可能性。

Smalltalk-80

在1979-80年,部分受NoteTaker項目的影響,Smalltalk小組的注意力轉移到Smalltalk的銷售可行性上。小組設計並實現了新一代的Smalltalk系統,這次修改的目標著重於在標準硬體上的移植性等方面,包括:
  • 採取ASCII碼集,摒棄了原先在Smalltalk-72和-76中使用的特殊字元。
  • 取消了原始(primitive)方法直接訪問記憶體的能力。取而代之的是引入一系列的原始方法提供相應的功能。
  • 引入了元類的概念。
  • 引入MVC(Model-View-Controller)系統以方便互動式套用軟體的開發。

程式實例

數學計算

(15 * 19) + (37 squared)
可以理解為:向15傳送訊息'*',參數為19;向37傳送訊息squared;最後向15*19的結果傳送訊息'+',參數為37 squared的結果。

相關詞條

熱門詞條

聯絡我們