Программирование поведения S-машин

Эта статья находится в стадии проработки и развития, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис

Программирование – создание (на языке программирования [1]) сообщения (называемого программой), которое представляет собой упорядоченный набор инструкций, реализующих алгоритм поведения s-машины (компьютера, смартфона или др.), определенный в спецификации задачи.
Создание программы (в общем случае) включает изучение спецификации задачи, написание исходного текста программы, компиляцию и/или интерпретацию, компоновку [получение кода программы, готового к исполнению, путем сборки из объектных кодов модулей программы (одного или нескольких)] и отладку.
Программированием называют также деятельность, целью которой служит создание программ поведения s-машин.

Программирование и символьное моделирование

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

С тех пор как существует программирование, программисты ищут способы повышения производительности своего труда (одним из примеров может служить методология разработки параллельных программ, основанная на системе знаний о задачах[2]). В современные инструментальные системы программирования[3], как правило, встроены механизмы применения шаблонов разрабатываемых продуктов и готовых решений для отдельных составляющих. Такие системы обычно содержат средства редактирования текстов программ, трансляторы[4], средства отладки, тестирования и оптимизации программ, графические средства проектирования интерфейсов[5], заготовки текстов для программ различных типов, библиотеки программ и др.

Профессиональным программистам издавна противостоят любители рассматривать спецификации задач и соответствующие им программы как математические сущности. Чего-то недостает им, чтобы понять, что ни спецификация программируемой задачи, ни программа не являются математическими объектами.
В первых рядах таких любителей — энтузиасты автоматического синтеза и доказательства правильности программ. Как правило, это либо добросовестно заблуждающиеся математики (по образованию), не имеющие опыта разработки программных продуктов (состоятельность которых доказана практикой), либо поклонники математизации, использующие ее как мошенническое средство скрыть отсутствие полезной для программирования сути.

В реальности спецификация нетривиальной задачи и программа соотносятся так же, как проектная документация (в инженерном деле) и изделие, которое предстоит изготовить. Пригодность изделия (его соответствие проектной документации) можно определить только путём тестов, разработанных специалистами, хорошо знающими, что должен «уметь» испытуемый и какими свойствами (включая надёжность и безопасность) должен обладать.

Источники