Квант

47

Зачем надо уметь программировать?

Повсеместное использование ЭВМ привело к появлению новой науки и нового вида занятий, новой профессии — программмирования.

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

Мир программы
Программа — это набор команд, обладающий двумя важными свойствами: выполнностью — каждая команда очень проста и, будучи отделной, всегда может быть выполнен; определенность — в любой момент известно, какую команду выполняется следующей.

Эти два свойства программы — пожалуй, самые важные: именно они обьясняют, почему программа обеспечивает ЭВМ автоматическую и непрерывную работу, приводящую к полезному результату.

Приведем пример чисто математической программы, в котором отсутствует проявлятся эти два свойства:

Начальное состояние: данные два натуральных числа.

Шае 1. Если числа равны, взять первое число в качестве результата и переставать.

Шае 2. Если они не равны, вычесть меньше из большого и разностюза меньше из которых управляется своим сложными программими. Ходим ли мы, дышим, читаем, дожим от холода, ворочаемся во сне — все это результат действия многих биологических программ, введенных в нас генетические (наследствие), или формировашихся под воздействием среды, или выработанных сознательно. Не будет большим преуvelчением сказать, что почти все, что мы делаем, мы делаем по программе, а когда размышляем, то, главным образом, корректируем наши старые программы и строим планы на будущее.

Уменение планировать свои действия наперед — это важнейшая черта поведения человека. Выдающийся программистами в этом смысле является спорстемы, космонавты, артистиы, хирургии — словом, все люди непрестанного, сложного и безошибочного действия. В то же время воженными программистами являются и осторожные, робкие с виду ребята, которые, попадая в новую обстановку, одолевают старших вопросами типа «А что дальше?», «А что, если?», «А где?», «А как тогда?» и т.п.

С давних времен казалось, что детей учатся, главным образом, подражанием, имитацией поведения старших. Лишь недавно, когда процесс обучения разгладели сквозь увеличательное стекло логического анализа, было обнаружено, что не только умственные, но даже многое движительные навыки человека выработавает, лишь поняв их природу, найдя элементарные движения и положения, осознав и закрепив их в сознании в

48

нужной последовательности, а затем натренировав до полного автоматизма.

Программы для ЭВМ

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

Matematikи и философы в сотрудничестве с биологами и инженерами убедительно показали, что законы управления и обработки информации, алгоритмы и программы, относящиеся к биологическим системам, с одной стороны, и к машinem-автоматам — с другой, устройены одинаково; для них годятся один и те же математические абстракции и теории. ЭВМ, благодаря огромной скорости работы и способности выполнить любую программу, дают принципально возможность воспроизвести любое «правильное» действия. Это делает ЭВМ не только нашим послушным и вессльным помогником, но и строим судьей полотны нашего знания о том действии, которое мы хотим передать машине.

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

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

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

«Вторая грамотность»

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

Электронно-вышистельные машины появилисьprimerно 35 лет назад, в разгар второй мировой войны. Непосредственной целью их первого начального применения былоускорение расчетов при разработке систем вооружения. Однако уже сейчас видно то время, когда ЭВМ, создавемые в десятих миллионов экземпляров, будут нашими верными и понятными партнерами во всех уголках Земли и в каждой виде нашей деятельности.

К этому времени программырование, то есть способность выразить любой «правильный» процесс средствами, доступными для передачи машине, становится второй грамотностью каждой обработанной целевекке. Но это — в будущем. А сейчас передами стоит задачаLINKвидания «второй безграмотности». Вам предстоит овладеть азами программырования.

Для этого прежде всего необходимо ответить на вопрос — что уменьшать вычислительные машины?

Машины только вычислют?

Верятно, девять из каждой десятих читателей ответят на этот

49

вопрос почти не задумываясь: машины умειот выполнять с огромной скоростью артифметические действия над многозначными числами, поэтому они могут заменить человека всюду, где нужно выполнить сложные подсчеты, решить уравнение, составить таблицу, расчитать траекторию космического корабля или конструкцию самолета — короче говоря, где нужно считать, вычислить — ведь не зря они называются вычислительной технике.
Лет 15—20 назад с таким ответом согласилось бы большимство специализов по вычислительной технике.
— А разве сегодня это не так? — может спросить удивленный читатель. — Нeyжели современные машины разучились считать?
Нет, не разучились, конечно. Количество задач, для решения которых нужно уметь только быстро и точно выполнить расчеты по известным формулам и правилам, не только не уменьшилось за последние годы, но даже возросло, и с таким задачи нынешние машины, разумется, отлично справляются. Но вычисление — давно уже не единственная и, по-видимому, не главная сфера, где ЭВМ приходит на помощь человека.

Система «Сирена» продает билеты
Рассмотрим один пример. Как известно, современные самолеты могут в течение нескольких часов доставить вас в самую отдельную точку нашей страны. А вот оформление билета на самолете иногда занимает гораздо больше времени, чем сам полет. Особенно много времени требуется бироирование мест, если вам нужно пересаживаться на другой самолет, например, в Киеве, Горьком или другом крупном городе. Агенство Аэрофлота, в котором вы заказывали билет, отправляет телефонму в пункт пересадки с просьбой забронировать для вас места на таком-то рейсе. Диспетчер, отвечающий за этот рейс, открывает соответствующее таблицу, отмещает забронированные места и составляет ответную телефонму, на основании которого вам выписают билеты. Все это занимает три-четыре дня — это если все в порядке, ни одна бумажка ни где не застряла и на нужном рейсе есть свободные места.

Но если вам предстоит пересаживать на другой самолет в Москве, то оформление билетов, верятнее всего, займет не более двух-трех минут. Дело в том, что бироированием билетов в Москве занимается автоматизированная система «Сирена», основу которого составляет мощная вычислительная машина.

АСУ “СИРЕНА”
Куярвуева U.Р.
БИЛЕТ
AM 213474
СЛУЖЕБНЫЕ ОТМЕТКИ
ОТПРАВЛЕНИЕ
РЕЙС
ЧИСЛО
МЕСЯЦ
ЧАСЫ
МИН
МЕСТО
9 2 7
26 02 19 50 01А
ЛИТЕР
ТБИЛИСИ
КАССОВЫЙ НОМЕР
2 5 7 5 3 1 1 1 0 3
2 3 0 2 7 9

50

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

Предположим, что мы пришли к новосибирскому оператору системы «Сирена» с просбой оформить несколько билетов на один из рейсов Москвы — Харьков. Оператор набирает на клавиатуре соответствующий запрос, и через одну-две секунды на экран появляется ответ машины. В течение этих секунд вычислительная машина, находящаяся за несколько тысяч километров от Новосибирска, просмотрела расписание, выбрала удобный для нас рейс, определяла, сколько на нем свободных мест, отвеча на места и сообщила их номера новосибирскому оператору — словом, продавла всего ту работу, на которомRANьте уходило несколько дней.

Если предложенные машиной места насSTRAВВАЮТ, оператор набирает на пульте подтверждающее сообщение, и далее ЭВМ заполняется, что места эти забронированы для пассажиров, которые таким-то рейсом прилетят из Новосибирска.

Если вспомнить теперь, сколько пассажиров каждый день прилетает в Московские аэропорты и улетает из них, и попробовать представить себе, сколько человек одновременно обращается к операторам «Сирены» в разных городах, то, может быть, тогда мы почувствуем, какую огромную работу выполняет «мозг» системы.

Что же делает ЭВМ в системе?

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

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

В-третьих, она должна умет, если это необходимо, именить храняшиеся в памяти сведения: отметить, что места, которые были свободными, теперь забронированы, что в расписание внесены изменения — то есть обработы информации —ценральный процесс.

Процессор — это мозг и сердце вычислительной системы: он управляет занесением информации в памяти и читением ее из памяти, он принимает запросы от терминалов и передает с их помощью свои сообщения человека, он выполняет его необходимую обработку информации, храняющейся в памяти и поступающей от терминалов.

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

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

51

Группа юных программистов у графопрострителя.

Ввод и вывод информации не обязательно при помощи терминалов, как в «Сирене». Например, для управления полетом пакеты машине удобно получить информацию прямо от радиолокатора, следующего за полетом. А для того, чтобы выполнить рисунок или чертеж, удобно выводить информацию не на терминал, а на рисунке устройства — графопростритель (см. фотографию).

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

Память
процессор
устроится ввода
мертины
устроится вывода
потоки информации
управление
СХЕМА 1

Незменнимми остатся и основные «умения» вычислительной машины: прием, хранение, обработка и вывод информации.

Итак, на вопрос «Что умют делать вычислительные машины?» мы, в основном, ответили.

А человек?

Тепер можно просить: а что должен уметь человек, работаюший с вычислительной машиной, составляющий для нее задания — программы?

В качестве ответа приведем считу из статьи одного из авторов «О человекеком и эстетическом факторах в программировании»:

«Programmict должен обладать способностью первоклассного математика к абстракции и логическому мышлению, в сочетании с эдисоновским талантом соорудить все, что угодно, из нуля и единицы. Он должен сочетать аккуратность бухгалтера с проницальностью разведчика, фантазию автора детективных романов с трезвой практичностью экономиста. А кроме того, Programmict должен иметь вкус к коллективной работе, понимать интересы пользователя и многое другое».

Для тех, кто хочет познакомиться с законами и методами программирования, изучить языки для взаимодействия с вычислительным машинами — языки программирования, научиться составлять программы для различных машин, сегодня начинает работать Заочная школа программирования. Передаемей слovo.