其他语言

本类阅读TOP10

·基于Solaris 开发环境的整体构思
·使用AutoMake轻松生成Makefile
·BCB数据库图像保存技术
·GNU中的Makefile
·射频芯片nRF401天线设计的分析
·iframe 的自适应高度
·BCB之Socket通信
·软件企业如何实施CMM
·入门系列--OpenGL最简单的入门
·WIN95中日志钩子(JournalRecord Hook)的使用

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
C++和Java程序员的Smalltalk入门

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

C++Java程序员的Smalltalk入门

 

原文标题:I Can Read C++ and Java But I Can’t Read Smalltalk

原文作者:Wilf LaLonde

原文链接:http://www.eli.sdsu.edu/courses/spring01/cs635/readingSmalltalk.pdf

 

 

简介

 

有很多人告诉我他很熟悉C++Java,但是却完全读不懂Smalltalk的代码。对于他们来说,Smalltalk简直无法理解!对于这个问题我考虑了很久然后得到的结论是他们是对的。如果我随便挑出一些自己多年以前写的Smalltalk代码,然后假设我只明白Java去阅读的时候,我确信我是无法理解那些代码的。其实要读懂Smalltalk只须了解一些非常简单的概念,当然有些概念也是比较微妙。如果“Johnny读不懂Smalltalk代码”,我有办法。我的办法就是通过实际的例子来帮助新手快速理解Smalltalk的概念。我假设读者了解什么是面向对象变成,对于那些已经掌握Smalltalk的读者也请先假装一会没有学过smalltalk

 

如此简单的文法

 

有些语法是很容易理解的,例如使用双引号来标识注视块;单引号标示字符串,单个字符前面加$(例如:$x标示字符“x”)。除此之外,还有symbol的概念,这是一个特殊的字符串,在整个内存中是唯一的。当源代码被编译的时候,编译器会搜索整个内存,如果发现相同的symbol存在则使用已存在的那个。有理数并不节省内存,但是相对于symbol而言处理速度更快(稍候解释)。

“this is a comment”

‘this is a string’

#’this is a symbol’

#thisIsASymbolToo

 

对于赋值操作和等于号,差别不是很大。

:= //Means assignment

= //Means equality comparison

== //Means identity comparison

 

如果你给我分别使用’a’’b’命名的对象的引用,我可以告诉你他们是否是同样的对象(使用a == b, 命名等价)或看上去相同实质上不同的对象(使用 a = b构造等价)。直观的来说,== 比较两个被引用对象的地址是否相同,而 = 则比较两个对象的整个内容是否相同。

Smalltalk代码中很少用到逗号,因为他们不是Smalltalk文法组成的一部分。这就是为什么Smalltalk的数组是没有逗号的。例如:

#1 2 3 4 5

 

然而,都好是smalltalk的一个操作符。因此你会看到他被用来连接两个字符串,例如:

‘string1’,’string2’

 

 

无处不在的关键字

 

分号与句号的不同

 

Get/Set方法使用与实例变量相同的名称

 

Collection的广泛使用

 

 

序列化抽象无须创建新的class

 

结论

 

 




相关文章

相关软件