Реализация алгоритма
Как только алгоритм выражен, допустим, в виде последовательности шагов и мы убедились в его правильности, настает черед реализации алгоритма, т. е. написания программы для ЭВМ.
Написание программы зависит от многих качеств, как объективных, так и субъективных. Но среди всех аспектов целесообразно выделить такие, как выбор языка программирования, выбор структуры данных, типы оборудования, на которых будет эксплуатироваться программа, тип интерфейса, который необходим для работы этой программы и многое другое.
Реализация алгоритма - этот существенный шаг может быть трудным. Во-первых, трудность заключается в том, что очень часто отдельно взятый шаг алгоритма может быть выражен в форме, которую трудно перевести непосредственно в конструкции языка программирования. Например, один из шагов алгоритма может быть записан в виде, требующем целой подпрограммы для его реализации. Во-вторых, реализация может оказаться трудным процессом потому, что перед тем, как мы сможем начать писать программу, мы должны построить целую систему структур данных для представления важных аспектов используемой модели. Чтобы сделать это, необходимо ответить, например, на такие вопросы:
Каковы основные переменные?
Каких они типов?
Сколько нужно массивов и какой размерности?
Имеет ли смысл пользоваться связными списками?
Какие нужны подпрограммы (возможно, уже записанные и реализованные)?
Каким языком программирования пользоваться?
На каких типах оборудования будет использоваться данный программный продукт?
Каковы основные аспекты взаимодействия человек - ЭВМ?
На какого пользователя рассчитано программное обеспечение?
Для какого класса задач и продолжительности по времени разрабатывается данное программное обеспечение?
Как будет проводится верификация?
Конкретная реализация может существенно влиять на требования к памяти и на скорость алгоритма.
Другой аспект построения программной реализации — это программирование сверху-вниз. Объяснение этого понятия будет дано в позднее, а пока укажем, что программирование сверху-вниз— это подход к разработке и реализации, который состоит в преобразовании алгоритма в такую последовательность все более конкретизированных алгоритмов, что окончательный вариант представляет собой программу для ЭВМ.
Сделаем одно важное замечание. Одно дело — доказать правильность конкретного алгоритма, описанного в словесной форме. Другое дело — доказать, что данная машинная программа, предположительно являющаяся реализацией этого алгоритма, также правильна. Таким образом, необходимо очень тщательно следить, чтобы процесс преобразования правильного алгоритма (в словесной форме) в машинную программу «заслуживал доверия».