Php Smalltalk源代码浏览器对其他编程语言有多有用?

Php Smalltalk源代码浏览器对其他编程语言有多有用?,php,python,ruby,ide,smalltalk,Php,Python,Ruby,Ide,Smalltalk,我正在为python、ruby和php开发一个IDE 我自己从未使用过Smalltalk(即使在我大学时它非常流行),我想知道,只显示一种方法的经典Smalltalk浏览器是否真的是对经典文件编辑的改进 我自己也喜欢在课堂上尽可能多地概述。现在我在两列模式下使用24英寸1280x1920显示器,它可以一行一行地显示很多行 我个人想知道,如果你也有一个好的代码折叠编辑器,用户可以通过一次按键折叠所有的def(函数代码体),那么它有什么好处呢 但我看到了让xxx在新闻组中时不时变得更小气的要求。 我

我正在为python、ruby和php开发一个IDE

我自己从未使用过Smalltalk(即使在我大学时它非常流行),我想知道,只显示一种方法的经典Smalltalk浏览器是否真的是对经典文件编辑的改进

我自己也喜欢在课堂上尽可能多地概述。现在我在两列模式下使用24英寸1280x1920显示器,它可以一行一行地显示很多行

我个人想知道,如果你也有一个好的代码折叠编辑器,用户可以通过一次按键折叠所有的def(函数代码体),那么它有什么好处呢

但我看到了让xxx在新闻组中时不时变得更小气的要求。
我知道有些人可能想要一个基于图像的版本,但是浏览器是第二个最不一样的SaltTalk发明。

< P>这只是一个简单化,只说类浏览器只显示了一个方法。它实际上比原始源代码更有组织地显示了很多方法。您可以更轻松地找到您想要的:

class Thing
  def foo
    blah blah blah
    blah.each do |blah|
      blah blah blah blah
      blah.collect {|blah, blah| blah blah blah}
    end
  end


  def bar(blah)
    blah blah blah
    blah.each do |blah|
      blah blah blah blah
      blah.collect {|blah, blah| blah blah blah}
    end
  end
end

class Fob
  def foo
    blah blah blah
    blah.each do |blah|
      blah blah blah blah
      blah.collect {|blah, blah| blah blah blah}
    end
  end


  def bar(blah)
    blah blah blah
    blah.each do |blah|
      blah blah blah blah
      blah.collect {|blah, blah| blah blah blah}
    end
  end
end
或:


一个真正的Smalltalk类浏览器要比我那愚蠢的小纯文本模型强大得多,而Ruby source实际上看起来很像。一个类浏览器鼓励你把类想象成具有自主行为的实际实体,而不是一堆抽象文本。

我和Smalltalk兄弟有着爱/恨的关系wsers(在我的情况下发出吱吱声)。有时我认为它们是自切片面包以来最好的东西,有时它们让我感到厌烦。Smalltalk的问题是,浏览器基本上是你所有的。你当然可以自己编写,但很少有人这样做。而对于基于文件的语言,我可以选择使用complete来查看代码的方式如果我愿意,可以使用不同的编辑器或环境。但是,查看我从未想要的代码的一种方式是一次只让我看到一个方法。

Smalltalk浏览器有两个部分:顶部显示包、类、协议和方法/消息,底部显示一个方法的内容。如果您愿意,这非常有用设计/编写程序时更多地考虑签名和名称,而不是代码行的网络

如果你专注于签名,这可能会导致一种更“面向对象”的风格,在这种风格中,系统被设计为对象之间相互发送消息的协作。在这种范式中,方法名称在某种程度上比它们的实现方式更重要

如果你有一个非常大的屏幕(我自己也有一个:-),你可以打开几个smalltalk浏览器,允许你在几个不同的包和类中浏览(和编码)。此外,你可能还有一个worspace和一个xUnit来测试和玩你的对象

我建议您看看为Squeak创建的Whisker编辑器。它在名称和签名导航以及代码探索行之间提出了一个很好的平衡。您需要尝试一下,因为屏幕截图没有显示它的动态,以及如何在代码的“框”中导航


VisualAge for Java使用Smalltalk浏览器模型进行编码,我认为他们(IBM)在采用典型的基于文件的语言并将其提升到更高的概念模式方面做得很好。实例化甚至有一个很好的附加组件,为VAJ带来了很好的重构工具(人们要么不知道或忘记了语言重构工具是什么……先猜一猜……)当然,我在SimultTalk上咬牙切齿,然后移到C++上了很多年(太多了),很高兴看到SimultSalk之类的东西。当我看到IBM在Eclipse上正严重地移动时,我感到很震惊。 但当时我的大多数同事都不喜欢不能一次看到.java文件的全部文本。我会问,“为什么不在一个类中只有一个方法,这样你就可以一次看到所有的类文件?”然后有人会回答,“那么我根本无法很好地分解我的代码!对此,我会回答,“如果你的代码分解得很好,为什么你需要一次看到每个方法?”然后我会得到一个反应,说不知怎么的,事情会变慢

在我看来,开发环境总是让你面临这样一个事实:代码数据库是一个文本文件系统,并迫使你以这种方式处理代码……特别是在面向对象语言的情况下

话虽如此,对于传统的Smalltalk浏览器,我有很多不喜欢的地方。我经常希望有一种更好的方式在我打开和访问过的浏览器实例之间导航。每当你使用代码时,总是会有你正在使用的方法和类的上下文(修改和/或查看)-在工作时动态开发的上下文中导航应该更简单。
我还希望能够一次轻松地将2-3个方法体组成一个视图,这是代码折叠编辑器可以提供给您的,至少对于一个文件…

Eclipse提供了一个类似Smalltalk的浏览器,Java浏览透视图。尽管我自己是一个Smalltalk的人,但我几乎从不使用它。为什么?如果Smalltalk IDE是调试器而不是浏览器。在编写Smalltalk代码时,我首先进行所有测试,然后在运行测试时修复调试器中所有缺失的方法。将此应用于任何其他语言都会像……哇,哇,哇,那么继续做吧:)好的,这是一个古老的概念,但我简直不敢相信没有人想到要打开几个浏览器。我想我从来没有见过任何人在Smalltalk系统中只使用一个。类浏览器、层次结构浏览器、协议浏览器。。。是的,每一个都显示一个方法
Classes     Methods

Thing   ->  foo     ->  blah blah blah
Fob         bar         blah.each do |blah|
                          blah blah blah blah
                          blah.collect {|blah, blah| blah blah blah}
                        end