引用地址:http://www.smalltalk.org.cn/language/whatissmalltalk.html

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原型由Alan Kay于70年代初提出。类(来自Simula-67)、海龟绘图(来自MIT的LOGO )以及图形界面 等概念的有机组合,构成了Smalltalk的最初的蓝图。

在1971年到1975年之间,Kay在Xerox PARC的小组设计并实现了第一个真正的Smalltalk语言系统。这个系统具有以下几个技术创新:

  • 语言完全基于Simula 的类和消息的概念。
  • 语言没有固定的语法,语法分析由类本身完成。

开发环境的革新相当迅速。虽然当时的位图显示器十分昂贵,但是Kay却说服了PARC让他使用这些位图显示器,这使得Kay和他的小组能够实现不同大小和字体的文字,使用多窗口环境,以及一些对图像处理的高端支持。

1975-76年间,Kay小组认识到应当对执行效率和规模进行优化。于是他们在许多重要方面重新设计了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)系统以方便交互式应用软件的开发。

程序实例

数学计算

<code>(15 * 19) + (37 squared)</code>

可以理解为:向15发送消息'*',参数为19;向37发送消息squared; 最后向15*19的结果发送消息'+',参数为37 squared的结果。

什么是Smalltalk相关推荐

  1. Dolphin Smalltalk 7 遵循 MIT 开源

    Object Arts 的 Smalltalk 编程语言实现Dolphin Smalltalk在MIT许可证下开源,该公司在时隔9年之后发布了开源版的Dolphin 7,上个版本还是在2006年发布的 ...

  2. java的smalltalk规则,Smalltalk相当于Java的静态是什么?

    What is the Smalltalk equivalent of Java's static fields and methods? IOW, what do the Smalltalkers ...

  3. Smalltalk 语言的地位为何一落千丈?

    [CSDN编者按]"我们有这么多珍贵.优雅.给了我许多快乐的语法,为什么你们还在使用那些劣质的语法?你们怎么能这么盲目.这么愚蠢?"这类争论永远没有胜者,建议不要尝试. -- Al ...

  4. 艾伦·凯与Smalltalk语言

    为什么80%的码农都做不了架构师?>>>    艾伦·凯与Smalltalk语言 您知道左面挂着图灵奖奖章的人是谁吗?他是世界上第二个面向对象语言--Smalltalk的发明人艾伦. ...

  5. 如何阅读Smalltalk程序

    本文简单介绍了Smalltalk语言的一些语法规则,Smalltalk语言中使用MVC模式来构建用户界面,即MVC模式是起源于Smalltalk语言的,不过Smalltalk的中文资料太少,这篇翻译文 ...

  6. smalltalk 上手

    在www.smalltalk.org上晃了一圈,了解一下情况,然后下载了Squeak和VisualWorks,开始还对Squeak有些好感,比较小巧,对它的评价不错,不过打开才发现Squeak的界面也 ...

  7. 学点SmallTalk

    久仰SmallTalk的大名,大概是因为很多design pattern的名著都提到它,并且一说到OOAD也都会提到它老人家.但是我并不知道它是啥子东东,就像谁关心Ada一样. 但是出来混总是需要还的 ...

  8. Smalltalk for Everyone Else

    在 ONLamp.com 上看到 Keith Fieldhouse 的<Smalltalk for Everyone Else>一文.开篇 Keith 即鼓励开发者们保持旺盛的学习欲望,努 ...

  9. 关于Smalltalk,squeak,scratch的学习体验

    Smalltalk和许多程序设计语言不同,它不仅仅是一门语言. 1.一种面向对象的程序设计语言:它是一种面向对象的语言,包含语言的语法和语义.一些编译器可以通过Smalltalk源程序产生可执行文件. ...

最新文章

  1. 二级联动菜单,简单实现
  2. Linux命令整理 - 文件搜索【4】
  3. Linux 需要的常用操作,你只差这篇文章
  4. NIO源码解析:IntBuffer基本使用
  5. mysql8 安装_mysql 8.x 安装向导
  6. 搜索推荐中的召回匹配模型综述(二):基于表示学习的深度学习方法
  7. SQLServe错误整理
  8. vue-cli3项目通过vue如何引入第三方js包完成登陆功能
  9. lwip+freeRTOS 故障容错 客户端主动发起连接
  10. 突然听到一只公鸡的局域网聊天软件
  11. 为什么链接oracle报错,PG连接Oracle报错解决
  12. 限定概率抽奖_LOL:欧皇一次抽奖得16个永久皮肤 把老马亏得坐公交啦
  13. (29)System Verilog设计SPI接收
  14. Linux Socket C语言网络编程:UDP Socket
  15. POJ - 3190
  16. 23 模块代码编写基础
  17. 洛谷刷题笔记 鸡尾酒疗法
  18. 求解1-1/2+1/3+...1/99-1/100的和
  19. 未定义标识符“L“,sprintfw/swprintf用法,TEXT宏
  20. Solidity如何通过代码减少gas消耗

热门文章

  1. 谭浩强c程序设计试题汇编第三版 第四章解析
  2. Spring Boot Actuator 使用介绍
  3. SVM-支持向量机算法(一)
  4. Android Studio使用技巧系列教程(七)
  5. sql2005java驱动_sqljdbc.jar 2005
  6. 浏览器无法访问某个网站,其他网站都正常
  7. 小程序怎么清服务器缓存,怎么清理微信小程序缓存 微信小程序缓存删除的方法...
  8. CAN/CAN_FD/Flexray的通信速率
  9. SaaS、PaaS、DaaS、IaaS四种云系统说明
  10. scm概念的scm存储