smalltalk

 本人比较喜欢smalltalk的精简,不像java,关键字太多,type系统繁琐,如(Date date = new Date)。

 smalltalk的语言核心极为精简,同时message传递的语义也使编程人员更好的理解OO,任何元素都是Object,不像Java,搞出了8个基本类型。

 smalltalk有block,block从函数语言的角度看算是lambda(smalltalk设计时借鉴了lisp),似乎Ruby也有block一说,有人说Ruby非常像smalltalk,连reflection的消息都叫inspect。Java8也要有lambda了,哎,java起初参考smalltalk设计时丢到的东西现在又捡回来,所以这充分说明了函数编程的东西是非常有用地。

 

 一般语言都有for/while/if/else控制结构,这些从大学里接触到编程时就刻在脑子里,以为那些控制结构关键字是语言必不可少的语法,在smalltalk这里全部用block实现,精简吧?

 在语言设计这个复杂问题上,《黑客与画家》一书中作者认为语言应该保证language core精简,剩下的用library来补充,lisp和smalltalk是说明这个观点的极好例子。可惜的是smalltalk和lisp的命运一样(smalltalk被java替代),被主流市场抛弃,不过似乎它们的语言设计思想却一直传递了下来。

   smalltalk的reflection应该让java的反射机制哭,看看thisContext吧。

   smalltalk的image设计有点像checkpointing,还像coredump,把所有object state保存到image中,这点java似乎没听说过,java只有java.io.Serializable。

 

smalltalk 80 bluebook: http://stephane.ducasse.free.fr/FreeBooks/BlueBook/Bluebook.pdf

附上gnu-smalltalk的一个英文文章,文章讲的通俗易懂,稍微懂一点OO的人都应该很容易看懂。

 

注:smalltalk对objective-C影响极大,连语法都很相似,Objective-C可是现在Apple开发平台的主流。

你可能感兴趣的:(java,smalltalk)