Ste*_*eve 68 oop programming-languages smalltalk
在每个技术出版物中,以及在本网站上,人们总是将OO语言与Smalltalk进行比较.我的经验是Java:Smalltalk是如此重要以至于我应该学习它吗?
oxb*_*kes 88
Smalltalk是最早的面向对象(OO)语言之一(与其他人一样,如Simula和Eiffel),在OO意义上可以说是极其"纯粹":
ints,booleans等)for,while,if等).听起来不可能,但这是真的!它还开创了其他一些现在常见的东西:
还有其他与Smalltalk相关的东西并没有真正成为主流:
可以说,Java集合API和apache-commons集合 API受Smalltalk的影响很大.
我不会说你应该学习Smalltalk 本身,但熟悉这些功能的基础知识(现在存在于许多其他语言中)肯定对你有利.
请注意,目前这里只有123个关于该语言的问题,其最初的目的是作为一种教育语言(即针对儿童)由其创建者Alan Kay提出.它不再使用得特别多.这并不是说它没有被使用.例如,摩根大通(JPMorgan)有一个大型的异国衍生品风险管理系统.
Daf*_*ees 48
Smalltalk有许多辉煌的创新 - 我们今天都认为理所当然的事情,包括:
今天学习Smalltalk的最重要原因是极限编程和scrum都是在Smalltalk社区中发明的......而且你在Smalltalk中体验的高度交互式编程风格比用Java做的任何东西都更简单,更强大和更直接或者C#或Ruby ...... 在你尝试在Smalltalk中进行极端编程之前,你无法真正理解敏捷方法的效果.很少有其他语言(无论如何都没有主流语言)具有相似的功能集.
...要真正了解您需要使用SUn的TDD.JUnit只显示测试失败的位置.SUnit实际上允许您在测试失败时点击调试器并查看实际对象以及它们如何连接,以便您可以看到,在调试器中生活代码如何失败并在那里修复它.
Nor*_*sey 21
是的,Smalltalk非常重要,你应该研究它.为什么?您可以以纯粹,简单的形式理解面向对象的编程.人们忘记的是,Smalltalk-80"蓝皮书"只有大约90页用于语言 - 语言就是这么简单.其他300页讨论了预定义的类层次结构,这是使用单继承的基于类的面向对象语言的设计杰作.您将更深入地了解对象(例如,类是对象,并且它们具有元类,依此类推到无穷大......除了结点被小心地绑在一起以保持系统有限)比从学习混合语言,如Java或C++.Smalltalk不仅仅因为它的历史而且因为它的简单性:
很简单,所以你可以理解整个语言和库
显示一个想法(对象就是你所需要的)推到它的逻辑极端
每个人都有从Smalltalk学到的东西!
Pav*_*aev 18
Smalltalk是前两种原始OOP语言之一,另一种是Simula-67.因此,有两个大型系列 - 以方法调用为中心的静态类型模型,由Simula开创(C++,Java,C#都属于这里),动态类型模型以消息传递为中心,由Smalltalk开创(Python,Ruby属于这里).
今天,Smalltalk本身并不是特别重要 - 有些人仍在用它来写东西,但它绝对不是主流.然而,学习它将为您提供有关OOP演变的方式和原因的一些见解.
Jam*_*ter 11
我上个月在一次关于Smalltalk历史和影响的会议上花了大约5分钟的时间.请参阅Smalltalk基于图像的开发.对于今天的程序员来说,更为外国的概念之一是"基于图像"的开发.有一些很好的类比,包括DBMS和电子表格.
它不仅是第一个,Smalltalk至今仍然是OO语言设计的典范.后来出现的更流行的语言--C++,Java,甚至是Objective-C--都具有更原始的面向对象,并且比旧的Smalltalk更具限制性.Smalltalk拥有无处不在的一流对象,对运行时内省的极大支持,非常自然地使用鸭子打字和闭包,比我在任何非功能语言中看到的更好.我的意思是,我们谈论的是一种没有本机控制结构的语言(如果,等等),但能够以无缝工作的方式从对象系统中创建它们.多么酷啊?
我不建议Smalltalk进行任何密集的桌面应用程序开发(目前还没有一个可行的实现IMO),但是如果你想看看OO是什么意思,可能会选择一些你可以在你的应用程序中使用的想法,Smalltalk是一个很好看的地方.
我同意其他人.我不确定它本身是否重要,但它是COOL(imho).
我喜欢语言中没有循环或条件.If-then-else是发送给布尔对象的消息.True类型的对象做一件事,False类型的对象做另一件事.(是,True和False是布尔的子类型,每个都有一个值,分别为true和false).
它开始时有点反直觉,但它确实给你一个非常有趣,深刻的观点,看看OO编程应该如何工作......
如果您只知道一种面向对象的语言,那么您应该考虑学习第二种,第三种和第四种语言,以便在使用对象进行编程时获得更广泛的视角.学习Smalltalk会扩展你的大脑,因为我们在其他语言中习惯了很多熟悉的概念(例如if-then-else,for(;;),while()等)在Smalltalk中不存在.显然,有些等价物,但Smalltalk以不同的方式做事,了解不同的做事方式总是一个好主意.
祝好运.
我刚刚开始重拾对 Smalltalk 的兴趣,在我看来,Smalltalk 有一些引人注目的特别之处:
这些都没有使它对不从事软件开发业务的人特别有用。我第一次接触它是在我看到使用 Smalltalk 在 PC 上制作原型的嵌入式设备的用户界面时。这允许非常快速地修改和测试用户界面,并在完成后为嵌入式开发人员提供一个比任何文档都精确得多的“可执行规范”。我很惊讶在过去 20 年的旅行中,我没有看到这种技术的使用频率比我观察到的要多得多。
使用 Smalltalk 作为原型工具是我的兴趣所在:我认为对于一个新问题,可以在 Smalltalk 环境中非常快速和轻松地尝试和验证不同的解决方法,一旦找到所需的解决方案,它应该相对机械地将其转换为 Java/C++/C# 等。事实上,对于重复类型的事情,很可能使用 Smalltalk 为某些其他目标语言的解决方案的部分生成代码。
| 归档时间: |
|
| 查看次数: |
23443 次 |
| 最近记录: |