Сергей, все-таки повторюсь, в ваших взглядах на программирование, IMHO, всецело в явной или неявной форме превалирует процедурный подход, что, опять же IMHO, не верно.
На самом деле этот процедурный подход имеет совершенно понятную причину - архитектура тов. фон Неймана. Она процедурная в принципе. Соответственно, и компьютерные программы для этой архитектуры (коих 99,9%) тоже процедурные. Хуже того, в скомпилированном виде они, вне зависимости от исходного языка программирования превращаются просто в набор инструкций процессора, ничего не знающего о декларативном программировании. Соответственно, программу следует отличать по её "процедурности" или возможности сведЕния к таковой. Если "текст с подозрением на программу" к такому виду свести невозможно, значит - это "входные данные для интерпретатора", но не "программа для интерпретатора".
Иными словами, если взять (или создать) систему, осуществляющую операции исчисления предикатов (т.е. при задании исходных посылок выдающую следующий из них вывод), то задаваемые на входе этой программы предикаты к "программе для ЭВМ" никакого отношения иметь не будут, так как они будут являться входными данными для "исчислителя" предикатов. Но если ими же определяется вычислительный процесс в рамках синтаксиса того же Пролога, то такой текст, несомненно является "программой для ЭВМ", так как его можно свести к процедурной программе.
Как только создадут ЭВМ, работающую на принципиально отличающейся от фон Неймановской архитектуре, и для неё станут массово писАть программы, я сразу пересмотрю свои взгляды на определение "компьютерной программы" (вместе с определением "компьютера")...
Если соберетесь об этом писать статью, я рекомендовал бы подступаться к проблеме с изучения современного состояния дела в вопросах автоматизированного проектирования программного обеспечения, используемых при этом средств, уровня абстракции от данных и алгоритмов, которые ими обеспечиваются, формальные языки, используемые в этих средствах. Также хотел бы порекомендовать некоторые ключевые слова и выражения, поиск по которым может быть полезным для обобщения представления о программировании - domain specific languages, executable specification languages.
Спасибо за рекомендации, попробую им последовать, как буду писАть статью.
Однако, трудность заключается в том, что проблема отнесения произвольного текста к компьютерным программам является, по мению большинства, "очевидно разрешаемой". А поэтому выявить конкретные критерии из "классических" работ, вероятно, не удастся (или будет очень трудно).
Вы будете смеяться, но "не понравилась" и эта
Кроме того, пришлось скачать pdf размером 1,6Мб только лишь для того, чтобы на 28-й странице найти перепечатку "классификации языков программирования", взятой с
http://dmoz.org/Computers/Programming/Languages/ (о чём в самОм тексте, кстати, и указано: "One classification is shown in Table 2 [WWW-reference 4]" и "WWW-reference 4,
http://dmoz.org/Computers/Programming/Languages/, Retrieved 12.9.2003"). Вот это действительно вызвало определённое раздражение
Теперь относительно самОй "классификации"...
Во-первых, как следует из адреса, речь идёт об объекте "Programming->Languages", а не об объекте "Programming languages" (не сочтите "буквоедом").
Во-вторых, речь здесь, безусловно, идёт о РУБРИКАЦИИ, но никак не о КЛАССИФИКАЦИИ, т.к. приведённые в указанном разделе группы "компьютерных языков" содержат множество пересечений друг с другом (что, разумеется, противоречит смыслу понятия "классификация").
Далее. Если мы, открыв адрес
http://dmoz.org/Computers/Programming/Languages/, перейдём по ссылке
Markup@ (1,320), то увидим там "классификационную группу", которой по мнению администраторов сайта принадлежат языки разметки: "Top: Computers: Data Formats: Markup Languages". Совсем не "Programming languages" и даже ужЕ не "Programming", не правда ли? Там же, кстати, есть и
русский перевод этой страницы.Таким образом, мы пришли к очевидному: ".HTML" - формат данных, "HTML" - язык разметки (представления данных) => "исходный текст" на HTML - НЕ КОМПЬЮТЕРНАЯ ПРОГРАММА.
<Продолжение в следующем сообщении>