> -- Валерий Лаптев писал(а):
> Просмотрел исходную статью еще раз. В промышленном программировании такое пока представить сложно, но вот в обучающей среде для обучения программированию - на счет раз! Собственно, это именно то, что я сейчас и стряпаю в семантическом редакторе. Только обобщенный гипертекст сюда приплетать не нужно. А вот методу пошагового уточнения только так и обучать!

А что конкретно Вам понравилось в исходной статье?

И что такое "обобщенный гипертекст", и почему он плох?

Мне кажется, что литературное программирование в том виде, как его задумал Кнут, - уже устаревшая концепция. Она восходит к той эпохе, когда программная документация мыслилась как единая книга. Ради этого (по замыслу Кнута) программный код создавался как винегрет, чтобы из него затем автоматически формировались (1) документация в виде книги и (2) нормальный исходник без литературного словоблудия. В наш век документация в виде единой книги, оторванной от исходного кода и от интегрированной среды разработки, уже не актуальна. Учебник в виде книги удобен, но не документация. Не стоит тратить силы программистов на эту древнюю технологию формирования документации. Кнут, конечно, трудолюбивый писатель, но это не значит, что программисты должны превратиться в трудолюбивых писателей.

Поэтому мне нравится более современный подход Markus Knasmüller, который с первоначальным подходом Кнута имеет мало общего несмотря на схожее название "Reverse Literate Programming".Документация хранится вместе с исходным кодом и не извлекается в отдельную книгу. Читая исходный код можно сразу в том же месте обратиться к описывающей его документации.

В то же время, подход Markus Knasmüller является слишком текстоориентированным (тоже наследие прошлого). Глядя на код в семантическом редакторе, программист должен в первую очередь видеть структурную схему программы, а не plain text комментариев, пространные объяснения гиперссылок или словесный мусор макрокоманд препроцессора. Вот если что-то в схеме непонятно, то можно на соответствующий элемент или связь навести курсор и получить всплывающую подсказку.

К той же устаревшей текстоориентированности можно отнести и разбиение на секции, которые мыслятся как главы книги. Современная программа и без того хорошо структурирована, и незачем на эту естественную структуру накладывать еще и книжную структуру. Секции разрушают естественную и цельную структуру программы в сознании программиста, создают нечеткое представление об отношениях блоков кода и поэтому увеличивают риск ошибок. Комментировать нужно те элементы программной структуры, которые в ней уже есть: модули, классы, функции и т.п. Те задачи по разбиению программы на обозримые фрагменты, которые возлагались на секции, успешно решаются с помощью автоматического фолдинга, размещения функций на отдельных вкладках и т.п.