不使用Smalltalk的最大原因是什么?

时间:2015-08-04 21:27:36

标签: programming-languages smalltalk

Smalltalk是一种具有许多优良品质的编程语言(包括一个独特的IDE)。那么为什么不使用它呢?采用它的障碍是什么?

2 个答案:

答案 0 :(得分:9)

当Smalltalk问世时,它非常昂贵。真的,令人难以置信的昂贵。一个用户许可证超过1000美元(并且不要忘记在比较这个数字时你必须调整35年的通货膨胀,这可能是一个相当不错的中型车,你可以获得这笔钱! ),开发人员的许可证是其中的一个,并且最重要的是,Smalltalk是为个人计算机发明的......但是个人计算机是为Smalltalk发明的,所以没人有,所以你必须买个人适用于每个开发人员和每个用户的计算机!

在您通常为整个公司或整个大学使用一台计算机的时候!突然之间,你需要一台个人电脑(没有人拥有)带有图形(没有人拥有)和一只鼠标(没有人甚至没有听说过)每个员工。那些也不便宜。

在一些公司开始销售价格较低的Smalltalk实施之前,花了很长时间。 Apple甚至免费预装Apple Smalltalk作为MacOS的一部分! Smalltalk开始崛起,变得更受欢迎。

另外,Smalltalk需要大量资源。这在施乐帕洛阿尔托研究中心并不是一个问题,因为他们再次发明了功能非常强大的工作站计算机,其功能特别有利于Smalltalk和Lisp等语言,但施乐却没有看到销售它们的价值。只有在Apple Macintosh和带有Windows的PC开始变得流行之后,他们才看到了他们的方式的错误,并尝试销售工作站,但到那时已经太晚了。 (Bill Gates和Steve Jobs BTW都参观了Xerox PARC,并且都得到了工作站,图形,鼠标和Smalltalk系统的演示。)它需要一段时间,直到机器变得足够强大,以及动态类型反馈等技术,多态内联缓存,推测内联,自适应优化,热点编译等都是发明和生产就绪的。

然而,正当Smalltalk变得更受欢迎时,发生了两件事:一,领先的Smalltalk供应商收购了另一家领先的Smalltalk供应商,他们多年来试图整合两家公司和产品。第二,斯坦福的一些Unix工作站供应商创建了一个静态类型的Smalltalk克隆,它对现有的C和C ++程序员来说更加可口,即使它失去了很多表现力,而且几乎所有Smalltalk的优雅,它只是勉强够用。

因此,Java基本上是棺材中的最后一颗钉子。有趣的是,它甚至不是许多Java支持者感兴趣的Java语言,而是JVM。 JVM被视为打破Wintel在个人计算市场中的垄断地位的一种方式。如果一切都在JVM上运行,那么在底层运行并不重要,而且从Windows和Intel迁移将更加容易。这就是CPU供应商和操作系统供应商支持Java的原因。此外,如果所有内容都在JVM上运行,那么您就不必再将应用程序移植到不同的平台上了,这就是为什么Oracle等应用程序供应商支持Java的原因。所以,基本上,每个人都想要JVM,而Java就是为了这次旅行而出现的。

然而,Smalltalk真的失败了吗?

Objective-C本质上是Smalltalk对象模型,甚至Smalltalk语法,用螺栓连接到C. Objective-C在Apple世界中被广泛使用。

Java是通过从Objective-C中删除C并添加静态类型系统IWO创建的,它基本上是Smalltalk +类型​​+ C和Pascal启发的语法。 Java可能是最成功的商业语言。

Scheme至少间接地受到Smalltalk的影响(它是为了研究OO而创建的)。 Scheme是 对世界上最流行的编程语言JavaScript的主要影响。 Self是Smalltalk的后代,也是JavaScript的另一个主要影响因素(通过Act-1和NewtonScript)。

Ruby本质上是具有Unix脚本哲学的Smalltalk。

Oracle HotSpot JVM直接基于Animorphic VM,一个Smalltalk VM。 (Self,它是在Sun开发的,拥有最快的虚拟机之一,Self比当时的许多C ++实现运行得更快,尽管它比JavaScript,Ruby,Python,PHP和Smalltalk更具动态性。 所以快,一个用Self编写的Smalltalk解释器,运行在Self VM上,它与Self一起作为一个例子,最终成为当时最快的Smalltalk实现。当Sun放弃自我时VM工程师离开Sun并加入了新成立的Smalltalk公司,在那里他们开发了Animorphic Smalltalk VM,这是当时最快的VM,然后,当Java变得流行时,他们注意到Java和Smalltalk非常相似,只有一个几乎没有什么修改,它们可以成为世界上最快的Java VM。那时,Sun收回了几年前他们放弃的人所组建的公司,剩下的就是历史了。)

V8直接基于Animorphic VM。 V8由前Animorphic和HotSpot工程师开发。 (Lars Bak,V8的首席开发人员,曾在Self VM上工作,在Animorphic VM上工作,成为HotSpot VM的主要开发人员之一,然后离开Sun创建另一个VM,并被谷歌聘请创建V8,他基于这些概念,我甚至相信Animorphic VM的一些源代码。)

因此,Java基于Smalltalk,JVM规范基于Smalltalk-80 VM,最流行和高性能的Java实现基于Smalltalk VM。 JavaScript间接基于Smalltalk via Self,其中一个顶级JavaScript实现基于Smalltalk VM。 iOS和OSX开发中使用最广泛的语言之一是基于Smalltalk。

个人计算,桌面隐喻,窗口隐喻,文档隐喻,IDE,重构,自动重构工具,软件设计模式,极限编程和敏捷,它们都来自Smalltalk社区。图形和鼠标由Smalltalk推广。比尔盖茨和史蒂夫乔布斯都受到了Smalltalk的启发。我认为这不是太糟糕了!

答案 1 :(得分:2)

今天,集成和互操作比过去重要得多。 smalltalk没有声誉擅长这一点。它包含了所有的IDE和工具,感觉很沉重,所以当我需要将各种东西粘合在一起时,我不会想到使用它。

它不适用于编写脚本,这有助于perl,php,python和ruby(在rails之前)

IDE和开发工具还有很多选择,其中没有一个适用于smalltalk。

这使得开始使用smalltalk成为一项重大投资,因为需要学习和使用新工具。不是我一时兴起的事情。

当谈到将smalltalk用于较大的应用程序时,它的擅长,决定更具政治性。除非开发人员已经知道smalltalk并且可以将其出售给团队,否则工具和框架的决策往往取决于受欢迎程度。

人们不知道smalltalk更好。告诉他们不会改变这一点,因为每种语言的支持者都声称他们是最好的选择。在过去失败也没有帮助声誉。

唯一可行的衡量标准是使用多少语言。 smalltalk在这里没有好的数字。

(顺便说一下:在80年代,一辆车的平均价格为7000美元)