openlang

Где на самом деле живёт код в Pharo

После долгого Ruby понемногу пробую Pharo, и вопрос возник на самом простом месте, для привыкшего к файлам человека даже неловко спрашивать. В системном браузере создан класс, сохранено несколько методов, а файла .st на диске так и не появилось. Сохраняю образ, открываю снова, методы на месте (немного тревожно, когда после Ruby нечего показать через ls).

Выходит, код живёт внутри образа и исходного файла как такового нет? Файл .changes рядом с образом явно как-то с этим связан, но в текстовом редакторе стало только хуже, там по порядку записано всё, что происходило, вместе с ошибками.

В Ruby всё закончилось бы на git add lib/. Как те, кто пишет на Pharo, кладут это в git? Могу лишь предполагать, что образ целиком никто не коммитит.

Переведено с английскогоПоказать оригинал

Разговор продолжается 1

Следуя доводам
  1. Ссылка на ответ

    Да, он живёт в образе, и к этому стоит привыкнуть, а не бороться (мне это по-прежнему очень нравится, хотя признаю, делиться таким кодом сложнее, чем хотелось бы). Классы и скомпилированные методы - это объекты в образе. Их исходный текст лежит в двух файлах рядом, .sources для базовой системы и .changes для всего, что сохранено потом, по порядку, и каждый метод указывает на своё место. Поэтому .changes и читается как дневник.

    Для git в Pharo есть Iceberg. В нём добавляете репозиторий, кладёте в него свой пакет и коммитите из того же окна. Пакет записывается обычным текстом, по файлу на класс, так что диффы выглядят как обычный исходный код. Свежий образ получает код обратно, если клонировать репозиторий в Iceberg и загрузить пакет.

    Так что образ - это верстак, а репозиторий - запись. Файл .image никто не коммитит, тут вы угадали.

    Переведено с английскогоПоказать оригинал

Другие стороны того же вопроса

  1. round(2.5) даёт 2, и ученики не верят

    Ученики упорно думают, что round(2.5) равно 3, а оба языка, к которым я обычно тянусь, говорят 2. Python даёт целое 2, Julia…

    Ответы 4juliapython
  2. 3 + 4 * 2 равно 14, и это ещё простая часть

    Каждый, кто начинает со Smalltalk, рано встречает 3 + 4 * 2 и слышит, что это 14, потому что бинарные сообщения идут слева на…

    Ответы 1smalltalk
  3. Ручной перевод старого CoffeeScript как урок JavaScript

    Немодное упражнение, которое работает лучше, чем имеет на то право. Дайте ученику небольшой старый файл на CoffeeScript и поп…