Тут коллега KPG облыжно обвинил меня в неуважении к национальному достоянию - материалам RusFIG. Воспользуюсь наводкой и попробую поискать там что-то то теме (недаром же, наверное, коллега true-gue как-то заметил, что я пишу старомодно). Найденные "выводы" принадлежат если я не ошибаюсь к мейнстриму: один из непоследних людей написал библиотеку, а другой на ее примере показал, как надо чужие программы читать. Раз я рассуждаю здесь о писании кода, то ожидания читателей должны бы мне помочь.
Итак:
Цитата:
* Для подхода к изучению чужого кода нужно во-первых иметь хотя бы примерное знакомство с предметной областью, теорией (совсем необязательно досконально знать, достаточно хотя бы "плавать" в терминах, а непосредственные детали реализации можно будет уяснить из самого кода). Если не отходить далеко от нашего примера — к началу конкретного этого разбора я знал в чём состоит задача "сборки мусора", знал что она обозначается как gc, имел смутное представление о том "как оно работает".
* Правило "читай с конца" применённое в самом начале разбора обосновывается технологическими особенностями Форта. Так как forward-ссылки в форте из-за однопроходности компилятора не используются, то определения (процедуры) идут в тексте по мере нарастания сложности, из-за чего "главные", наиболее мощные слова оказываются в конце текста. Отсюда и идёт правило что разбирать программу на форте надо с конца и разматывать клубок нужно, начиная с "торчащей нитки" — главного слова или одного из них.
* Последовательность разбора каждой процедуры примерно такая: имя, комментарии, код. Если смысл слова становится понятен на более раннем этапе, то остальные делать соответственно незачем.
* Авторы всегда стараются давать говорящие названия своим процедурам (по крайней мере — говорящие им), ваша задача — постараться понять что имелось в виду. Есть стихийно сложившийся "пиратский кодекс" по построению названий форта, который был обзорно описан в "Этимологии", он может помочь. Также можно посмотреть советы по именованию от ~pinka. Но главное подспорье — это здравый смысл (как впрочем и всегда).
* Проверяйте ваши "догадки", осознанные предположения о структуре/работе программы эмпирически — то есть непосредственно запуская програму и прогоняя тестовые куски.
И что? Где здесь FORTH? Есть ли здесь хоть что-то, чего не знают "не-FORTH-программисты"? Нет.
Это, конечно, подтверждает мои догадки о стремлении Rus-FIG привести FORTH к нормам "обычных языков", но, все равно, обидно. Говорим о самодокументированности, о лексиконах, о интерпретации на всех этапах... А на деле - полная беспомощность...
По крайней мере, на поставленные в теме вопросы ответа я не получил.
Может, кто-то, сможет копнуть материалы Rus-FIG более удачно?
P.S. Прошу мне простить некоторую категоричность. Она объясняется тем, что мне достаточно часто приходилось читать чужой код. И смею, вас заверить, там все по-другому. См., например, игрушечный пример того, с чем приходится иметь дело:
http://www.gudleifr.h1.ru/4i.html, с середины.