为什么我需要像Pharo这样的smalltalk方言中的共享源文件?

use*_*323 8 smalltalk pharo

通常的安装说明告诉我,我需要运行Pharo至少三个文件:

  1. 图像文件
  2. 更改文件
  3. 源文件(例如PharoV10.sources)

我没有源文件运行Pharo 2,我没有看到任何问题.所有来源似乎都是可用的.

那么,为什么我需要源文件(例如PharoV10.sources)?

Dav*_*uck 8

图像文件仅包含已编译的代码,而不包含原始源代码.更改文件包含您自己添加到系统的内容的源代码,但不包含现有系统类的源代码.要获取现有系统类的源代码,您需要sources文件.

话虽如此,如果源文件不可用,Smalltalk可以反编译代码并生成类似源代码的内容.此代码将缺少正确的变量名称,注释和间距.您真的不想使用反编译的源代码,因此您需要访问源文件.


aka*_*ice 6

3可能的解释,试着找出笑话:

  1. 浏览器非常智能,可以显示CompiledMethod字节代码重建(Decompiled)的源代码.提示:在这种情况下,你放弃了所有评论
  2. 有一个源文件的搜索路径,一个在磁盘上的某个位置找到
  3. Pharo变化如此之快,现在可以在.changes文件中找到每个源

为了验证1.,您可以尝试浏览对Decompiler的引用(根据自己的口味,有太多用途).

为了验证2.,您可以开始浏览#openSourceFiles的实现者

要验证3.,您可以评估此​​代码段:

| nSources nChanges |
nSources := nChanges := 0.
SystemNavigation default allBehaviorsDo: [:b |
    b selectorsDo: [:s |
        (b compiledMethodAt: s) fileIndex = 1
            ifTrue: [nSources := nSources+1]
            ifFalse: [nChanges := nChanges+1]]].
^{nSources. nChanges}
Run Code Online (Sandbox Code Playgroud)