Привет.
Сейчас я немного посмотрел на грамотное программирование, и мне нравится идея, лежащая в его основе: вы в основном пишете небольшую статью о своем коде и записываете как можно больше проектных решений, код, вероятно, окружающий модуль, внутренние рабочие элементы модуль, допущения и выводы, вытекающие из проектных решений, потенциальное расширение, все это можно записать с помощью tex. Согласен, первый пункт: это документация. Он должен постоянно обновляться, но это не должно быть так уж плохо, потому что у вашего изменения должно быть обоснование, и вы можете это записать.
Однако как масштабируется Literate Programming Scale? В целом, грамотное программирование - это всего лишь текст. Конечно, очень читаемый текст, но все же текст, и поэтому трудно следовать за большими системами. Например, я переработал большие части моего компилятора, чтобы использовать >> и некоторую магию для объединения шагов компиляции, потому что некоторые "x.register_follower (y); y.register_follower (z); y.register_follower (a); ... "стало действительно громоздким, и изменение его на x >> y >> z >> a сделало его немного лучше, хотя это тоже на пределе.
Итак, как Literate Programming масштабируется на более крупные системы? Кто-нибудь пытается это сделать?
Я бы хотел использовать LP для определения компонентов, которые взаимодействуют друг с другом, используя потоки событий, и объединять их все вместе, используя подмножество graphviz. Это было бы довольно естественным расширением для LP, поскольку вы можете извлечь документацию - диаграмму потока данных - из сети, а также действительно сгенерировать код из нее. Что ты думаешь об этом?
- Тета.