Smalltalk源代码浏览器对其他编程语言有多大用处?
我正在开发一个支持 Python、Ruby 和 PHP 的集成开发环境(IDE)。
我自己从来没有用过 Smalltalk(尽管在我上大学的时候它非常流行),我在想经典的 Smalltalk 浏览器只显示一个方法,这真的比传统的文件编辑方式要好么?
我个人喜欢在一个类中尽可能多地看到内容。现在我使用的是一台 24 英寸、分辨率为 1280x1920 的显示器,采用双列模式,这样可以一次显示很多行代码。
我自己在想,如果你有一个很好的代码折叠编辑器,用户可以通过一个按键折叠所有的函数代码,这样有什么好处呢?
不过,我确实看到在一些新闻组中,时不时有人提到希望让 xxx 更像 Smalltalk 的样子。我知道有些人可能想要一个基于图像的版本,但浏览器是 Smalltalk 里第二个最不同的发明。
6 个回答
VisualAge for Java使用了Smalltalk浏览器的模型来编写代码,我觉得他们(IBM)做得非常好,把一种典型的基于文件的语言提升到了一个更高的概念层次。Instantiations甚至有一个很棒的插件,可以为VAJ提供优秀的重构工具(很多人不知道或者忘记了,重构工具最早是为哪种语言引入的……你猜猜看;)当然,我最开始是接触Smalltalk,然后又用了很多年C++,看到任何类似Smalltalk的东西我都很高兴。当我看到IBM认真地在推进Eclipse时,我简直惊呆了。
但当时我大多数同事并不喜欢不能一次性看到整个.java文件的内容。我会问:“为什么不在一个类里只放一个方法,这样就能一次性看到整个类的内容?”然后有人会回答:“那样的话,我就没法很好地分解我的代码了!”我会接着问:“如果你的代码分解得很好,为什么还需要一次性看到每个方法呢?”然后他们会说什么东西变得慢了……
我一直觉得那些让你意识到代码数据库是由文本文件组成,并强迫你以这种方式处理代码的开发环境,真是太落后了……尤其是在面向对象的语言中。
话虽如此,我对传统的Smalltalk浏览器也有一些不喜欢的地方。我常常希望能有更好的方式来浏览我打开和访问的浏览器实例。每当你处理代码时,通常会有一系列你正在修改或查看的方法和类的上下文——在你工作时,浏览这些动态发展的上下文应该更简单。我还希望能轻松地将2-3个方法的内容组合在一起查看——这在某种程度上是代码折叠编辑器能做到的,至少对于一个文件来说……
Eclipse 提供了一个类似 Smalltalk 的浏览器,叫做 Java 浏览视图。虽然我自己也是个 Smalltalk 的爱好者,但我几乎从来不使用这个功能。为什么呢?因为 Smalltalk 的强大之处在于它的调试工具,而不是浏览器。当我写 Smalltalk 代码时,我总是先测试,然后在调试器中修复所有缺失的方法,同时运行测试。要是其他语言也能这样,那简直太棒了,所以大家可以试试这个 :)
Smalltalk浏览器有两个部分:上面一部分显示包、类、协议和方法/消息,下面一部分则显示一个方法的内容。这对于设计和编写程序时,更关注方法的签名和名称,而不是一堆代码的关系,非常有用。
如果你专注于方法的签名,这可能会让你更倾向于一种“面向对象”的风格,在这种风格中,系统被设计成一组对象之间相互发送消息的合作关系。在这个思维模式下,方法的名称比它们的实现方式更重要。
如果你有一个非常大的屏幕(我自己就有一个 :-)),你可以打开多个Smalltalk浏览器,这样就可以在不同的包和类中浏览(和编写代码)。而且,你可能还会有一个工作区和一个xUnit来测试和玩弄你的对象。
我建议你看看为Squeak创建的Whisker编辑器。它在名称和签名的导航与代码行的探索之间提供了一个不错的平衡。你需要亲自试试,因为截图无法展示它的动态效果,以及你如何在“代码框”之间导航。