Читаем Беседы об информатике полностью

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

Что должен уметь программист? Строить схемы, аналогичные показанной на рисунке 8. Иначе говоря, он должен построить естественную последовательность команд и снабдить ее в нужных местах средствами формулирования и проверки условий. В зависимости от того, что происходит с условиями, естественная последовательность может быть нарушена. Для этой цели каждая машина снабжается специальной командой или группой команд, которые называются командами перехода или командами нарушения последовательности.

Программист должен уметь производить модификацию, для чего над командами и операндами выполняются специальные операции. В нашем случае, к примеру, если обнаружен тупик, то в команду номер 1, означающую начало движения, следует подставить адрес элемента коридора, с которого решено продолжать поиск. Хранение команд наряду с операндами в памяти ЭВМ и возможность выполнения операций над командами точно так же, как и над операндами, это второй основной закон работы ЭВМ.

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

Вот и вся премудрость! Пусть читатель рассудит сам. Неужели здесь есть нечто такое, чему нельзя было бы научиться, если не за день, то хотя бы за неделю? Топ-топ, топ-топ… Стоп — разветвление. Куда? Направо. И снова топ-топ… Недаром оказалось, что лучшими программистами являются школьники младших классов. Наверное, потому, что у них нет предрассудков, а все только что описанное очень напоминает игру.

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

В чем же дело, если все так просто? Дело в том, что мало-мальски сложная программа, имеющая практическое значение, содержит десятки, а то и сотни тысяч команд. Человеку свойственно ошибаться, и как раз при написании программ это свойство проявляется в наибольшей степени. Все команды похожи друг на друга, не за что, как говорится, зацепиться глазу, ошибки здесь неизбежны. А вот отыскать ошибку — задача на редкость трудная. Для этого, грубо говоря, нужно кропотливо проделать все то, что по этой программе должна делать ЭВМ. Но ЭВМ выполняет миллионы операций в секунду, а программист на такую скорость не способен. Специально для отладки в ЭВМ ввели пошаговый режим, когда в результате нажатия кнопки машина выполняет одну-единственную команду и сообщает результат программисту.

Но и это еще не все. Тому, кто хоть однажды бродил в настоящем лабиринте, хорошо понятно, как легко попасть в так называемый порочный круг, то есть снова и снова ходить по одним и тем же коридорам. Такая же опасность поджидает и программиста. Обнаружить порочный круг среди сотен тысяч команд — задача архисложная, вот почему и получалось всего три команды за день напряженной работы.

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

Если ЭВМ что-то особенное умеет — она умеет не ошибаться. Современная ЭВМ четвертого поколения работает без единого сбоя, скажем, месяц по двадцать четыре часа в сутки и выполняет за это время, повторяем, без единой ошибки 2,5·1012, то есть два с половиной триллиона, операций. Почему же это замечательное свойство ЭВМ не использовали с самого начала?

На пути к возмужанию
Перейти на страницу:

Все книги серии Эврика

Похожие книги

102 способа хищения электроэнергии
102 способа хищения электроэнергии

Рассмотрена проблема хищений электроэнергии и снижения коммерческих потерь в электрических сетях потребителей. Приведены законодательно–правовые основы для привлечения к ответственности виновных в хищении электроэнергии. Изложены вопросы определения расчетных параметров средств учета электроэнергии, показаны схемы подключения счетчиков электрической энергии. Описаны расчетные и технологические способы хищения электроэнергии. Обсуждаются организационные и технические мероприятия по обнаружению, предотвращению и устранению хищений.Для работников энергоснабжающих организаций и инспекторского состава органов Ростехнадзора. Материалы книги могут быть использованы руководителями и специалистами энергослужб предприятий (организаций) для правильного определения расчетных параметров средств учета и потерь электроэнергии в электрических сетях.Если потенциальные расхитители электроэнергии надеются найти в книге «полезные советы», они должны отдавать себе отчет, что контролирующие структуры информированы в не меньшей степени и, следовательно, вооружены для эффективной борьбы с противоправной деятельностью.Настоящая книга является переработанным и дополненным изданием выпущенной в 2005 г. книги «101 способ хищения электроэнергии».

Валентин Викторович Красник

Технические науки / Образование и наука
Электроника для начинающих (2-е издание)
Электроника для начинающих (2-е издание)

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

Чарльз Платт

Радиоэлектроника / Технические науки
100 великих чудес инженерной мысли
100 великих чудес инженерной мысли

За два последних столетия научно-технический прогресс совершил ошеломляющий рывок. На что ранее человечество затрачивало века, теперь уходят десятилетия или всего лишь годы. При таких темпах развития науки и техники сегодня удивить мир чем-то особенным очень трудно. Но в прежние времена появление нового творения инженерной мысли зачастую означало преодоление очередного рубежа, решение той или иной крайне актуальной задачи. Человечество «брало очередную высоту», и эта «высота» служила отправной точкой для новых свершений. Довольно много сооружений и изделий, даже утративших утилитарное значение, тем не менее остались в памяти людей как чудеса науки и техники. Новая книга серии «Популярная коллекция «100 великих» рассказывает о чудесах инженерной мысли разных стран и эпох: от изобретений и построек Древнего Востока и Античности до небоскребов в сегодняшних странах Юго-Восточной и Восточной Азии.

Андрей Юрьевич Низовский

История / Технические науки / Образование и наука