我现在正在学习Smalltalk.它看起来与python非常相似(实际上,相反,python与Smalltalk非常相似),所以我想知道,作为一个python爱好者,如果我真的值得我研究它.
除了消息传递,Smalltalk和python之间还有哪些值得注意的概念差异,这可以让我看到新的编程视野?
Pav*_*aev 17
在Python中,"基本"结构(如if/else短路布尔运算符和循环)是语言本身的一部分.在Smalltalk中,它们都只是消息.从这个意义上说,虽然Python和Smalltalk都同意"一切都是对象",但Smalltalk更进一步说它还断言"一切都是信息".
[编辑]一些例子.
Smalltalk中的条件声明:
((x > y) and: [x > z])
ifTrue: [ ... ]
ifFalse: [ ... ]
Run Code Online (Sandbox Code Playgroud)
注意如何and:只是一条消息Boolean(本身是由于传递消息>而产生的x),而第二个参数and:不是普通表达式,而是一个块,允许进行惰性(即短路)评估.这会产生另一个Boolean对象,它也支持消息ifTrue:ifFalse:,将两个块(即lambdas)作为参数,并根据Boolean的值运行其中一个或另一个.
小智 9
作为Smalltalk的新手,真正让我感到震惊的两件事是基于图像的系统,而且反射无处不在.这两个简单的事实似乎在系统中产生了其他一切:
以上所有内容都以很酷的方式结合在一起:
图像系统和反射使得所有这些对于小游戏者来说都是完全自然和正常的事情大约三十年.
Smalltalk历史上已经内置了一个令人惊叹的IDE.我已经错过了许多语言的IDE.
Smalltalk也有一个可爱的属性,它通常是一个生活系统.你开始干净并开始修改东西.这基本上是一个对象持久存储系统.话虽如此,这既好又坏.您运行的是系统的一部分,也是您发布的部分内容.在分发之前,系统可以很好地设置.不利的一面是,系统包含您运输的所有内容.您需要非常小心地重新分配包装.
现在,就是说,自从我与Smalltalk(约20年)合作以来已经有一段时间了.是的,我知道,那些做数学的人很有趣.Smalltalk是一种很好的语言,有趣的编程,有趣的学习,但我发现它有点难以运送.
如果你喜欢的话,尽情玩吧.我一直在玩Python并喜欢它.
雅各