Vlad-Shcherbina / icfpc2014-tbd

fourth place
Do What The F*ck You Want To Public License
4 stars 0 forks source link

Unix way vs нормальные структуры данных #42

Open Vlad-Shcherbina opened 10 years ago

Vlad-Shcherbina commented 10 years ago

(просто два разных подхода, что лучше в каких ситуациях я не знаю)

fj: Кстати, я вот не знаю, меня как-то напрягает что вы все компилили в текст чтобы потом ещё раз скомпилить этот текст в машинный код (если нужно). Ещё и метки подпатчивали распарсивая и запарсивая этот текст. По-моему правильней было бы компилить в namedtuple представляющую собой инструкцию.

vlad: Ну, я думаю это потому что текстовое представление стандартизировано, и тем самым представляет собой естественный интерфейс. Вот например я смог максовский delabelizer заюзать вообще не вникая как он работает, несмотря на то что там внутри словари стрёмные, потому что на входе и выходе просто текст. А разработать достаточно хорошую и универсальную named tuple - задача весьма нетривиальная, а главное никто и не пытался. Учти что этот формат должен поддерживать например комментарии к инструкциям, а также строчки, которые целиком состоят из комментария и инструкцией не являются. Или там аргумент 1 - должен он быть числом 1 или строкой "1"?

fj: ну как бы не то чтобы не пытался, мой parse_gcc возвращает такой список инструкций (правда, без комментариев, но с оригинальной source file, line number, line string -- а зачем тебе на самом деле отдельно-стоящие комментарии?) и все гцц его жрут.

vlad: Комментарии нужны чтобы глазами смотреть сгенерённый код. В общем как, внедрение такого представления повсеместно заключает в себе риск что если потом захочется что-то поменять, то хрен поменяешь, потому что все зависят от него. Но концептуально оно конечно же Правильнее. Текстовое представление и операции имеет свои риски, например что одна метка окажется префиксом другой. Но они кажутся незначительными и обходятся всё нарастающей системой хаков. Типа добавить суффикс "$", потом добавить префикс "***$***"...

fj128 commented 10 years ago

2014-08-26 22:58 GMT+03:00 Vlad-Shcherbina notifications@github.com:

В общем как, внедрение такого представления повсеместно заключает в себе риск что если потом захочется что-то поменять, то хрен поменяешь, потому что все зависят от него.

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

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