Люди, начинающие работать с компьютером, как правило, не задумываются над тем, каким образом он совершает все те действия, результаты которых зримо видны на экране монитора. Между тем компьютер ничего не делает сам, а все его действия обусловлены теми инструкциями, которые в него заложены. Если не вдаваться в детали, то компьютер знает, какие вычисления ему нужно делать при тех данных, которые получены им из внешней среды с помощью различных манипуляций. Инструкции, задающие эти действия, называются программами. Программы составляются программистами.
Программировать в широком смысле — это значит составить такое предписание для компьютера, чтобы он совершил то целенаправленное действие, которое от него ожидается. Причем обязателен один важный аспект этого процесса — повторяемость. Вы один раз совершаете некую работу — составляете программу — после чего компью¬тер получает возможность выполнять нужное действие всякий раз, когда это от него требуется. Современные программы дискретны и состоят из отдельных элементарных операций – команд. Команда позволяет компьютеру в каждой ситуации однозначно и правильно выполнить следующее действие. Весь процесс программирования в общем случае подразу¬мевает, прежде всего, формулировку цели программы, затем анализ содержания задачи и, наконец, создание программы для компьютера. Для этого программист должен уметь учитывать все случаи, которые могут встретиться в процессе работы программы, и предусмотреть для них правильное действие.
Уже с давних времен ученые задумывались над проблемой формализации умственной деятельности человека, в частности, вычислений. Проблема заключается в построении такой последовательности шагов решения задачи, при выполнении которой выбор очередного шага однозначно предопределен предыдущими шагами. Конкретная модель вычислительного процесса называется алгоритмом, а построение алгоритма решения задачи называется алгоритмизацией.
Традиция связывает термин «алгоритм» с именем арабского ученого Аль-Хорезми. Проблемами алгоритмизации при решении математических задач занимались Паскаль, Декарт, Лейбниц, Лаплас и многие другие великие ученые. Особый интерес в этой области был инициирован Гильбертом в связи с его знаменитыми проблемами. В двадцатом веке формальная теория алгоритмов бурно развивалась. Можно назвать такие фамилии, как Гедель, Клини, Черч, Тьюринг, Пост, Марков, Петер.
Параллельно с теорией делались попытки создать практически работающие вычислительные устройства. В 1642г. Паскаль изобрел устройство, выполняющее сложение чисел, а в 1673г. Лейбниц сконструировал арифмометр, позволяющий выполнять четыре арифметических действия. В первой половине XIX в. английский математик Чарльз Бэббидж попытался построить универсальную машину, которая должна была выполнять любые вычисления без участия человека. Программы для нее вводилась с помощью перфокарт, которые уже тогда употреблялись в ткацких станках. Реально такая машина (но не механическая, а электронная) была построена в США в 1943г.
Существует несколько альтернативных теорий представления алгоритмов. Ближе всего к реальным компьютерам представление Тьюринга и Поста, согласно которым вычислительный процесс есть результат функционирования автоматически работающей машины. Абстрактная машина описывается своим состоянием, которое представляет собой в самом общем случае конечный набор данных. Различается входная, промежуточная и выходная информация. Одна элементарная операция при работе машины заключается в том, что меняется фрагмент состояния машины. Само изменение зависит от других элементов данных и задается формальной инструкцией — командой. Полный набор команд конечен. Данные состояния машины, остающиеся после ее работы, являются выходной информацией. Алгоритмом в этом случае называется упорядоченная совокупность команд программы.
8th Май 2011
|
Теги:
|