当前位置:  开发笔记 > 编程语言 > 正文

为什么使用Ruby而不是Smalltalk?

如何解决《为什么使用Ruby而不是Smalltalk?》经验,为你挑选了17个好方法。

Ruby正在变得越来越受欢迎,主要来自Ruby on Rails的影响,但感觉它正在挣扎于青春期.Ruby和Smalltalk之间有很多相似之处 - 磁悬浮是一个证明.尽管有一个更不寻常的语法,Smalltalk拥有所有(如果不是更多)Ruby的面向对象的美.

从我所看到的,Smalltalk似乎有Ruby击败:

成熟度(1970年代开发)

稳定性

商业支持

分布式源代码控制(理解代码结构,而不仅仅是文本差异)

VM的几种实现

跨平台支持

在海边的Web框架作为一个强有力的替代选择到Rails

看起来Ruby只是重新发明轮子.那么,为什么Ruby开发人员不使用SmallTalk?Ruby拥有Smalltalk的不是什么?

记录:我是一个对Smalltalk几乎没有经验的Ruby人,但我开始想知道为什么.


编辑:我认为GNU Smalltalk已经解决了易于编写脚本的问题.据我了解,这允许您在常规旧文本文件中编写smalltalk,并且您不再需要在Smalltalk IDE中.然后,您可以运行脚本:

gst smalltalk_file

ConcernedOfT.. 88

我更像是Python用户而不是Ruby用户,但是出于同样的原因,同样的事情也适用于Ruby.

Smalltalk的体系结构有点孤立,而Python和Ruby是从头开始构建的,以便于集成.Smalltalk从未真正获得过Python和Ruby所拥有的混合应用程序支持,因此'smalltalk作为嵌入式脚本语言'的概念从未流行起来.

顺便说一句,Java并不是与其他代码库接口最简单的东西(JNI相当笨拙),但这并没有阻止它获得思想共享.IMO接口论证很重要 - 嵌入的简易性并没有损害Python - 但是这个论点只有适度的权重,因为并非所有应用程序都需要这种能力.此外,Smalltalk的后续版本确实解决了这个问题.

大多数主要的smalltalk实现(VisualWorks,VisualAge等)的类库很大,并且具有相当陡峭的学习曲线的声誉.Smalltalk中的大多数关键功能都隐藏在类库中的某个地方,甚至是流和集合等基本内容.语言范式对于不熟悉它的人来说也是一种文化冲击,浏览器呈现的程序的零碎视图与大多数人习惯的完全不同.

总体效果是,Smalltalk因难以学习而获得(有些当之无愧)的声誉; 成为一名非常精通的Smalltalk程序员需要花费大量的时间和精力.Ruby和Python更容易学习,并且可以让新程序员快速掌握.

从历史上看,主流的Smalltalk实现非常昂贵,并且需要使用奇特的硬件来运行,这可以从1983年的net.lang.st80发布.Windows 3.1,NT和'95以及OS/2是主流硬件上的第一个大众市场操作系统,能够支持具有良好本机系统集成的Smalltalk实现.以前,Mac或工作站硬件是能够有效运行Smalltalk的最便宜的平台.一些实现(特别是Digitalk)很好地支持了PC操作系统并且确实成功地获得了一些牵引力.

但是,OS/2从未如此成功,Windows直到20世纪90年代中期才获得主流认可.不幸的是,这恰好与作为平台的Web的兴起和Java背后的大规模营销推动相吻合.在20世纪90年代后期,Java抓住了大部分的思想共享,使Smalltalk成为了一个同样的人.

Ruby和Python在更传统的工具链中工作,并没有与特定的开发环境紧密耦合.虽然我使用的Smalltalk IDE已经足够好了,但我使用PythonWin进行Python开发很大程度上是因为它有一个很好的编辑器,它具有语法高亮功能并且不会出现问题.

但是,Smalltalk被设计用于IDE(事实上,Smalltalk是原始的图形IDE),并且仍然具有一些不被其他系统复制的好功能.使用突出显示和"显示"测试代码仍然是我在Python IDE中从未见过的非常好的功能,尽管我不能代表Ruby.

Smalltalk来到网络应用方面有点迟.像VisualWave这样早期的努力从来都不是非常成功,直到Seaside出现了一个体面的Web框架才得到Smalltalk圈子的认可.与此同时,Java EE已经有了一个完整的验收生命周期,从狂热的粉丝们开始推广它,最后变得厌倦并转向Ruby; -

具有讽刺意味的是,Seaside开始在认知中获得一点思想,所以我们可能会发现Smalltalk骑了这个重新流行起来.

话虽如此,一旦你弄清楚如何驾驶它,Smalltalk就是一个非常好的系统.



1> ConcernedOfT..:

我更像是Python用户而不是Ruby用户,但是出于同样的原因,同样的事情也适用于Ruby.

Smalltalk的体系结构有点孤立,而Python和Ruby是从头开始构建的,以便于集成.Smalltalk从未真正获得过Python和Ruby所拥有的混合应用程序支持,因此'smalltalk作为嵌入式脚本语言'的概念从未流行起来.

顺便说一句,Java并不是与其他代码库接口最简单的东西(JNI相当笨拙),但这并没有阻止它获得思想共享.IMO接口论证很重要 - 嵌入的简易性并没有损害Python - 但是这个论点只有适度的权重,因为并非所有应用程序都需要这种能力.此外,Smalltalk的后续版本确实解决了这个问题.

大多数主要的smalltalk实现(VisualWorks,VisualAge等)的类库很大,并且具有相当陡峭的学习曲线的声誉.Smalltalk中的大多数关键功能都隐藏在类库中的某个地方,甚至是流和集合等基本内容.语言范式对于不熟悉它的人来说也是一种文化冲击,浏览器呈现的程序的零碎视图与大多数人习惯的完全不同.

总体效果是,Smalltalk因难以学习而获得(有些当之无愧)的声誉; 成为一名非常精通的Smalltalk程序员需要花费大量的时间和精力.Ruby和Python更容易学习,并且可以让新程序员快速掌握.

从历史上看,主流的Smalltalk实现非常昂贵,并且需要使用奇特的硬件来运行,这可以从1983年的net.lang.st80发布.Windows 3.1,NT和'95以及OS/2是主流硬件上的第一个大众市场操作系统,能够支持具有良好本机系统集成的Smalltalk实现.以前,Mac或工作站硬件是能够有效运行Smalltalk的最便宜的平台.一些实现(特别是Digitalk)很好地支持了PC操作系统并且确实成功地获得了一些牵引力.

但是,OS/2从未如此成功,Windows直到20世纪90年代中期才获得主流认可.不幸的是,这恰好与作为平台的Web的兴起和Java背后的大规模营销推动相吻合.在20世纪90年代后期,Java抓住了大部分的思想共享,使Smalltalk成为了一个同样的人.

Ruby和Python在更传统的工具链中工作,并没有与特定的开发环境紧密耦合.虽然我使用的Smalltalk IDE已经足够好了,但我使用PythonWin进行Python开发很大程度上是因为它有一个很好的编辑器,它具有语法高亮功能并且不会出现问题.

但是,Smalltalk被设计用于IDE(事实上,Smalltalk是原始的图形IDE),并且仍然具有一些不被其他系统复制的好功能.使用突出显示和"显示"测试代码仍然是我在Python IDE中从未见过的非常好的功能,尽管我不能代表Ruby.

Smalltalk来到网络应用方面有点迟.像VisualWave这样早期的努力从来都不是非常成功,直到Seaside出现了一个体面的Web框架才得到Smalltalk圈子的认可.与此同时,Java EE已经有了一个完整的验收生命周期,从狂热的粉丝们开始推广它,最后变得厌倦并转向Ruby; -

具有讽刺意味的是,Seaside开始在认知中获得一点思想,所以我们可能会发现Smalltalk骑了这个重新流行起来.

话虽如此,一旦你弄清楚如何驾驶它,Smalltalk就是一个非常好的系统.


由于类库的大小,VW和VA Smalltalk曾经因陡峭的学习曲线而闻名.这在当时被广泛认可.我从一个旧的DOS版本的Digitalk Smalltalk/V中学到了Smalltalk,它有一个小得多的类库.它的手册大小与PP Ruby书大小相同,就像那本书一样,类库参考大约占总页数的一半.但是,VW和VA的类库要大得多.

2> 小智..:

当我早上离开家去上班时,我经常会挣扎着决定从我的车道左转或右转(我住在街道中间).无论哪种方式都会让我到达目的地.一种方式引导我到高速公路,根据交通情况,可能会让我最快到办公室.至少部分时间我开得非常快,我很有可能在上班的路上看到一两个漂亮的女孩:-)

另一种方式让我可以沿着一条非常迷人,多风的后面道路行进,并有完整的树木覆盖.这条道路非常令人愉快,而且这两种方法肯定更有趣,虽然这意味着我会比我走高速公路后到办公室.每种方式都有其优点.在我匆忙的日子里,我会经常走高速公路,虽然我可能遇到交通,但我也增加了发生事故的机会(如果我不小心匆忙).其他日子我可以选择木质路径,开车,欣赏风景,意识到我迟到了.我可能会尝试加快速度,提高自己获得机票或造成事故的机会.

两种方式都不比另一方好.他们每个人都有自己的利益和风险,每个人都会实现我的目标.


哪种语言有更漂亮的女孩?
查理:这就是禅宗:)
哪一个是州际公路,哪个是树木覆盖的多风路?大声笑

3> Jonke..:

我认为你的问题有点遗漏了这一点. 不应该选择,你应该学习它们!

如果你真的能够选择下一个框架(vm,基础设施),那么你需要决定使用什么,并且可以从你的应用程序的意图来看,从优缺点中提出具体问题.

我曾经使用过smalltalk(喜欢它)和ruby(喜欢它).

在家里或开源项目中,我可以使用我喜欢的每种语言,但在工作时我必须采用.

我开始使用ruby(在工作中),因为我们需要一些脚本语言,在solaris,linux和windows(98,2000,xp)下表现得或多或少.当时Ruby对于普通乔来说是未知的,并且没有任何轨道.但它很容易卖给所有参与者.

(为什么不是python?真相?我曾经花了一个星期的时间寻找一个错误,当一个终端将我的空间转换为一个标签并且打算弄乱了)时发生的错误.

所以人们开始越来越多地使用红宝石编码,因为它非常轻松,享受而不是天空中的云.

保罗格雷厄姆总结了这一点

当然,大多数人都不会根据自己的优点选择编程语言.大多数程序员被告知其他人使用的语言.

为了吸引黑客,语言必须适合编写他们想要编写的程序.这或许意外地意味着它必须有利于编写一次性程序.

当在Lisp的土地上尝试用smalltalk替换LISP时

Ruby的图书馆,社区和动力都很好

因此,如果LISP仍然比Ruby更强大,为什么不使用LISP呢?对LISP编程的典型反对意见是:

    没有足够的图书馆.

    我们不能聘请LISP程序员.

    在过去的20年里,LISP无处可去.

这些并非压倒性的反对意见,但它们当然值得考虑.

现在,在强大的语言和流行的语言之间做出选择,选择强大的语言可能是非常有意义的.但如果力量的差异很小,那么受欢迎会有各种各样的好处.2005年,在选择LISP而不是Ruby之前,我会想很久很难.如果我需要优化的代码,或者作为完整编译器的宏,我可能只会这样做.


咳,"过去20年"?!?!我想你的意思是"过去的51年".:-)
@DigitalRoss是的,如果你忽略了诸如continuation,multimethods,macros,tail call optimisations之类的东西,那就是我的头脑.

4> 小智..:

我会说相反:Smalltalk语法是最简单和最强大的编程语言语法之一.


只想说阿门!

5> 小智..:

这些语言非常相似.解释这个问题的浅薄方法是将Ruby称为Smalltalk封面乐队.更合理的解释是,Smalltalk的封闭系统隔离了它,而Ruby参与Unix生态学以及从太阳下的每种语言中挪用特征的习惯使它具有无限温和的采用曲线,并且与Git等kickass工具轻松集成.

Giles Bowkett



6> Charlie Flow..:

猜猜是谁说的?(引用很接近,也许并不准确):"我一直以为Smalltalk会击败Java.我只是不知道它是否会被称为'Ruby'."

击鼓 ....

...

答案是肯特贝克



7> Simon Knight..:

Stephane Ducasse在这里有一些很棒的Smalltalk书籍:

http://stephane.ducasse.free.fr/FreeBooks.html

因此,尽管Smalltalk社区并不像Ruby和Rails社区那样多产,但仍然有一些很大的帮助.



8> Michael East..:

Ruby拥有Smalltalk的功能是什么?

主要平台(IronRuby和jRuby)提供的大量现有支持,丰富了图书馆的集合

像戴夫·托马斯这样的传教士多年来一直在全国各地巡回演讲,传播他们语言的福音.我在Java会议上看到Dave 说他不懂Java而且他更喜欢Ruby.

书架上现有的强大房地产

Ruby的创建者曾表示他会考虑程序员:Ruby的语法似乎具有这种禅宗的吸引力.这很难确定,但似乎激起了粉丝们的兴趣.

像Giles 这样富有创意,充满活力的演示文稿,以及获得大家共享

我认为你的观点很好.正如朋友曾经说过的那样,Ruby可能是"新瓶中的旧酒",与Smalltalk相比.但有时新瓶子很重要.葡萄酒必须在正确的时间出现在正确的地方.


当然,我发现珍惜"书架上强大的,当前的房地产"是一种没有生动,动态环境的复杂语言的惩罚.当我用C++编写代码时,我的书架上摆满了各种书籍.转移到Smalltalk(通过Ruby)后,我不会错过它们.依靠IDE本身获得最多的指导,我很少将图像留给快速谷歌搜索,并且通过权力的游戏系列将一些货架化的房地产高档化;)

9> Bob Jarvis -..:

甘拜下风.我花了一年时间检查Ruby并做了一些小项目,看看我喜欢它.我想我是一个Smalltalk偏执狂,因为每次我坐下来与Ruby合作我都会叹气并且想"我真的宁愿在Smalltalk中这样做".最后我放弃了,回到了Smalltalk.现在我更快乐了.更快乐的是.

当然这引出了一个问题,"为什么?".没有特别的顺序:

    因为IDE吹走了我曾经使用过的任何东西.这包括从IBM大型机上的ISPF到Microsoft的Visual(.*)的一堆平台,包括Visual Basic 4-6,Visual C++(各种化身),Borland的Turbo Pascal和后代(例如Delphi)等东西,以及DEC的东西.字符模式和X-Windows下的机器.

    因为图像是一个美丽的居住地.我可以在那里找到我想要的东西.如果我无法弄清楚如何做某事,我知道图像中的某个地方就是我要做的事情的一个例子 - 我所要做的就是找到它直到找到它.并且它是自我记录的 - 如果你想看到某些东西如何工作的细节,你只需在你感兴趣的类上打开一个浏览器,看看方法,它是如何工作的.(好吧,最终你会点击一个叫原语的东西,然后它就是"这里有龙",但它通常可以从上下文中理解).在Ruby/C++/C中可以做类似的事情,但它并不容易.容易更好.

    语言最小且一致.三种消息 - 一元,二元和关键字.这也描述了执行的优先级 - 首先是一元消息,然后是二进制消息,然后是关键字消息.使用括号帮助解决问题.Dang语法很少,真的 - 这些都是通过消息发送完成的.(好吧,赋值不是消息发送,它是一个运算符.所以是'return'运算符(^).块由方括号对([])包围.可能是其中一个或两个"魔术"位,但是很少...).

    块.是的,我知道,他们在Ruby(以及其他人)中存在,但是,它实际上无法在不使用它们的情况下在Smalltalk中编程.你被迫学习如何使用它们.有时被迫是好的.

    面向对象的编程没有妥协 - 或者替代方案.你不能假装自己在做"物体",同时还要做同样的旧事.

    因为它会拉伸你的大脑.我们已经习惯的舒适结构(if-then-else,do-while,for(;;)等)不再存在,所以你必须学习新的东西.所有上述(以及更多)都有等价物,但你必须学会​​以不同的方式思考.不同是好的.

另一方面,这可能只是一个自大型机统治地球以来一直在编程的人的乱像,我们不得不步行五英里通过暴风雪,上坡两路上行,电脑用甜甜圈记忆.我没有反对Ruby/Java/C/C++ /,它们在上下文中都很有用,但是给我Smalltalk或者给我......好吧,也许我应该学习Lisp或Scheme或...... :-)



10> Andy Dent..:

Smalltalk:人们转发ifTrue:[think] ifFalse:[not thinking]

Ruby:除非思考倒退,否则人们会认为是前锋

1)Smalltalk的消息类似RPN的控制流程就像Lisp一样 - 它是常规的,但很酷但人们很奇怪.

2)Ruby允许人们使用人们说话的惯用语言来编写代码 - 除非有理由不这样做.

更新重写了Smalltalk示例实际上是更合法的代码..


英语可能是表达编程指令的最糟糕方式之一.我的意思是它引起了人们之间的混淆,更不用说电脑了.好吗?谁应该做?什么?此外,您的ruby代码没有任何意义,也无效.应该是:Ruby:people.think_forwards除非people.think_backwards?而SmallTalk应该是:Smalltalk :(人们认为_forwards?)ifTrue:[people think_forwards])
@donalbain,我并不是说这些是字面编程语句,而是指示语句顺序.当我写回复时,我认为这是相当明显的.
您还可以添加一个名为除非的方法:aBlock来自Kernel-Methods类的BlockClosure类,它将评估aBlock和ifTrue:评估调用块.

11> coder1..:

Ruby是目前的流行语言.现在推销使用它构建的软件比70年代开发的语言更容易.


而我的评论与发展无关.
对不起,当我累了的时候,我常常误读,所以我不得不把我的假期时间告诉我欺负的人.

12> 小智..:

社区!Ruby,特别是Rails拥有如此优秀的社区.当搞乱smalltalk时,似乎没有关于Smalltalk的屏幕演员,文章,博客文章等.



13> dbr..:

你在第一行回答了这个问题:"Ruby越来越受欢迎"

Ruby 有很多有趣的模块,项目等.

如果你在Ruby中做某事有困难,那么在某处寻求帮助将是微不足道的.

Ruby现在安装在很多计算机上(默认包含在OS X上,很多Linux发行版,还有很好的Windows安装程序) - 我没有看到在我使用的任何机器上默认安装了smalltalk.

我会说一种语言是否优于另一种语言是无关紧要的..作为一个例子,PHP可能不是有史以来"最好的"语言,但我仍然会考虑使用Ruby on Rails(一种"更好"的创建工具)网站)因为它如此普遍.

基本上,语言的具体优点和缺点远不如周围的一切 - 即社区.



14> Sean DeNigri..:

Ruby(或任何其他语言)比Smalltalk(或任何其他语言)更受欢迎,因为我们生活在一个混乱的世界中.以机智:

来自戴夫·托马斯本人,"[关于如何在十分钟内建立一个博客"的视频之后...... Ruby从一个不错的小利基语言变成了'一种你在其中编写Rails应用程序的语言'"(Ruby Conference) 2010年主题演讲).

早期的Smalltalk供应商收费令人望而却步

Smalltalk,因为它是30年前发明的(超过它的时间),许多人认为它是一种古老的"死"语言(如FORTRAN)

公司认为Smalltalk具有竞争优势,因此他们隐藏了它的用途

虽然OO功能的语言类似,但Smalltalk的杀手优势是实时,开放的环境(被误解的"图像").在您查看Smalltalk编程示例后,争论就结束了.



15> Simon Knight..:

对我而言,它不仅仅是Ruby所拥有的,而是Ruby所没有的.而它没有的是对VM和完整环境的需求.

Smalltalk很棒 - 它是我学习OO概念的地方,但为了方便使用,我选择了Ruby.我可以在我最喜欢的编辑器中编写Ruby代码并从命令行运行它.

所以,对我而言,这就是我选择Ruby over Smalltalk的原因.


任何smalltalk平台都允许您在您喜欢的编辑器中编写smalltalk代码.但如果你想与现场世界脱节,这是你的选择.只要知道你这样做会损失大约90%的生产力.
好吧,它也没有一个伟大的Web框架.Rails还可以,但它不是Seaside

16> Avdi..:

我想每个与Ruby合作过一段时间的人都会认识到它对Smalltalk的沉重负债.作为其中一个人,我喜欢Ruby over Smalltalk?我认为从严格的语言角度来看,这是糖.Ruby故意是一种非常语法化的语言,而Smalltalk是一种非常语法的语言.Ruby本质上是具有Perlish语法糖的Smalltalk对象模型.我碰巧喜欢糖,并发现它使编程更有趣.


我喜欢smalltalk,因为我可以随时发明并使用自己的语法糖.如果您已经可以用最少的语法完成所有事情,那就不需要糖了.

17> Dafydd Rees..:

你可以很容易地找到一份Ruby工作.虽然我真的很喜欢Smalltalk,但几乎不可能进入Smalltalk利基市场.其中有一些工作,但如果你在它受欢迎时没有进入它现在几乎是不可能的.

所有其他原因都显得微不足道,因为你需要花费大量时间,专注于真正的工作来正确学习语言.如果你不是独立富有的,那么最好的方法就是在工作中接触它.

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有