Зачем мне нужен файл с общими исходными кодами на диалектах Smalltalk, таких как Pharo?

обычная установка описания говорит мне, что мне нужно запустить Pharo как минимум три файла:

  1. файл изображения
  2. файл изменений
  3. исходный файл (например, PharoV10.sources)

Я запускал Pharo 2 без файла с исходным кодом и не заметил никаких проблем. Все источники, казалось, были доступны.

Итак, зачем мне исходный файл (например, PharoV10.sources)?


person user1801323    schedule 05.11.2012    source источник


Ответы (3)


Файл изображения содержит только скомпилированный код, а не исходный код. Файл изменений содержит исходный код того, что вы сами добавили в систему, но не исходный код существующих системных классов. Чтобы получить исходный код для существующих системных классов, вам нужен исходный файл.

Сказав это, Smalltalk может декомпилировать код и создать то, что выглядит как исходный код, если исходный файл недоступен. В этом коде будут отсутствовать правильные имена переменных, комментарии и интервалы. Вы действительно не хотите использовать декомпилированный исходный код, поэтому вам нужен доступ к исходному файлу.

person David Buck    schedule 06.11.2012

3 возможных объяснения, попробуйте определить шутку:

  1. Браузер достаточно умен, чтобы показать вам исходный код, реконструированный (декомпилированный) из байт-кодов CompiledMethod. Подсказка: в этом случае вы потеряете все комментарии
  2. есть путь поиска исходных файлов, и один находится где-то на вашем диске
  3. Pharo меняется так быстро, что каждый источник теперь можно найти в файле .changes.

Для проверки 1. вы можете попробовать просмотреть ссылки на декомпилятор (на мой вкус, слишком много применений).

Для проверки 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}
person aka.nice    schedule 05.11.2012

Также возможно, что Pharo загружает PharoV10.sources автоматически.

person Damien Cassou    schedule 06.11.2012
comment
Тем временем я заметил, что Pharo 2.0 автоматически создает или загружает исходники. Если я запускаю образ Pharo 2.0 без исходников, файл образа внезапно появляется в папке виртуальной машины, тогда как более старые образы Pharo (1.4) отображали сообщение об ошибке во время запуска. - person user1801323; 06.11.2012