84

我的问题很简单!

  1. 如果你有时间,你会开始学习 Smalltalk 吗?为什么?为什么不?
  2. 你已经知道 Smalltalk 了吗?为什么推荐 Smalltalk?为什么不?

就我个人而言,我是一名 Ruby on Rails 程序员,我非常喜欢它。但是,我正在考虑 Smalltalk,因为我阅读了各种博客,并且有些人称 Ruby 为“Smalltalk Light”之类的东西。我对 Smalltalk 感兴趣的第二个原因是Seaside

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

编辑:实际上,Smalltalk/Seaside 最让我兴奋的是 WebDevRadio 的以下剧集:第 52 集:海边的 Randal Schwartz(除其他外)

4

20 回答 20

62

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

学习 Smalltalk 的理由:

  • 这是一个非常非常好的编程环境。一旦你对它有所了解(对于习惯于 C++ 或 Java 的人来说,这往往是一种文化冲击),你会发现它是一个非常好的工作环境。即使是像我使用的旧 Digitalk 系统使用起来非常愉快。许多老的 XP 和 OO 大师类型,如Kent BeckMartin Fowler当年在 Smalltalk 上崭露头角,偶尔可以听到在公共场合向往美好的过去(感谢 Frank Shearer 的引用,+1)-敏捷开发起源于这个平台。

  • 它是历史上最高效的开发平台之一。

  • 存在几个成熟的实现,并且有一个惊人的大代码库。曾几何时,它在金融市场领域变得相当流行,开发人员的生产力和上市时间非常重要。直到 1990 年代中期,如果您想要一种适合应用程序开发的商业支持的高级语言,它或多或少是唯一的游戏(LISP 可能除外)。

  • 部署很容易 - 只需将图像文件放到适当的目录中。

  • 这不是一个真正的原因,但四本书帮在他们的很多例子中都使用了 Smalltalk。

不学习 Smalltalk 的原因:

  • 这是一个利基市场。你可能很难找到工作。但是,如果您正在生产某种类型的.com 应用程序并拥有服务器,这可能不是问题。

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

  • 它往往不能很好地与传统的源代码控制系统配合使用(至少在我使用它时的 90 年代中期)。这可能会或可能不会仍然如此。

  • 它有点与世隔绝,喜欢自己玩耍。Python 或 Ruby 是为从头开始集成而构建的,并且往往更加混杂,因此更容易与 3rd 方软件集成。然而,其他各种更主流的系统或多或少地受到这种孤立性的影响,这似乎并没有过多地阻碍它们的使用。

于 2008-09-29T15:51:53.630 回答
47

好吧,既然你提到了我的名字,我觉得我应该插话。

正如我在那次播客采访中所说的那样,正如我在我的博客http://MethodsAndMessages.vox.com/中反复证明的那样,这是“ smalltalk 的一年”。在过去的十个月里进行了 Smalltalk 宣传,我可以看到它确实在发生。越来越多的客户转向 Smalltalk 和 Seaside,Smalltalk 供应商都在努力抓住这一新的关注点。更多更大的 Smalltalk 会议正在计划中。更多招聘信息正在发布。正在发布更多博客文章。

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

编辑

好吧,几年后,我现在推荐Dart。它是一种由 Google 发明的伟大语言,但现在归 ECMA 委员会所有。它以 node.js 风格运行服务器端,但也通过转换为 JavaScript 在现代浏览器中运行客户端。很多好书、博客、帮助频道、IDE 支持、公共 live pastebin。我认为它肯定有腿……足以让我编写课件来现场或在线教授它,而且我很确定我的作品中有一两本书。并且 Gilad Bracha,一个古老的 Smalltalker 是设计的主要贡献者,所以 Dart 中有很多 Smalltalk。

于 2008-09-29T22:23:01.677 回答
31

Smalltalk 是一门很好学的语言,最棒的是它只需要一天的时间就可以完成。它不仅仅是一种学术语言。人们正在构建处理数十亿美元的庞大、可扩展、可复制的应用程序。他们只是很少谈论它。例如,参见GemStone 和 Orient Overseas Container Lines:航运业案例研究

Seaside 是学习 Smalltalk 的一个很好的理由,但我认为您不会发现它比 Rails 好几个数量级。

让我信服的是宝石。我真的很喜欢 Gemstone 的 GLASS(GemStone、Linux、Apache、Smalltalk、Seaside)。其中最重要的部分是 GemStone,它主要为您处理所有对象持久性,而您无需考虑它。看到他们的一些演示并听到人们使用 GemStone 所做的事情,我重新认识了“大型应用程序”的含义。

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

于 2008-09-29T22:27:49.247 回答
16

> 找不到不花钱的 Smalltalk 开发环境

谷歌- 免费的小谈话

Cincom Smalltalk、Squeak、GNU Smalltalk

于 2008-09-29T15:11:43.117 回答
15

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

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

i < 60
   ifTrue: [ self walk ]

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

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

交互式调试器真正将 Smalltalk 与 Ruby 分开。

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

于 2008-09-29T15:15:13.623 回答
10

奈杰尔,我引用的一句话是:

虽然我已经很久没有用它做任何事情了,但我提名 Smalltalk,但我仍然没有遇到过像它能够将思想转化为计算机代码的东西。这不仅仅是语言:它是美妙的浏览器环境、库以及编写清晰、设计良好的代码的文化,就像其他任何东西都可以做出意大利面条一样快。当 JavaOne 的参与者称赞 Java 比其他任何东西都更有效率时,我需要一个牛皮纸袋。哦,好吧,回到整理我的类路径...——Martin Fowler(软件开发杂志,2001 年 1 月)

我在这里找到了。

于 2008-09-30T13:17:38.267 回答
10

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

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

在我的 Java 日常工作中,我受困于文件、泛型、IDE 之类的 Eclipse,它们的生产力比任何 ST IDE 都要低几个数量级。我唯一一次提前完成开发时使用的是 ST。事实上,它非常高效,我们得到了如此多的重用,我不得不转移到另一个项目,因为我无事可做!(好吧,也许我可以花时间学习估计......)

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

克里斯·布鲁克斯

于 2008-10-14T11:41:21.827 回答
9

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

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

不过,Lisp 的数学基础可能更加简洁。

问候

PS:其实我建议两个都学!

于 2008-12-23T00:53:28.933 回答
8

我不知道鲁比..

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

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

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

于 2008-09-29T15:09:13.030 回答
7

我完全在你的鞋子里。我正在使用 RoR 并研究 Smalltalk 领域。以下是我认为重要的一些优点和缺点:

优点:

  • 成熟稳定的环境
  • 快速的开发周期
  • 让你想得更多,写得更少

缺点:

  • 需要不同的思维
  • 还是不太明白

我是如何了解 Smalltalk 的,这很有趣。在搜索 Lisp 和 Erlang 的东西时,谷歌搜索结果中不断出现的就是这一件事。有一天,我检查了一下,对漂亮的 windows 环境感到惊讶。片刻之后,我找到了 Aida/Web 框架。我被迷住了,并开始使用这个框架通过 Web 开发来学习 Smalltalk。

仍然不完全在那里,但它太有趣了,我简直不能坐以待毙...... :-) 我又玩得很开心了。

于 2009-01-16T12:05:43.187 回答
5

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

另一方面,如果您是业余爱好者,并且想进行考古挖掘,那么我建议您花一些时间通过研究 Alan Kay 来了解 smalltalk 的内容、时间、原因和方式。引人入胜的故事和令人难以置信的人(毕竟,他获得了转动奖)。然后也许玩一点吱吱声来感受这种语言。在此之后,您可能对块、闭包和面向对象的原则有了新的尊重/理解。

我知道并使用 Smalltalk,已经使用了大约 15 年,仍然在维护它,并且不会向朋友推荐 Smalltalk。为什么不?拥有并不断获得就业是一件好事。尽管您可以从 Smalltalk 中学到很多东西,但在当今这个时代,您不能轻易地将其转化为有报酬的工作。

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

于 2008-12-07T03:32:19.667 回答
5

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

如果您是 lisp 程序员,这可能不是真的。

于 2010-01-22T00:12:13.273 回答
4

当然,学习 Smalltalk!这是 2015 年,Smalltalk 再次崛起,这要归功于Pharo。法罗是免费的。Pharo 正在迅速发展成为一个强大的企业工具。在 4.0 版和即将推出的 5.0 版中,它在短短四年内已经成熟了很多!

然后是Amber,它是用于 Web 的 Smalltalk。它也是免费的并且发展迅速。

尽管Smalltalk 享有盛誉,但这不是你父亲的 Smalltalk。现代 Smalltalk 令人兴奋且充满希望。

确实,Smalltalk 的工作(还)并不多。但是,如果有足够多的人聚集到新的 Smalltalker 浪潮中,那么行业将适应它,我们将看到 Smalltalk 在商业中得到更广泛的采用。问题是,你有远见吗?

于 2015-11-25T21:24:23.823 回答
3

我在第一个研究生大学水平的面向对象编程课程(大约 1988 年)中学习了 Smalltalk。老师认为最好从“纯”面向对象语言开始,然后再转向更流行的语言(我们在学期末做了一点 C++)。

从这个角度来看,最好还是从纯 OO 开始,尽管现在我们有 Java 和 C#,它们都是“近乎纯”的 OO——足够接近,你可以忽略它们的非 OO 特性,并将自己限制在语言的 Pure-OO 子集中。

于 2008-09-29T15:05:32.290 回答
3

我已经做了几年软件工程师了。我听说有人多次提到 Smalltalk,而且 Smalltalk 从 1980 年左右就出现了,但它是一种似乎从未成为软件主流的语言。有点像 Objective C、CLIPS、PL/I 等——你可能听说过,但大多数人从未编程过。

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

于 2008-09-29T15:27:31.287 回答
3

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

为什么没有耐心的 Java 程序员需要学习 Smalltalk:

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

于 2010-08-04T17:24:31.207 回答
2

这个线程对我来说变得非常实际。我正在计划将软件迁移到 Web 应用程序。这是一个基于数据库的软件。我特别在检查替代品 1) Rails 2) Seaside

如果我能获得 Gemstone/S 作为数据库的数据,我也会考虑这一点。所以对我来说,这意味着我必须比以前学习 Smalltalk(更好)。因为这可能是我未来 15 年的工作。您会(并且不应该)长时间使用您不喜欢的软件;-)。我的印象是 Gemstone/S 是“杀手级”应用程序之一。但是对象的持久化仍然是一个非常困难的领域......

于 2009-12-30T07:40:30.203 回答
2

1)是的!学习一门语言总是好的。如果你要学习一门语言,那就让它成为一种强大的、有影响力的、可以轻松快速地学习的语言。

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

它是所有对象,一直向下。这使得工作方式非常一致。

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

控制结构通过向布尔类的实例发送获取消息来工作。

甚至匿名方法(代码块,又名块)也是对象。

一切都是通过向对象发送消息来完成的。语法可以贴在明信片上。

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

这对于明确概念非常有用,以至于英国的一所主要大学使用 Smalltalk 每年培训 5,000 人进行面向对象计算。

Squeak 5,刚刚发布。它从具有渐进式垃圾收集功能的新 Cog/Spur VM 中获得了显着的性能提升。

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

Squeak 5 即使在第一代 Raspberry Pi 上也能表现出色,并且在新的 5 美元 Raspberry Pi 零上快了近 50%。99 美元可以为您购买 Raspberry Pi 2、屏幕和机箱 - 运行成熟、功能齐全的 IDE。

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

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

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

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

Squeak 和 Pharo 为 MacOS、Windows 和 Linux 提供了一次写入、随处运行的工具。(也可能是 RiscOS)。

Dolphin Smalltalk 以原生 Windows 外观和感觉为目标,让您可以编译已完成工作的封闭 .exe 文件以分发给最终用户。供应商对 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-code 帮助很大。

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

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

于 2015-11-28T19:59:42.313 回答
1

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

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

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

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

如果你只是想学点不一样的东西,Smalltalk 不失为一个不错的选择。我还建议 Common Lisp,其他人无疑会有其他建议(你现在能得到一个好的 Forth 系统吗?)。

于 2008-09-29T15:31:50.683 回答
-5

是的,我对此很感兴趣。已经尝试过一次,但找不到一个不花钱的 Smalltalk 开发环境。

于 2008-09-29T15:08:02.347 回答