В практике программирования алгоритмы принято описывать с помощью алгоритмических языков программирования.
В качестве таких языков могут использоваться языки программирования различного уровня, начиная от машино-ориентированных языков программирования, и заканчивая языками высокого уровня.
При разработке конкретного языка прежде всего необходимо позаботиться о его универсальности, т.е. возможности представить на нем произвольный алгоритм. Для этого достаточно убедиться в том, что данный язык позволяет выполнять “команды машины Поста”:
· запись информации в ячейки памяти;
· доступ к различным ячейкам памяти;
· команды условного перехода;
· команды остановки.
Все современные языки обладают такими свойствами. Таким образом обеспечивается алгоритмическая универсальность языка программирования, и необходимо позаботиться об удобстве программирования.
При этом появляются десятки и сотни операторов, представляющих операции сравнительно высокого уровня:
|
|
· арифметические операторы;
· операторы циклов;
· условные операторы;
· операторы управления памятью;
· операторы вызова подпрограмм.
При программировании неформальных процедур оценим трудоемкость ее программирования. Необходимо описать все n - правил. Компонента трудоемкости пропорциональна количеству правил n и коэффициента α1, который зависит от языка программирования и специфики процедуры.
Вторая компонента учитывает целостность комплекса, т.е. взаимодействие этих правил, которая в среднем пропорциональна n2 (таблица), которая имеет коэффициент β.
q=an+βn2
По данному выражению находят суммарную трудоемкость программирования задачи.
Трудоемкость алгоритмического программирования растет пропорционально квадрату числа операторов. Повышение уровня программирования позволит уменьшить коэффициенты α и β.
Для уменьшения трудоемкости необходимо избежать кропотливого указания всех связей (между различными правилами), чтобы избежать квадратичного роста трудоемкости.
Желательно иметь такой способ программирования, при котором отдельные операторы независимы с точки зрения программиста и он может свободно вычеркивать ненужные и добавлять новые операторы.