为什么使用Ruby而不是Smalltalk?

Ruby正在变得stream行起来 ,主要来自Ruby on Rails的影响力,但感觉就像目前正处于青春期。 Ruby和Smalltalk之间有很多相似之处 – 磁悬浮就是一个certificate。 尽pipe有一个更不寻常的语法,Smalltalk具有Ruby(如果不是更多)面向对象的美丽。

从我读到的,Smalltalk似乎已经打败了Ruby:

  • 成熟度(在七十年代发展)
  • 稳定性
  • 商业支持
  • 分布式源代码pipe理 (了解代码结构,而不仅仅是文本区分)
  • VM的几个实现
  • 跨平台支持
  • 海边网页框架作为Rails的强大替代品

Ruby似乎正在重新发明轮子。 那么,为什么Ruby开发人员不使用SmallTalk? Ruby有什么Smalltalk不?

为了logging:我是一个Ruby小伙子,在Smalltalk方面经验不多,但我开始怀疑为什么。


编辑:我认为,脚本的易于解决问题已经由GNU Smalltalk解决 。 据我所知,这允许你在普通的旧文本文件中编写smalltalk,而不再需要在Smalltalk IDE中。 然后你可以运行你的脚本 :

gst smalltalk_file 

我比Python用户更像Pythonista,但是出于同样的原因,Ruby也是如此。

  • Smalltalk的架构有些孤岛,而Python和Ruby则是从头开始构build的,以促进整合。 Smalltalk从来没有真正以Python和Ruby的方式获得混合应用程序支持,所以“smalltalk作为embedded式脚本语言”这个概念从来没有涉足过。

    另外,Java并不是与其他代码库(JNI相当笨拙)交互的最简单的东西,但是这并不能阻止它们获得共享。 国际海事组织的接口参数是重要的 – 易于embedded并没有伤害Python – 但这个论点只适用于中等重量,因为并不是所有的应用程序都需要这种能力。 此外,更高版本的Smalltalk确实大大解决了这个问题。

  • 大多数主要的smalltalk实现(VisualWorks,VisualAge等)的类库很大,并且学习曲线相当陡峭。 Smalltalk中的大多数关键function都隐藏在类库的某个地方,甚至是stream和集合等基本的东西。 语言范式也是不熟悉它的人的文化冲击,浏览器提供的程序零碎的观点与大多数人习以为常的是截然不同的。

    整体效果是Smalltalk因为难以学习而获得了(应有的)声望。 需要相当多的时间和精力才能成为一名精通Smalltalk的程序员。 Ruby和Python比较容易学习,并且可以让新程序员加快速度。

  • 从历史上看,主stream的Smalltalk实现相当昂贵,需要运行exception的硬件,可以从这个net.lang.st80从1983年发布 。 Windows 3.1,NT和'95和OS / 2是第一个主stream硬件上的大众市场操作系统,能够支持Smalltalk实现与体面的本地系统集成。 以前,Mac或工作站硬件是能够有效运行Smalltalk的最便宜的平台。 一些实现(特别是Digitalk)很好地支持PC操作系统,并取得了一些成功。

    然而,OS / 2从来没有取得过成功,直到20世纪90年代中期,Windows才获得主stream认可。 不幸的是,这与Web作为一个平台的兴起以及Java背后的一个巨大的市场推动相吻合。 Java在20世纪90年代后半期抓住了大部分的思想共享,使得Smalltalk有点像一个奔跑。

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

    然而,Smalltalk被devise为与IDE一起使用(实际上,Smalltalk是原始的graphics化IDE),并且仍然具有一些其他系统不能复制的好function。 使用突出显示和“显示”testing代码仍然是我在Python IDE中从未见过的一个非常好的function,尽pipe我不能说Ruby。

  • Smalltalk在networking应用程序聚会上迟了一些。 像VisualWave这样的早期工作从来没有取得过如此成功,直到Seaside出现,一个体面的Web框架才被Smalltalk界所接受。 与此同时,Java EE已经完成了一个完整的接受生命周期,从粉丝们的推销开始,最终感到无聊,并转向Ruby; – }

    具有讽刺意味的是,Seaside已经开始在认知领域中占据一席之地,所以我们可能会发现Smalltalk骑着这种循环回到普及之中。

话虽如此,一旦你研究出如何驱动它,Smalltalk是一个非常好的系统。

当我早上离家去上class的时候,我经常为了左转或右转(我住在街道中间)而做出决定。 无论哪种方式将让我到我的目的地。 有一种方法可以把我带到高速公路上,这个高速公路可能会让我到达最快的办公室。 我至less在部分路上开得非常快,而且我有很大的机会在上class途中看到一两个漂亮的女孩.-)

另一种方式是让我沿着一个完整的树木覆盖的迷人,多风的后面的道路。 这条路是相当愉快的,这两种方法肯定是更有趣,但这意味着我将比我走高速公路的时候晚。 每种方式都有其优点。 在匆忙的日子里,虽然我可能会遇上交通堵塞,但我通常会坐高速公路,如果我不小心的话,我也会增加偶然发生事故的机会。 其他的日子,我可以select木质的path,开车,欣赏风景,意识到我迟到了。 我可能会加快速度,提高自己买机票或造成事故的机会。

两种方式都不如其他方式更好。 他们每个人都有自己的好处和风险,每个人都会让我达到自己的目标。

我认为你的问题有点不重要。 不应该select,你应该学习它们两个!

如果你确实可以select下一个框架(vm,基础设施),那么你需要决定使用什么,并且可以从你的应用程序所要做的事情的angular度来询问具体的问题。

我使用了smalltalk(爱它)和ruby(爱它)。

在家或开源项目中,我可以使用我喜欢的任何语言,但是在做工作时我必须采用。

我开始使用ruby(在工作),因为我们需要一些脚本语言,在solaris,linux和windows(98,2000,xp)下,它们的performance差不多。 当时Ruby是一般人所不知道的,并没有任何铁轨。 但是,向所有参与者推销都很容易。

(为什么不是python?事实呢?我曾经花了一个星期的时间寻找一个bug,当一个terminal将我的空间转换为一个标签时,发生了一个错误。

所以人们开始越来越多地使用ruby代码,因为它太轻松,享受而不是天上的云彩。

保罗·格雷厄姆总结

当然,大多数人不会仅仅根据自己的优点select编程语言。 大多数程序员被告知别人使用什么语言。

为了吸引黑客,一种语言必须适合写他们想写的程序。 这意味着,也许令人惊讶的是,编写一次性程序必须是好的。

而在Lisp的时候,试图用小叮当替代LISP

Ruby的图书馆,社区和势头都很好

所以如果LISP比Ruby更强大的话,为什么不使用LISP呢? 在LISP中对编程的典型反对意见是:

  1. 没有足够的图书馆。
  2. 我们不能雇用LISP程序员。
  3. LISP在过去的二十年中一直没有任何进展。

这些并不是绝对的反对意见,但它们当然值得考虑。

现在,在强大的语言和stream行的语言之间进行select,select强大的语言可能是非常有意义的。 但是,如果权力的差异很小,stream行就有种种好处。 在2005年之前,我会认真selectLISP而不是Ruby。 如果我需要优化的代码或者作为完整编译器的macros,我可能只会这样做。

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

语言是非常相似的。 解释这一点的浅薄的方法是把Ruby称为Smalltalk封面乐队。 更合理的解释是,Smalltalk的封闭系统将其隔离开来,而Ruby参与Unix的生态习惯和挪用太阳下每种语言的特性的习惯使得它具有无限柔和的采用曲线和与Git等kickass工具的轻松集成。

吉尔斯Bowkett

猜猜这是谁说的? (引用很接近,也许不是确切的):“我一直以为Smalltalk会打败Java,我不知道这是否会被称为'Ruby'。

击鼓 ….

答案是肯特·贝克

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

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

所以尽pipeSmalltalk社区并不像Ruby和Rails社区那样多产,但仍然有很多帮助。

Ruby有什么Smalltalk不?

  • 主要平台(IronRuby和jRuby)提供了大量的当前支持,丰富了这套图书馆
  • 多年来,戴夫·托马斯(Dave Thomas)这样的福音传教士一直在全国各地巡回传播他们的语言福音。 我曾在Java会议上见过戴夫,他说他不了解Java,而且他更喜欢Ruby。
  • 书架上强大的现有房地产
  • Ruby的创造者曾经说过,他认为程序员:Ruby的语法似乎有这个禅的吸引力。 这是很难牵制,但似乎激起了球迷。
  • 像Giles 这样的创意,dynamic的演示,以及这个赢得了思想分享的人

我认为你的观点是很好的。 正如一位朋友曾经说过的,Ruby可能是“相对于Smalltalk而言,是一瓶新酒”。 但有时新瓶很重要。 葡萄酒必须在正确的时间在正确的地方。

打败我。 我花了一年时间查看Ruby并做了一些小的项目,看看我是多么喜欢它。 我想我是一个Smalltalk偏执的人,因为每次我坐下来和Ruby一起工作的时候,我都会叹口气,想“我真的宁愿在Smalltalk上这样做”。 最后我放弃了,回到了Smalltalk。 现在我快乐了。 更快乐的是伙伴。

这当然会引起一个问题:“为什么?”。 没有特别的顺序:

  1. 因为IDE吹走了我曾经使用过的其他东西。 这包括IBM大型机上的ISPF到Microsoft的Visual(。*)的一系列平台,包括诸如Visual Basic 4-6,Visual C ++(各种版本),Borland的Turbo Pascal和后代(如Delphi),以及DEC机器在字符模式和X-Windows下。
  2. 因为形象是一个美丽的地方居住。 我可以在那里find我想要的东西。 如果我不知道如何去做,我知道图像中的某个地方就是我想要做的一个例子 – 我所要做的就是寻找,直到find它为止。 而且它是自我logging的 – 如果你想查看某些工作的细节,只需在你感兴趣的课程上打开一个浏览器,看看这个方法,这就是它的工作原理。 (好吧,最终你会碰到一个叫原始的东西,然后就是“这里有龙”,但是从上下文通常是可以理解的)。 在Ruby / C ++ / C中可以做类似的事情,但这并不容易。 容易更好。
  3. 语言是最小的和一致的。 三种消息 – 一元,二元和关键字。 这也描述了执行的优先级 – 首先是一元消息,然后是二进制消息,然后是关键字消息。 使用括号来帮助解决问题。 当然没有什么语法,这一切都是通过消息发送完成的。 (OK,赋值不是一个消息发送,它是一个操作符,所以是'return'操作符(^)。块被方括号对([])括起来,可能是其中的一个或两个“魔术”但是很less…)。
  4. 块。 是的,我知道,他们在Ruby(以及其他人)那里,但是这样做,你实际上不能使用Smalltalk来编程。 你不得不学习如何使用它们。 有时被迫是好的。
  5. 面向对象的编程没有妥协 – 或替代品,就此而言。 你不能假装你是在“做对象”,而仍然在做同样的事情。
  6. 因为它会拉伸你的大脑。 我们已经习惯了的舒适的结构(if-then-else,do-while,(;;)等等)不再存在,所以你必须学习新东西。 所有上述(以及更多)都有等价物,但是你将不得不学会以不同的方式思考。 不同的是好的。

另一方面,这可能只是一个从大型机统治地球的时代开始编程的人,我们不得不步行五英里去通过致盲的暴风雪,两面爬山,电脑用甜甜圈来记忆。 我对Ruby / Java / C / C ++ /没有任何反应,它们在上下文中都是有用的,但给我Smalltalk或者给我…好吧,也许我应该学习Lisp或Scheme或… 🙂

Smalltalk:人们转发如果真的:[思考] iffalse:[不想]

ruby:人们思考,除非思考倒退

1)Smalltalk类似RPN的消息控制stream程就像Lisp一样 – 它是有规律的,很酷但是很奇怪。

2)Ruby允许人们用人们习惯的方式来编写代码, 除非有理由不这么做。

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

Ruby是当前的stream行语言。 现在使用它开发的软件比70年代开发的语言更容易。

社区! Ruby和特别是Rails有这么好的社区。 在用小叮当搞乱的时候,似乎没有那么多关于Smalltalk的屏幕剧,文章,博客文章等等。

你在第一行中回答了这个问题:“Ruby正在变得stream行”

  • 很多有趣的模块,项目等基于Ruby。
  • 如果您在Ruby中执行某些操作时遇到困难,那么在某处寻求帮助将会很简单。
  • Ruby现在安装在很多计算机上(它在OS X上是默认包含的,许多Linux发行版,并且有很好的Windows安装程序) – 我没有在我使用的任何机器上默认安装了smalltalk。

我想说的是,其他语言是否优于另一种语言是无关紧要的。举个例子,PHP可能不是最好的语言,但是我仍然会考虑在Ruby on Rails上使用它(一个“更好”的工具来创build网站),因为它如此广泛。

基本上,一种语言的具体利弊远没有围绕它的一切重要 – 即社区。

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

  • 从戴夫·托马斯(Dave Thomas)自己,“在十分钟内如何构build一个博客”的video之后,Ruby从一个很好的小生境语言变成了一种“你写Rails应用程序的语言” 2010年主题演讲 )。
  • 早期的Smalltalk供应商收费过高
  • Smalltalk,因为它是在30年前被发明的(在它的时代之前),很多人都像老式的“死”的语言(比如FORTRAN)
  • 公司认为Smalltalk有这样一个竞争优势, 就是隐藏它的用途

虽然OO特性的语言是相似的,但Smalltalk的杀手优势是活的,开放的环境(被误解的“形象”)。 在看完Smalltalk中的这个编程例子之后 ,辩论就结束了。

对于我来说,Ruby并不是什么大事,但Ruby还没有。 而它没有的东西是需要一个虚拟机和完整的环境。

Smalltalk是伟大的 – 它是我学习面向对象概念的地方,但为了方便使用,我去了Ruby。 我可以在我最喜欢的编辑器中编写Ruby代码,并从命令行运行它。

所以,对我来说,这就是我selectRuby而不是Smalltalk的原因。

我认为每个与Ruby合作一段时间的人都认识到它对Smalltalk的沉重负债。 作为这些人之一,我比较喜欢Ruby on Smalltalk? 我从严格的语言angular度来看,就是糖。 Ruby是一个非常有语法含义的语言,而Smalltalk是一种非常简单的语言语言。 Ruby本质上是带有Perlish语法糖的Smalltalk对象模型。 我碰巧喜欢糖,发现它使编程更有趣。

你可以很容易地find一份工作,做Ruby。 虽然我真的很喜欢Smalltalk,但进入Smalltalk利基几乎是不可能的。 其中有解决方法,但是如果在受欢迎的时候没有进入,现在几乎是不可能的。

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

因为Smalltalk发行版的价格是1000美元的倍数,而Ruby是免费的。

Ruby是Smalltalk,因为阿拉伯数字是罗马数字。 相同的math,更简单的语法。

我做了一点Smalltalk – IDE是我记得的一件事情 – Ruby是否有良好的IDE支持?

使用Ruby,因为它可能有业务的腿,Smalltalk没有。

我可以从个人经验告诉你。 仍然使用Smalltalk,喜欢它,并使用了几个口味。 尽pipeSmalltalk是一门伟大的语言,而且是您提到的一切,但您不可能说服一般的CIO / CTO在一个新项目上使用Smalltalk。 当然,你甚至可能很难说服保守的CIO / CTO使用Ruby。 最后,如果你想获得持续的长期商业支持,并且有能力find可以支持你的系统的街上雇员,那么最后你必须非常小心。 例如,Smalltalk在90年代早期是一件非常重要的事情,IBM在90年代末投入巨资。 对于IBM Smalltalk将成为所有业务应用程序的下一个语言。 IBM把Smalltalk包括在其大型机系统中。 Java变得stream行起来,接pipe了市场,而Smalltalk成为了一个利基市场。 一年前IBM倾销了这个语言(他们的词汇是日落)。 另外,请看历史。 ParkPlace和Digitalk是Smalltalk舞台上的第一批主要商业伙伴,他们合并后倒闭了。

I love both Smalltalk and Ruby – but have found that Ruby is more applicable to what I do daily, and is closer to my heart (practically speaking). What does Ruby offer that Smalltalk doesn't?

  • Text-based scripting
  • Low implementation requirements (runs in more places)
  • Easier to learn and justify (Perl and Python programmers will have no trouble
  • Easier to move programs around – text files!
  • Interfaces well with native environment
  • Anywhere Java runs, jRuby runs…
  • Bigger and much more active community

Some have mentioned gst (GNU Smalltalk); the problems still hold.

Use whatever makes you more powerful and faster to beat your challenge.

For us , a little in house framework, we built in top of seaside is really our superpower.

I love the RoR community, it has the right attitude. That's very very valuable. But at the same time, technologically, seaside makes you stronger against more complicated problems.

You can do great seaside web apps using open-source stuff.

dabbledb was a sartup based on seaside and, hey! Avi sold it to twitter in june this year!

I say you don't need to wait for others to approve your initiative.

Just go for it. Make it done. Show us that works.

你不是一个人。 We are on the same boat.

Interesting perspective from Robert Martin (from RailsConf 2009): "What Killed Smalltalk Could Kill Ruby, Too"

I think part of the problem is the development-environment-is-the-runtime. This gives a lot of power, but it also presents a larger learning curve.

Here is a hello world tutorial.

This is very different from other languages where I just need to know how to open a text editor and copy and paste text, hit save, and run a compiler. I HAVE to know how to use the environment. That tutorial doesn't even show me how to create a basic program (which is likely more a fault of that tutorial) that I can run.

There is definately a higher cost of just getting things going than most other languages.

Most languages have some nice eye-catching code that they can show off. I haven't seen that with Smalltalk. I also think that there is some stigma to Smalltalk because it has been around so long and it is still relatively obscure.

I think the BIGGEST difference is that Ruby is much more similar to perl in terms of USEAGE. Smalltalk never got a foothold into the "scripting" languages.

The VM is really cool and I hope ruby will have something similar to it so we can treat everything on our OS that is written in ruby as object in memory space, however until then I simply enjoy Ruby's terse, short syntax, the ability to just write a tiny script and reuse it later. Ruby got all the advantages of perl and the OOP is much more similar to smalltalk than perl's OOP hack.

I would go further than Jonke's answer, and say there are now a large number of languages that have a very strong community, almost enough to suit every taste, and a subset of these have mainstream recognition (ie your manager will let you use them at work as well).

It's easy to learn the basics of a language, but to actually use it effectively you need to invest enough time to learn the platform and the tools, as well as the syntax and the idioms. IIRC, McConnell claims that it takes about three years to become truly proficient.

Given those things, it's hard to justify spending a lot of time on languages like LISP and Smalltalk, although they are interesting and perhaps educational to look at.

As a latecomer to discussion, the main problem with Smalltalk and Lisp is that you can't run them with CGI or FastCGI on shared hosting.

The unwashed masses are never going to use them if they need VPS or dedicated servers to use them. IMHO Seaside is superior to almost anything out ther, but will it run on Dreamhost or Webfaction?