Следует ли этот ваш аргумент понимать так, что на упомянутом мной Prolog'e написать программу нельзя, потому что он является логическим языком программирования?
Нет. Дело в том, что, во-первых, любая программа на Прологе может быть представлена последовательностью машинных инструкций (которые арифметико-логические), а, во-вторых, программу на Прологе можно перевести на процедурный язык программирования, например Си (
http://www.cs.uvic.ca/~nigelh/Publications/prolog2c.pdf).
Кстати, нашёл на
сайте Википедии довольно сносный критерий "программности": "Формально любая компьютерная программа может быть представлена как набор инструкций для универсальной машины Тьюринга".
Описание преобразования данных в НТМL, кстати, имеется - например, масштабирование изображения картинки под заданный размер, только сам алгоритм этого масштабирования от вас скрыт интерпретатором, также как скрыт от вас алгоритм исчисления предикатов и структуры данных в логическом неалгоритмическом языке Prolog.
Ну нет там преобразования, есть только ПРЕДСТАВЛЕНИЕ (форматирование). Как Вы сами заметили, все преобразование вынесено в компьютерную программу - интерпретатор HTML. Масштабирование картинки - непростая алгоритмическая задача и решение её описывается отнюдь не в тексте с форматированием HTML, а в исходном тексте компьютерной программы "рендеринга" изображений. В данном случае, данные о масштабе изображения в тексте HTML являются не командой для процессора, а пользовательским вводом данных (как если бы Вы задали их в параметрах командной строки "рендерера").
Кстати, "неалгоритмическая" обработка данных осуществляется только нейросетями (аппаратными), в цифровых ЭВМ, построенных на модели фон Неймана-Лебедева, вся обработка - алгоритмическая (в силу принципа работы).
Текст же программы на Прологе отличается от текста с форматированием HTML тем, что в нём описаны правила логического вывода, согласно которым выполняется программа. Опять же, программе на Прологе задаются исходные данные, она меняет свои состояния и в результате выдаёт выходные данные, являющиеся решением формализованной задачи. Повторюсь, все действия, выполняемые процессором при исполнении программы на Пролог, можно зафиксировать, в результате чего получится исполняемый код исходной программы, а не интерпретатора (как это произойдёт с текстом с форматированием HTML).
Попробую зайти с другой стороны. Сергей, а что такое в вашем понимание программирование? По вашим предыдущим сообщениям создается впечатление, что только процесс разработки алгоритма (процедуры, последовательности) решения задачи представляется для вас существенным. Но ведь в том же Prolog'e это практически отсутствует. Процесс разработки структур данных, их представления и описания на различных этапах обработки и т.п. - программированием не является?
Ой. Ну и вопросики, по ночам-то.
(Википедия порадовала: "Программирование — процесс и искусство создания компьютерных программ с помощью языков программирования" - экспонат это то, что экспонируется
)
На вскидку скажу, что под программированием понимаю формальное задание последовательности (либо правил выполнения) действий по автоматизированной обработке данных на специализированном языке, "понятном" (непосредственно либо после дополнительных преобразований в виде компиляции или интерпретации) для вычислительного устройства.
Как говорит наука, есть два основных подхода к программированию: подход "от вычислительных операций", описание данных здесь играет второстепенную роль; и подход "от данных", где второстепенную роль играют вычислительные операции, а первостепенную - структуры данных и связи между ними. Оба подхода взаимозаменяемы.
P.S. Скажу вообще страшную вещь. Насколько мне известно, уже есть системы, интерпретирующие задания на естественном языке. Чего делать с классификацией текстов подобных заданий? Считать текст на естественном языке "компьютерной программой"?
По моему мнению, в этом случае понятие "компьютерная программа" просто теряет смысл, т.к. вычислительное устройство уже не нуждается в программировании.