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

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

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

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

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

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

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

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

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

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

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


На пути к возмужанию


Перейти на страницу:

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

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

Городской Пассажирский Транспорт Санкт-Петербурга: Политика, Стратегия, Экономика (1991-2014 гг.)
Городской Пассажирский Транспорт Санкт-Петербурга: Политика, Стратегия, Экономика (1991-2014 гг.)

Монография посвящена актуальным вопросам регулирования развития городского пассажирского транспорта Санкт-Петербурга. Рассматриваются вопросы реформирования городского пассажирского транспорта в период с 1991 по 2014 годы. Анализируется отечественный и зарубежный опыт управления, организации и финансирования перевозок городским пассажирским транспортом. Монография предназначена для научных работников и специалистов, занимающихся проблемами городского пассажирского транспорта, студентов и аспирантов, преподавателей экономических вузов и факультетов, предпринимателей и руководителей коммерческих предприятий и организаций сферы городского транспорта, представителей органов законодательной и исполнительной власти на региональном уровне. Автор заранее признателен тем читателям, которые найдут возможным высказать свои соображения по существу затронутых в монографии вопросов и укажут пути устранения недостатков, которых, вероятно, не лишена предлагаемая работа.

Владимир Анатольевич Федоров

Экономика / Технические науки / Прочая научная литература / Внешнеэкономическая деятельность
Компьютерные сети. 5-е издание
Компьютерные сети. 5-е издание

Перед вами — очередное, пятое издание самой авторитетной книги по современным сетевым технологиям, написанной признанным экспертом в этой области Эндрю Таненбаумом в соавторстве с профессором Вашингтонского университета Дэвидом Уэзероллом. Первая версия этого классического труда появилась на свет в далеком 1980 году, и с тех пор каждое издание книги неизменно становилось бестселлером и использовалось в качестве базового учебника в ведущих технических вузах. В книге последовательно изложены основные концепции, определяющие современное состояние и тенденции развития компьютерных сетей. Авторы подробнейшим образом объясняют устройство и принципы работы аппаратного и программного обеспечения, рассматривают все аспекты и уровни организации сетей — от физического до уровня прикладных программ. Изложение теоретических принципов дополняется яркими, показательными примерами функционирования Интернета и компьютерных сетей различного типа. Пятое издание полностью переработано с учетом изменений, происшедших в сфере сетевых технологий за последние годы и, в частности, освещает такие аспекты, как беспроводные сети стандарта 802.12 и 802.16, сети 3G, технология RFID, инфраструктура доставки контента CDN, пиринговые сети, потоковое вещание, интернет-телефония и многое другое.

А. Гребенькова , Джеймс Уэзеролл

Технические науки