你会开始学习Smalltalk吗?

时间:2008-09-29 14:57:25

标签: smalltalk seaside

我的问题很简单!

  1. 如果你有时间,你会开始学习Smalltalk吗?为什么?为什么不呢?
  2. 您是否已经了解Smalltalk?你为什么推荐Smalltalk?为什么不呢?
  3. 就我个人而言,我是Ruby on Rails程序员,我非常喜欢它。但是,我正在考虑Smalltalk,因为我阅读了各种博客,有些人正在将Ruby称为“Smalltalk Light”。我对Smalltalk感兴趣的第二个原因是Seaside

    也许有人之前做过同样的转变?

    编辑:实际上,让我对Smalltalk / Seaside最感兴趣的是下面的WebDevRadio剧集:Episode 52: Randal Schwartz on Seaside (among other things)

21 个答案:

答案 0 :(得分:58)

如果你喜欢Ruby,你可能会喜欢Smalltalk。 IIRC Seaside已被移植到Gemstone VM,,这是他们的Gemstone / S OODBMS的一部分。这比Ruby有更好的线程支持,因此对于大容量系统来说它是更好的后端。这可能是一个很好的理由仔细研究它。

学习Smalltalk的原因:

  • 这是一个非常非常好的编程环境。一旦你掌握了它(它对于习惯于C ++或Java的人来说有点文化冲击),你会发现它是一个非常好的工作环境。即使是一个非常糟糕的小故事,如我使用的Old Digitalk是一个非常令人愉快的系统。许多旧的XP和OO大师类型如Kent BeckMartin Fowler在当天and can occasionally be heard yearning for the good old days in public切断了Smalltalk的牙齿(感谢Frank Shearer的引用,+1) - 敏捷开发起源于这个平台。

  • 它是历史上最具生产力的开发平台之一。

  • 存在几个成熟的实现,并且有一个令人惊讶的大型代码库。有一点,它在金融市场圈子中非常流行,开发人员的生产力和上市时间是相当大的。直到20世纪90年代中期,如果您想要一种适合应用程序开发的商业支持的高级语言,它或多或少是城里唯一的游戏(可能除了LISP)。

  • 部署很简单 - 只需将图像文件放在相应的目录中即可。

  • 不是真正的原因,但Gang of Four Book使用Smalltalk作为他们的一些例子。

不学习Smalltalk的原因:

  • 这是一个利基市场。您可能无法找到工作。但是,如果您正在制作某种.com application where you own the servers,这可能不是问题。

  • 它被许多人视为遗留系统。平台上的新开发相对较少(虽然Seaside似乎正在推动一些文艺复兴)。

  • 它往往不能与传统的源代码控制系统很好地配合(至少在90年代早期我使用它时)。这可能是也可能不是。

  • 有点孤立,喜欢自己玩。 Python或Ruby是为从头开始集成而构建的,往往更加混乱,因此更容易与第三方软件集成。然而,various other more mainstream系统或多或少地受到这种类型的孤立性的影响,并且似乎不会妨碍它们的使用。

答案 1 :(得分:43)

好吧,既然你提到我的名字,我觉得我应该参与其中。

正如我在播客采访中所说,正如我在http://MethodsAndMessages.vox.com/的博客中反复证明的那样,这是“ smalltalk 的一年”。在过去的十个月里,我现在已经完成了Smalltalk的宣传,我可以看到它真的发生了。越来越多的客户转向Smalltalk和Seaside,Smalltalk供应商都在努力捕捉这种新的关注。正在计划更大规模的Smalltalk会议。正在发布更多招聘信息。正在制作更多博客文章。

如果你今天转向Smalltalk,你并不孤单。还有很多其他人也在那里。

修改

好吧,多年后,我现在推荐Dart。这是一种由Google发起但现在由ECMA委员会拥有的优秀语言。它以node.js样式运行服务器端,但也通过转换为JavaScript在现代浏览器中运行客户端。很多好书,博客,帮助渠道,IDE支持,public live pastebin。我认为它肯定有腿......足以让我正在编写课件来现场或在线教授,而且我很确定我的作品中还有一两本书。 Gilad Bracha是一位历史悠久的Smalltalker,是该设计的主要贡献者,所以Dart中有很多Smalltalk。

答案 2 :(得分:27)

Smalltalk是一门很好的学习语言,最棒的是它只需要一天时间就可以完成。它不仅仅是一种学术语言。人们正在构建处理数十亿美元的巨大,可扩展,可复制的应用程序。他们只是不谈论它。例如,请参阅GemStone and Orient Overseas Container Lines: A Shipping Industry Case Study

Seaside是学习Smalltalk的一个很好的理由,但我认为你不会发现它比Rails更好。

让我信服的是GemStone。我非常喜欢Gemstone的GLASS(GemStone,Linux,Apache,Smalltalk,Seaside)。其中最重要的部分是GemStone,它可以为您处理所有对象持久性,而无需您考虑它。看到他们的一些演示并听到人们对GemStone做了些什么,重新设定了我对“大应用程序”意味着什么的看法。

关于Rails最让我烦恼的部分是对象关系映射。这对Ruby来说没有任何意义,因为它在GLORP(处理Smalltalk的ActiveRecord),Perl或其他任何东西时都很难。将对象映射到数据库表非常痛苦。使用GemStone,考虑数据库消失,因此数据库的工作也消失了。这就像一块巨大的石头(或一群猴子)被从背上取下来。

答案 3 :(得分:15)

>找不到一个不花费双臂和腿的

的Smalltalk开发环境

Google - 免费smalltalk

Cincom Smalltalk,Squeak,GNU Smalltalk

答案 4 :(得分:15)

学习Smalltalk将从发明OO(Alan Kay)的人的角度为您提供面向对象软件开发的基础。重叠窗口环境的想法来自Smalltalk。

学习Smalltalk的绊脚石是它是一个消息传递系统,具有奇怪的流控制语法,如:

i < 60
   ifTrue: [ self walk ]

它有一个非常成熟的类库,它具有一致性,我没见过太多的地方。所有环境中的类库(甚至商业Smalltalks)都有可用的源代码,允许您从语言的主人那里学习。编写Smalltalk时,我总是会问这个问题是如何在环境中完成的。

Smalltalk通常在图像中实现,该图像是系统中所有对象的实时环境。

交互式调试器真正将Ruby中的Smalltalk分离。

Seaside是Web开发框架,并为Smalltalk带来了新的亮点。它是一个基于延续的环境,允许内部命中调试和平滑的富客户端类型开发体验(可以在单个方法中设计顶级应用程序流)。它与script.aculo.us的集成已经完成,可以从Smalltalk中轻松调用。

答案 5 :(得分:10)

奈杰尔,我的一句话就是:

虽然现在我用它做了很多事情已经很久了,但是我提名Smalltalk,我仍然没有遇到任何类似于能够将想法转移到计算机代码中的东西。这不仅仅是语言:它是精彩的浏览器环境,图书馆,以及编写清晰,精心设计的代码的文化,就像其他任何东西都可以产生意大利面条一样快。当JavaOne的参与者颂扬Java如何比其他任何东西都更有效率时,我需要一个棕色的纸袋。好吧,回到整理我的课程路径...... - Martin Fowler(软件开发杂志,2001年1月)

我发现它here

答案 6 :(得分:9)

我建议大家学习Lisp(Scheme)或Smalltalk。

Smalltalks有很棒的IDE,一旦你克服文化冲击,你不想错过。是的,有多个免费的:Squeak,Dolphin,Smalltalk / X和Visualworks(非商业)。

但是,Lisp在数学基础上可能更加清晰。

问候

PS:实际上我建议同时学习它们!

答案 7 :(得分:8)

我不认识Ruby ..

Smalltalk是一种 OO语言。如果您觉得需要真正理解OO,而不仅仅是大多数流行的'OO'语言(如C ++,Java等)的模拟OO,那么我建议您使用smalltalk。

在smalltalk中,一切都是一个对象,具有属性,行为和元素。在模拟中,您拥有在对象中使用的数据类型。

我会说玩它,你只会受益。

答案 8 :(得分:8)

不同意那些认为你不会将Smalltalk用于大型应用程序的海报 - 这正是它闪耀的地方。但我也在一周内创建了相当时髦(注释小写)的原型应用程序。

我从92年开始在ST学习OO,非常高兴我这样做了。它给了我OO的真实背景。在课堂上思考。没有类型。 ST非常重视消息传递。如果你想知道一些东西发送一个消息并获得答案。恕我直言,精神和IDE真的鼓励你用你的耦合和凝聚力做正确的事。

在我的Java日工作中,我坚持使用文件,泛型,像eclipse一样的IDE,其效率低于任何ST IDE。我是唯一一次提前完成开发的ST。事实上,它是如此富有成效,我们得到了如此多的重用,我不得不被转移到另一个项目,因为我无所事事! (好吧,也许我可以花时间学习估计......)

下载吱吱声,找一本好书并玩。唯一的缺点是,如果你的日常演出使用Java或C#,你最终会希望你可以使用ST。你早点回家。

克里斯布鲁克斯

答案 9 :(得分:7)

我完全在你的鞋子里。我正在使用RoR并调查Smalltalk土地。这里有一些专业人士和我觉得很重要:

<强>优点:

  • 成熟&amp;稳定的环境
  • 快速开发周期
  • 让你思考更多,写得更少

<强>缺点:

  • 需要不同的思考
  • 仍然没有完全掌握它

我对Smalltalk的了解非常有趣。在搜索Lisp和Erlang的东西时,谷歌的结果就是这一点。有一天,我检查了它,并惊讶于良好的窗户环境。几分钟后,我发现了Aida / Web框架。我被迷住了,并开始使用这个框架通过Web开发学习Smalltalk。

仍然没有那么好,但它真是太有趣了,我不能坐着...... :-)我又玩得很开心。

答案 10 :(得分:5)

如果我有时间的话,不会开始学习它。为什么不?因为学习C#或Java在经济上会更有成效和更有利可图。

另一方面,如果你是一个爱好者,并想进行考古挖掘,那么我建议花一些时间通过研究Alan Kay来研究smalltalk的内容,时间,原因和方式。迷人的故事和一个令人难以置信的人(毕竟,他获得了转奖)。然后可能会稍微发出吱吱声以获得对语言的感觉。在此之后,您可能会重新发现对块,闭包和面向对象原则的尊重/理解。

我知道并使用Smalltalk,已经有15年了,仍然维护它,并且不会向朋友推荐Smalltalk。为什么不?就业是一件好事,并且不断前进。虽然你可以从Smalltalk那里学到很多东西,但是你不能轻易地将它转化为有利于在这个时代就业的人。

另外,你似乎对Seaside感到兴奋,我会假设Seaside / GemStone合作伙伴关系。我已经使用了GemStone很长一段时间,两者结合起来非常吸引人。我希望他们能够获得成功所需的市场份额和动力。

答案 11 :(得分:4)

不要!如果你真的开始学习它,你可能不想再用别的东西编程了。

如果你是一名lisp程序员,那可能不是这样。

答案 12 :(得分:4)

答案 13 :(得分:3)

当然,学习Smalltalk!这是2015年,由于Pharo,Smalltalk再次上升。 Pharo是免费的。 Pharo正在迅速发展成为一个强大的企业工具。在版本4.0,很快将是5.0,它在短短四年内已经成熟了很多!

然后是Amber,这是网络的Smalltalk。它也是免费的,并且发展很快。

尽管Smalltalk's reputation,这不是你父亲的Smalltalk。现代Smalltalk令人兴奋且充满希望。

Smalltalk的工作确实不是(还)很多。但如果你有足够多的人聚集到新一波的Smalltalkers,那么该行业将适应它,我们将看到Smalltalk在业务中的广泛采用。问题是,你有远见吗?

答案 14 :(得分:3)

我已经做了很多年的软件工程师。我听说人们多次提出Smalltalk,当然Smalltalk自1980年左右开始出现,但它是其中一种似乎永远不会成为软件主流的语言之一。有点像Objective C,CLIPS,PL / I等 - 你可能听说过的东西,但是大多数人从来没有编写过的东西。

我可能不会花时间学习Smalltalk,除非我需要从事某项工作。几年前我简要介绍了一些Smalltalk教程和示例,看起来它对于OO编程的某些方面有一些明显的优势(比如消息概念看起来很酷)。但遗憾的是,它不是主流,似乎并没有获得太大的动力。

答案 15 :(得分:3)

我在第一个研究生大学水平的面向对象编程课程(大约1988年)中教过Smalltalk。老师认为最好开始是一个“纯粹的”OO语言,然后再转向一个更时髦的语言(我们在学期结束时做了一些C ++)。

通过这个衡量标准,最好从纯粹的OO开始,尽管现在我们有Java&amp; C#,两者都是“近乎纯粹的”OO - 足够接近,你可以忽略它们的非OO特征,并将自己限制在语言的Pure-OO子集中。

答案 16 :(得分:3)

如果你想更好地理解极限编程(甚至是Scrum),我会说

为什么不耐烦的Java程序员需要学习Smalltalk:

http://www.dafydd.net/archive/2010/why-smalltalk-isnt-just-another-language/

答案 17 :(得分:2)

1)是的!学习一门语言总是好的。如果您要学习一门语言,请将其变成一种功能强大,有影响力的语言,可以轻松快速地学习。

Smalltalk仍然是学习OO概念的卓越语言和环境。

这是所有物体,一直向下。这使得工作方式非常一致。

整数是类整数的实例。字符串是角色对象的集合。类是它们定义的类的单例实例对象。

控制结构的工作原理是将get消息发送到Class Boolean的实例。

即使是匿名方法(代码块,又称块)也是对象。

通过向对象发送消息来完成所有操作。语法可以放在明信片上。

概念的清晰度及其在Smalltalk中的实现意味着您可以开发直接转换为Java,Ruby和C#的思维方式。我希望它对Python来说也是如此。

使概念清晰明确,英国一所大学使用Smalltalk每年培训5,000人进行面向对象计算,这是非常好的。

吱吱声5,刚刚被释放。它的新Cog / Spur VM获得了大幅度的性能提升,其具有渐进式垃圾收集功能。

Pharo 4拥有可爱干净的桌面主题。下一个版本Pharo 5即将发布。它将转向使用Cog / Spur VM,它将在发行版中拥有大约5,000个类,并且可以通过配置浏览器工具从网上获得其他类包。

即使在第一代Raspberry Pis上,吱吱声5仍然具有高性能,并且在新的$ 5 Raspberry Pi零点上快了近50%。 $ 99购买了Raspberry Pi 2,屏幕和外壳 - 运行一个成熟,功能齐全的IDE。

正在对Smalltalk(例如Naiad和Spoon)的协调分布式OO系统进行前沿研究。

世界上一些最大的企业数据库都在Smalltalk上运行 - 包括跟踪世界上60%的集装箱和世界上最大的银行的交易系统。

您可以将Smalltalk用作一种超级强大的CoffeeScript,在Amber Smalltalk中编写并转换为JavaScript,在浏览器中运行。

Squeak,Pharo和Amber都是免费,开源,开放许可的语言和环境。

Squeak和Pharo为MacOS,Windows和Linux提供一次写入,随处运行的设施。 (也可能是RiscOS)。

Dolphin Smalltalk坚定地瞄准原生Windows外观,并允许您编译已完成作品的封闭.exes,以便分发给最终用户。供应商对Dolphin的进一步开发已经停止,但它完全正常运行,并且像所有Smalltalks一样,设计为可大规模扩展。 (我提到Pharo现在有5,000个课程,相比之下Squeak的3,000个?Pharo是Squeak的一个分支3.9)

**有一个如何安装和启动Squeak,Amber,Pharo,Cuis和Dolphin的指南:** http://beginningtosmalltalk.blogspot.co.uk/2015/11/how-to-get-smalltalk-up-and-running.html

Seaside Web框架在Squeak和Pharo上运行。它是一个非常成熟的工具,更传统的AidaWeb框架也是如此。

VisualAge,VisualWorks和Gemstone都提供企业级强大的系统。 Gemstone提供具有事务和持久性的无限可伸缩对象数据库。

2)是的 - 我已经使用过了。

我通过开放大学学到了这一点,并立即在Ruby中发挥作用(Pickaxe书的副本和我身边的图书馆参考)。它通过Java和Xerox Moo代码帮助了我。

我刚刚回到它去编写应用程序来控制管理和分发响应式,大型多平台移动应用程序。

我希望很快我也会使用Amber重写我的JavaScript移动应用程序。

答案 18 :(得分:2)

这个帖子对我来说非常实际。我正在计划将软件迁移到Web应用程序。这是一个基于数据库的软件。我特别检查替代方案 1)导轨 2)海边

如果我可以将Gemstone / S的数据作为数据库,我也会考虑。所以对我而言,这意味着我必须学习Smalltalk(更好)。因为它可能会成为我未来15年的工作。你会(而且不应该)使用你不喜欢的软件那么久;-)。我的印象Gemstone / S是“杀手级”应用程序之一。但是对象的持久性仍然是一个非常困难的领域......

答案 19 :(得分:1)

我真的不知道你在找什么。

如果您正在寻找其他语言,我认为这在很大程度上取决于可用的库。我既不知道Ruby也不知道Smalltalk,但似乎编写Ruby on Rails类应用程序的最有效方法可能不是Smalltalk。

如果您希望了解Ruby背后的想法,这可能是一个非常好的举措。我没有任何定量的东西,但如果我不仅仅知道工具,我知道它背后的想法或它们是如何工作的,我总是觉得使用工具(例如语言系统)会更好。

如果你想学习不同种类的面向对象语言,你可能想学习Smalltalk(如果它与Ruby有很大不同),比如Java或C ++,也许还有Common Lisp对象系统。

如果您只想学习不同的东西,Smalltalk可能是一个不错的选择。我也建议使用Common Lisp,其他人无疑会有其他建议(你现在可以获得一个好的Forth系统吗?)。

答案 20 :(得分:-5)

是的,我对它很感兴趣。试图开始一次,但找不到一个不花费双腿和腿的Smalltalk开发环境。