Ruby正在变得越来越受欢迎,主要来自Ruby on Rails的影响,但感觉它正在挣扎于青春期.Ruby和Smalltalk之间有很多相似之处 - 磁悬浮是一个证明.尽管有一个更不寻常的语法,Smalltalk拥有所有(如果不是更多)Ruby的面向对象的美.
从我所看到的,Smalltalk似乎有Ruby击败:
看起来Ruby只是重新发明轮子.那么,为什么Ruby开发人员不使用SmallTalk?Ruby拥有Smalltalk的不是什么?
记录:我是一个对Smalltalk几乎没有经验的Ruby人,但我开始想知道为什么.
编辑:我认为GNU Smalltalk已经解决了易于编写脚本的问题.据我了解,这允许您在常规旧文本文件中编写smalltalk,并且您不再需要在Smalltalk IDE中.然后,您可以运行脚本:
gst smalltalk_file
Run Code Online (Sandbox Code Playgroud) 我的问题很简单!
就个人而言,我是Ruby on Rails程序员,我非常喜欢它.但是,我正在考虑Smalltalk,因为我阅读了各种博客,有些人正在将Ruby称为"Smalltalk Light".我对Smalltalk感兴趣的第二个原因是Seaside.
也许有人之前做过同样的过渡?
编辑:实际上,让我对Smalltalk/Seaside最感兴趣的是下面的WebDevRadio剧集:第52集:Randal Schwartz on Seaside(除其他外)
我主要是Java EE开发人员.我被要求探讨在即将到来的网络项目中使用Smalltalk/Seaside的可能性.可以想象,这导致了许多有趣的问题.
一组开发人员如何使用Smalltalk/Seaside实现软件版本控制和版本控制.你可以使用Subversion或Git吗?
根据我的理解,Smalltalk使用图像而不是将每个类保存到它自己的文件中.这会如何影响管理源代码修订的能力,特别是在整个团队中?
非常感谢您提供的任何见解!
Seaside 刚刚发布了即将推出的3.0版本的候选版本,所以它再次出现在我的雷达上.由于我正在考虑将来用于未来项目的Web框架,我想知道是否需要考虑这个问题.唉,Seaside的大部分宣传都来自'07,这可能是网络的一代或两代.所以我希望这里的社区可以回答一些问题
当您的大部分工作流程主要使用HTML时,基于延续的框架非常好,例如表单提交.对于今天的JavaScript环境来说,这几乎不值得.
Squeak能够处理合理的工作量吗?从这里和其他地方的其他问题来看,似乎对于适当的扩展,另一种实现(Gemstone等)从长远来看可能会更好,但我不知道它有多远.会议似乎相当昂贵.
我知道比较很难,但是你在网上找到的大多数文章都将海边和Rails并列.像Scala/Lift,Clojure/Compojure或Erlang/Nitrogen这样的组合会如何呢?
正如我正在驾驭Smalltalk的复兴浪潮(特别是因为许多Ruby-on-Rails的人正在重新发现Smalltalk并将Seaside视为他们的下一个升级的Web框架),我得到的问题是"是的,但我如何使用我最喜欢的编辑器编辑Smalltalk代码?" 或者"Smalltalk还坚持生活在一个独立的世界吗?".
现在, 1981年我第一次经历过Smalltalk,我对这些问题并不了解.我希望编辑器和调试器能够精通我当前的代码状态,并与支持Smalltalk的变更控制系统集成,这似乎很自然.使用外部编辑器或调试器或更改控制管理器似乎非常尴尬.
那么是什么让你最不能用你最喜欢的编辑器编辑Smalltalk中的五行方法,或者使用你最喜欢的非Smalltalk感知变更控制系统呢?
Seaside被称为"异端网络框架".使其成为异端的一点是它有很多共享状态.然而,根据我目前的理解,这会妨碍简单的扩展.
另一方面,Ruby on rails共享尽可能少的状态.众所周知,与现代的smalltalk vms相比,它的扩展性非常好.flickr使用php并扩展到极其庞大的基础架构......
那么有没有人在海边扩展方面有一些经验?
我最近花了一些时间熟悉Smalltalk和Seaside.我来自Java EE世界,你可以想象,围绕一些Smalltalk概念进行思考是很困难的.:)
目前,我正在努力了解数据持久性最常见于Smalltalk世界.我作为Java程序员的假设是使用RDMS(即MySQL)和ORM(即Hibernate).据我所知,Smalltalk不是这种情况(至少使用Hibernate).我不一定在寻找与Java EE中的方式最接近的方法.
将数据保存到图像,对象存储或RDMS中是最常见的吗?Smalltalk应用程序使用RDMS甚至是典型的吗?
我知道这里没有一个通用的方法,正确的持久性策略将取决于应用程序的需求(多少数据,并发等).什么是一个好的方法,可以开始简单,但也可以扩展?
我观看过Avi Bryant讨论他用于持久化和扩展DabbleDB的策略的视频.根据我的理解,客户的数据被保存在图像中(每个客户一个图像).这在他的用例中起作用,因为客户不必共享数据.这是一种常见的方法吗?
希望我没有制作这个TLDR.非常感谢Smalltalk人员在我之前的问题中提供的见解.非常感谢.
我最近在Seaside + Squeak开发了一个Web应用程序,并发现它是一种美妙的体验.Seaside真的比其他所有框架都要强大,我觉得我正在更高层次的抽象工作(在HTTP请求/响应周期和其他框架让你处理的HTML模板之上).
那就是说,我对Seaside组件有点困惑.我最近不得不在组件上显示对象列表(类似于stackoverflow首页).起初我将每个对象都设置为一个组件(WAComponent的子类),但这被证明是非常浪费的,我必须在父组件中动态设置#children才能使其工作.然后我尝试使它们成为渲染对象(不是WAComponent的子类的对象,并使用renderOn渲染:而不是renderContentOn:,就像组件一样).这工作正常,但现在他们无法再像组件那样访问会话对象中的全局状态(使用#session).然后我发现了"WACurrentSession value",它赋予任何对象访问当前Seaside会话对象的权限.我现在能够使它们成为渲染对象.另外,我发现我可以将很多其他更小的组件重写为渲染对象.
除了需要调用/回答或回溯状态外,还有哪些其他原因可以在渲染对象上使用组件?
三个Smalltalk Web应用程序框架之间有什么区别?
一些起点:
我只是想确定哪种框架适合各种应用程序.
所以我现在已经使用Smalltalk大约6个月了(Squeak和Pharo),主要是做数据分析,我即将开始我的第一个Seaside应用程序.所以你向所有Smalltalkers提出的问题是,你最喜欢的持久性解决方案是什么?我一直在看Magma,GOODS和GLORP.我是一个长期的python黑客,所以我得到ORM,但似乎Magma或GOODS将是一个更好的解决方案,因为它们看起来像面向对象.
快速说明:我想在多个VM上扩展我的应用程序,因此只需将数据保存到图像就不会真正起作用.
谢谢!
seaside ×10
smalltalk ×10
persistence ×2
ruby ×2
squeak ×2
aida ×1
ide ×1
pharo ×1
scalability ×1