我的问题很简单!
如果你有时间,你会开始学习Smalltalk吗?为什么?为什么不?
你知道Smalltalk吗?你为什么推荐Smalltalk?为什么不?
就个人而言,我是Ruby on Rails程序员,我非常喜欢它.但是,我正在考虑Smalltalk,因为我阅读了各种博客,有些人正在将Ruby称为"Smalltalk Light".我对Smalltalk感兴趣的第二个原因是Seaside.
也许有人之前做过同样的过渡?
编辑:实际上,让我对Smalltalk/Seaside最感兴趣的是下面的WebDevRadio剧集:第52集:Randal Schwartz on Seaside(除其他外)
如果你喜欢Ruby,你可能会喜欢Smalltalk.IIRC Seaside已被移植到Gemstone VM,这是Gemstone/S OODBMS的一部分.这比Ruby有更好的线程支持,因此对于大容量系统来说它是更好的后端.这可能是一个很好的理由仔细看看它.
学习Smalltalk的原因:
这是一个非常非常好的编程环境.一旦你掌握了它(它对于习惯于C++或Java的人来说有点文化冲击),你会发现它是一个非常好的工作环境.即使是一个非常糟糕的小故事,如我使用的Old Digitalk是一个非常令人愉快的系统.很多像肯特贝克和马丁福勒这样的老牌XP和OO大师在当天都会在Smalltalk上大肆宣传,偶尔会听到他们渴望在公共场合度过美好时光(感谢Frank Shearer的引用,+1) -敏捷开发源于这个平台.
它是历史上最富有成效的开发平台之一.
存在几个成熟的实现,并且存在令人惊讶的大型代码库.有一点,它在金融市场圈子中非常流行,开发人员的生产力和上市时间是相当大的.直到20世纪90年代中期,如果你想要一个适合应用程序开发的商业支持的高级语言,它或多或少是城里唯一的游戏(可能除了LISP).
部署很简单 - 只需将映像文件放在适当的目录中即可.
这不是一个真正的原因,但是Gang of Four Book使用Smalltalk作为他们的一些例子.
不学习Smalltalk的原因:
这是一个利基市场.您可能无法找到工作.但是,如果您生成某种.com应用程序,您拥有服务器,这可能不是问题.
它被许多人视为遗留系统.平台上的新开发相对较少(尽管Seaside似乎正在推动一些文艺复兴).
它往往不能很好地与传统的源代码控制系统一起发挥(至少在90年代早期我使用它时).这可能是也可能不是.
它有点孤立,喜欢自己玩.Python或Ruby是为从头开始集成而构建的,往往更加混杂,因此更容易与第三方软件集成.然而,各种其他更主流的系统或多或少地受到这种类型的孤立性的影响,并且似乎并未妨碍它们的使用.
好吧,因为你提到我的名字,我觉得我应该插话.
正如我在播客采访中所说的那样,正如我在http://MethodsAndMessages.vox.com/的博客中反复证明的那样,这是" 小屁股的一年" ".在过去的十个月里,我现在已经完成了Smalltalk的宣传,我可以看到它确实在发生.越来越多的客户转向Smalltalk和Seaside,Smalltalk供应商正在努力捕捉这种新的关注.正在计划更大规模的Smalltalk会议.正在发布更多招聘信息.正在制作更多博客文章.
如果你今天转向Smalltalk,你并不孤单.还有很多其他人也在那里.
编辑
好吧,几年后,我现在推荐Dart.这是一种由Google发起但现在由ECMA委员会拥有的优秀语言.它以node.js样式运行服务器端,但也通过转换为JavaScript在现代浏览器中运行客户端.很多好书,博客,帮助渠道,IDE支持,公共直播pastebin.我认为它肯定有腿......足以让我正在编写课件来现场或在线教授,而且我很确定我的作品中还有一两本书.Gilad Bracha是一位历史悠久的Smalltalker,是该设计的主要贡献者,所以Dart中有很多Smalltalk.
Smalltalk是一门很好的学习语言,最棒的是它只需要一天时间就可以完成.它不仅仅是一种学术语言.人们正在构建处理数十亿美元的巨大,可扩展,可复制的应用程序.他们只是不谈论它.例如,参见GemStone和Orient Overseas Container Lines:航运业案例研究.
Seaside是学习Smalltalk的一个很好的理由,但我认为你不会发现它比Rails更好.
让我信服的是GemStone.我非常喜欢Gemstone的GLASS(GemStone,Linux,Apache,Smalltalk,Seaside).其中最重要的部分是GemStone,它可以为您处理所有对象持久性,而无需您考虑它.看到他们的一些演示和听到人们对GemStone做了什么,重新设定了我对"大应用"意味着什么的看法.
关于Rails最让我烦恼的部分是对象关系映射.这对Ruby来说没有任何意义,因为它在GLORP(处理Smalltalk的ActiveRecord),Perl或其他任何东西时都很难.将对象映射到数据库表非常痛苦.使用GemStone,考虑数据库消失,因此数据库的工作也消失了.这就像一块巨大的石头(或一群猴子)被从背上取下来.
>找不到一个不花费双腿和腿的Smalltalk开发环境
谷歌 - 免费smalltalk
Cincom Smalltalk,Squeak,GNU Smalltalk
学习Smalltalk将从发明OO(Alan Kay)的人的角度为您提供面向对象软件开发的基础.关于重叠窗口环境的想法来自Smalltalk.
学习Smalltalk的绊脚石是它是一个消息传递系统,具有流控制的奇怪语法,如:
i < 60 ifTrue: [ self walk ]
它有一个非常成熟的类库,具有一致性,我没见过太多的地方.所有环境中的类库(甚至商业Smalltalks)都有可用的源代码,允许您从语言的主人那里学习.编写Smalltalk时,我总是会问这个问题是如何在环境中完成的.
Smalltalk通常在图像中实现,该图像是系统中所有对象的实时环境.
交互式调试器真正将Ruby中的Smalltalk分离出来.
Seaside是Web开发框架,并为Smalltalk带来了新的亮点.它是一个基于延续的环境,允许内部命中调试和平滑的富客户端类型开发体验(可以在单个方法中设计顶级应用程序流).它与script.aculo.us的集成已经完成,可以从Smalltalk中轻松调用.
奈杰尔,我的一句话就是:
虽然现在我用它做了很多事情已经很久了,但是我提名Smalltalk,我仍然没有遇到任何类似于能够将想法转移到计算机代码中的东西.这不仅仅是语言:它是精彩的浏览器环境,图书馆,以及编写清晰,精心设计的代码的文化,就像其他任何东西都可以产生意大利面条一样快.当JavaOne的参与者颂扬Java如何比其他任何东西都更有效率时,我需要一个棕色的纸袋.好吧,回到整理我的课程路径...... - Martin Fowler(软件开发杂志,2001年1月)
我在这里找到了.
我建议大家学习Lisp(Scheme)或Smalltalk.
Smalltalks有很棒的IDE,一旦你克服文化冲击,你不想错过.是的,有不止一个免费的:Squeak,Dolphin,Smalltalk/X和Visualworks(非商业).
但是,Lisp在数学基础上可能更加清晰.
问候
PS:其实我建议同时学习!
我不知道Ruby ..
Smalltalk是一种纯粹的 OO语言.如果您觉得需要真正理解OO,而不仅仅是大多数流行的'OO'语言(如C++,Java等)的模拟OO,那么我建议您使用smalltalk.
在smalltalk中,一切都是一个对象,具有属性,行为和元.在模拟中,您拥有在对象中使用的数据类型.
我会说玩它,你只会受益.
不同意那些认为你不会将Smalltalk用于大型应用程序的海报 - 这正是它闪耀的地方.但我也在一周内创建了相当时髦(注释小写)的原型应用程序.
我从92年开始在ST学习OO,非常高兴我这样做了.它给了我OO的真实背景.在课堂上思考.没有类型.ST非常重视消息传递.如果你想知道一些东西发送一个消息并获得答案.恕我直言,精神和IDE真的鼓励你用你的耦合和凝聚力做正确的事.
在我的Java日工作中,我坚持使用文件,泛型,IDE就像eclipse,它们的效率低于任何ST IDE.我是唯一一次提前完成开发的ST.事实上,它是如此富有成效,我们得到了如此多的重用,我不得不被转移到另一个项目,因为我无所事事!(好吧,也许我可以花时间学习估计...)
下载吱吱声,找一本好书并玩.唯一的缺点是,如果你的日常演出使用Java或C#,你最终会希望你可以使用ST.你早点回家.
克里斯布鲁克斯
我完全在你的鞋子里.我正在使用RoR并调查Smalltalk土地.这里有一些重要的利弊:
优点:
成熟稳定的环境
快速的开发周期
让你思考更多,写得更少
缺点:
需要不同的思考
仍然没有完全掌握它
我如何了解Smalltalk非常有趣.在搜索Lisp和Erlang的东西时,谷歌的结果就是这一点.有一天,我检查了它,并惊讶于良好的窗户环境.几分钟后,我发现了Aida/Web框架.我迷上了,并开始使用这个框架通过Web开发学习Smalltalk.
仍然不是那里,但它真有趣,我只是不能坐着...... :-)我又开心了.
如果我有时间的话,不会开始学习它.为什么不?因为学习C#或Java在经济上会更有成效和更有利可图.
另一方面,如果你是一个业余爱好者,并想进行考古挖掘,那么我建议花一些时间通过研究Alan Kay来研究smalltalk的What,When,Why和how.迷人的故事和一个令人难以置信的人(毕竟,他获得了转奖).然后可能会稍微发出吱吱声以获得对语言的感觉.在此之后,您可能会重新发现对块,闭包和面向对象原则的尊重/理解.
我知道并使用Smalltalk,有大约15年的时间,仍在维护它,并且不会向朋友推荐Smalltalk.为什么不?就业是一件好事,并且不断前进.虽然你可以从Smalltalk那里学到很多东西,但是你不能轻易地将它变成有利于在这个时代就业的人.
此外,你似乎对Seaside很兴奋,我会假设Seaside/GemStone合作伙伴关系.我已经使用了GemStone很长一段时间,两者结合起来非常吸引人.我希望他们能够获得成功所需的市场份额和动力.