Главная arrow Развитие ПО arrow Искусство программирования
Как начинался компьютер
Компьютерная революция
Двоичный код
Разработки военных лет
Интегральные микросхемы
Микрокомпьютер
Персоны
Сеть
Язык компьютера
Развитие ПО
Гибкие системы
Средства разработки
Информатика
Вычислительная наука
Операционные системы
Искусственный интеллект
Предыстория
Поиск
Знания и рассуждения
Логика
Робототехника
 

 
Искусство программирования Печать

Разработка плана действий

Задача программиста состоит не в том, чтобы самому решить задачу, а в том, чтобы спланировать такую последовательность команд, которая позволит компьютеру отыскать решение. Высокое быстродействие компьютера делает его весьма подходящим средством для решения задач, в которых требуется выполнить сложные или повторяющиеся вычисления. Однако машина способна также решать задачи, описываемые на языке формальной логики.

Быстрое выполнение вычислений - это работа, специально предназначенная для компьютера. Более содержательную часть работы, связанную с разработкой пошагового рецепта, или алгоритма, который указывает компьютеру, каким образом тот должен выполнять задание, лучше поручить человеку с его интеллектом. Чтобы сделать алгоритм максимально ясным и кратким, программист всегда начинает работу со сбора известных фактов и четкой постановки задачи. Только после этого он приступает к разработке логической последовательности шагов, позволяющей компьютеру найти решение.

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

В то же время ни одну деталь, сколь бы очевидной она ни казалась человеку, нельзя пропустить или взять на веру. Хороший программист должен обладать, с одной стороны, способностями к масштабному мышлению, которое позволяет придумывать требуемые алгоритмы, а с другой - предельным вниманием к мелочам, что необходимо для преобразования алгоритмов в однозначный компьютерный код.