Smalltalk

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP





body.skin-minerva .mw-parser-output table.infobox captiontext-align:center

















Smalltalk
编程范型
面向对象
設計者
艾伦·凯、Dan Ingalls(英语:Dan Ingalls)、Adele Goldberg(英语:Adele Goldberg (computer scientist))
實作者
艾伦·凯、Dan Ingalls(英语:Dan Ingalls)、Adele Goldberg(英语:Adele Goldberg (computer scientist))、Ted Kaehler、Diana Merry(英语:Diana Merry)、Scott Wallace、彼得·多伊奇、Xerox PARC
发行时间
1972年,​47年前​(1972)
(開發始於1969年)


穩定版本
Smalltalk-80 version 2
(1980年,​39年前​(1980)
)


型態系統
強、動態
作業系統
跨平台
網站
smalltalk.org
主要實作產品

Amber, Dolphin Smalltalk(英语:Dolphin Smalltalk), GemStone/S(英语:Gemstone (database)), GNU Smalltalk(英语:GNU Smalltalk), Pharo, Smalltalk/X, Squeak, VA Smalltalk(英语:IBM VisualAge), VisualWorks(英语:VisualWorks)
啟發語言

Lisp,[1]Simula,[1]Euler(英语:Euler (programming language)),[1]IMP(英语:IMP (programming language)),[1]Planner(英语:Planner (programming language)),[1]Logo,Sketchpad,[1]ARPAnet,[1]Burroughs B5000(英语:Burroughs B5000),[1]细胞[1]
影響語言

AppleScript, Common Lisp Object System(英语:Common Lisp Object System), Dart, Dylan(英语:Dylan (programming language)), Erlang, Etoys(英语:Etoys (programming language)), Falcon, Go, Groovy, Io, Ioke(英语:Ioke (programming language)), Java, Lasso(英语:Lasso (programming language)), Lisaac(英语:Lisaac), Logtalk(英语:Logtalk), Newspeak, NewtonScript, Object REXX(英语:Object REXX), Objective-C, PHP 5, Perl 6, Python, Ruby, Scala, Scratch, Self


  • 維基教科書中有關Smalltalk的文本

Smalltalk是一种面向对象的、动态类型的编程语言。Smalltalk由艾伦·凯,Dan Ingalls,Ted Kaehler,Adele Goldberg等于70年代初在Xerox PARC开发。


Smalltalk对其它众多的程序设计语言的产生起到了极大的推动作用,主要有:C++,C#,Objective-C,Actor,Java和Ruby等。90年代的许多软件开发思想得利于Smalltalk,例如设计模式、敏捷编程和代码重构等。




目录





  • 1 什么是Smalltalk


  • 2 Smalltalk中的对象


  • 3 Smalltalk的历史

    • 3.1 Smalltalk-71與Smalltalk-72


    • 3.2 Smalltalk-76


    • 3.3 Smalltalk-80



  • 4 程序实例

    • 4.1 数学计算



  • 5 参考资料


  • 6 外部链接




什么是Smalltalk


Smalltalk和许多程序设计语言不同,它不仅仅是一门语言。下面从几个不同的角度来解释Smalltalk。


  • 一种面向对象的程序设计语言:它是一种面向对象的语言,包含语言的语法和语义。一些编译器可以透过Smalltalk源程序产生可执行文件。这些编译器通常产生一种能在虚拟机上运行的二进制代码。Smalltalk语言本身非常精炼。
  • 一种程序设计环境:这里指的是一种提供许多对象的系统,而不是某种特殊的开发环境。和许多语言不同(包括C++),Smalltalk附带有一个巨大的、相当标准的类库。这些类使得开发Smalltalk程序的效率非常高。在其它语言(例如Ada,C和Pascal)中通常被作为语言的一部分的功能(例如条件判断,循环等),在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的结果。



参考资料




  1. ^ 1.01.11.21.31.41.51.61.71.8 Kay, Alan; Stefan Ram. E-Mail of 2003-07-23. Dr. Alan Kay on the Meaning of “Object-Oriented Programming”. 2003-07-23 [2009-01-03]. 



外部链接


  • http://www.smalltalk.org


  • http://www.squeak.org 一个免费的多系统下运行的Smalltalk环境。


  • http://www.pharo.org 一个开源的Smalltalk环境


  • http://www.cincomsmalltalk.com 可以免费使用的商业软件,功能非常的强大,文档丰富,社区非常的活跃


Popular posts from this blog

佛陀 (漫畫)

Đế Bá

文学批评