Оказывается, и для машин создать всеобщий язык не так-то просто. «Машинный язык есть точное отражение конструкции вычислительной машины, — пишут французы Жак и Жанна Пуайе в книге «Электронный язык». — Унифицировать машинные языки — это все равно, что унифицировать все типы вычислительных машин». А этого никто, разумеется, делать не станет, как никто не станет стричь под одну гребенку все типы самолетов или телевизоров.
И все же в последнее время делаются попытки создать если не всеобщий язык машин, то хотя бы для отдельных видов вычислительных работ. Например, для научных исследований или бухгалтерских задач.
В 1959 году в Лондоне была созвана специальная конференция, в которой приняли участие ученые различных стран. На этой конференции было решено разработать универсальный язык для решения задач, связанных с бухгалтерским учетом.
Создаются и такие всеобщие языки машин, в которых обобщаются только самые общие правила. Наибольшей популярностью пользуется так называемый язык «алгол» (сокращение английских слов «algorithmic language» — «алгоритмический язык»). Он-то, по-видимому, и послужит основой всеобщего машинного языка будущего. Ведь, по словам программистов, он «располагает хорошо определенным словарем основных понятий, характер которых не отражает ограничений, вносимых вычислительными машинами и чисто математическими определениями; его целью является достижение наибольшей простоты понимания».
В записи на языке «алгол» не допускается использование дробей, верхних и нижних индексов и т. п. Поэтому программа, изложенная на «алголе», представляет собой линейную последовательность знаков, запись «в строку». Это устраняет двусмысленное толкование программы и делает запись лаконичной, сжатой. Но главное преимущество такой линейной, «строчной» записи в том, что язык машин также линеен: информация в машину поступает как последовательный ряд сигналов; «верха» и «низа» машина не различает.
В «алголе» установлены строгие и четкие правила описания каждого этапа работы машины (совокупность этих правил образует синтаксис языка). Из простейших «букв» алфавита «алгола» можно получать все другие, более сложные сочетания, более сложные синтаксические единицы. Вот весь алфавит «алгола», перечень основных символов:
1. Строчные и прописные буквы латинского алфавита и прописные буквы русского алфавита.
2. Арабские цифры 0, 1,2, 3, 4, 5, 6, 7, 8, 9.
3. Логические значения: «истина» и «ложь».
4. «Ограничители»: знаки четырех правил арифметики +, -, X, квадратные и круглые скобки, некоторые знаки препинания.
С помощью этих знаков на «алголе» может быть выражена любая программа, «понятная» электронной вычислительной машине.
Во многих странах созданы группы, работающие над всеобщим языком «алгол». Но уже сейчас ясно, что этот язык будет не единственным универсальным языком машин, а лишь первым по времени и признанию. С каждым днем расширяется область применения вычислительных машин. Значит, появляется больше новых программ. Изменяются и совершенствуются способы вычисления на машинах. Техника тоже не стоит на месте, и появляются все более надежные и мощные «электронные мозги». Строительство вычислительных машин становится развитой областью промышленности.
Универсальный язык, чтобы не быть простой забавой ума, должен меняться, должен жить, расти вместе с ростом науки и техники. И есть надежда, что в недалеком будущем будет создан такой развитый язык машин, который можно будет применить к задачам любого типа, к машинам любой конструкции — настолько он будет всеобъемлющ и гибок.
А КАК ЖЕ ЯЗЫКИ ЛЮДЕЙ
Мы рассказали лишь о машинном языке, специальных или всеобщих программах, которые создаются для машин. Но ведь разговор человека с машиной не ограничивается электронным языком, «внутренним» языком вычислительной машины.
Человеку нужно ввести в «память» машин знания, накопленные различными науками, и тогда они станут надежным помощником и консультантом. Человеку хочется заставить машину быть переводчиком «с двунадесяти языков». Наконец, заставить ее «понимать по-человечески» и отдавать приказы не в виде сухих цифр и программ, а обычным человеческим языком. Пусть сама машина решает, как ей лучше выполнить то или иное задание.
Все эти задачи можно успешно решить, если пользоваться математикой. Позволяет это сделать новая научная дисциплина — теория информации.
Глава 4
СИГНАЛЫ, БИТЫ, БУКВЫ
ИНФОРМАЦИЯ И СВЯЗЬ
В самом начале книги речь шла о различных языках, различных средствах связи между людьми. Особые «языки» есть, как известно, и у животных: муравьев, птиц, обезьян, дельфинов. Наконец, существует машинный «язык» — язык чисел и логических команд.
Примитивный «язык» животных, ограниченный «язык» машин, невероятно гибкий и всемогущий человеческий звуковой язык, другие, неязыковые средства связи — у всех есть нечто общее.
Во-первых, отправитель сообщения, будь это человек, дельфин или робот. Во-вторых, получатель этого сообщения. В-третьих, материальная среда, через которую сообщение передается, или, как говорят языком теории информации, канал сьязи. Без него невозможно никакое общение; даже сторонники телепатии (возможности передачи мысли на расстояние) признают, что и при таком средстве связи должна быть некая материальная среда, через которую передается сообщение.
Итак, получаем схему:
Она относится к любому средству связи, к любым собеседникам человеческого, животного или машинного происхождения. Если в глубинах космоса нас ждет встреча с неведомыми «братьями по разуму», то и тогда эта схема останется верна.
Впрочем, в нее нужно внести дополнение, прибавить еще один необходимый элемент — код.
Это слово, вероятно, вам знакомо. Знаменитая азбука Морзе является телеграфным кодом, о котором слышал любой школьник. Каждой букве русского языка соответствует набор точек и тире, например: букве «а» — точка и тире (.-), букве «е» — точка (.), букве «о» — три тире (-- ), и т. д.
Но эти точки и тире, кодирующие русские буквы, в свою очередь, кодируются на телеграфе. Точка — быстрый нажим ключа, короткий импульс тока; тире — нажим более медленный, импульс длительный.
Впрочем, и сами буквы также являются кодовыми знаками по отношению к нашей разговорной речи. Устную речь можно кодировать и другими способами, например, записывать на магнитофонную ленту или граммофонную пластинку. Наша речь будет тогда закодирована в виде звуковых волн.
Общение невозможно, если не пользоваться каким-либо способом кодирования. Более того, необходимо, чтобы и отправитель и получатель сообщения пользовались одним и тем же кодом. Вы слышите слово «я». Нельзя считать, что это местоимение первого лица, единственного числа. А вдруг человек говорит по-немецки? Ведь тогда это будет означать «да».
Еще более многогранный пример. Один и тот же кодовый знак «!» может значить: сильный ход в шахматной нотации; знак опасности — «осторожно!» — в дорожной сигнализации; восклицательный знак в правилах правописания; знак факториала в математике, например: 5! означает 1Х2ХЗХ4Х5, 21 — это 1X2, и т. п.
Мы приводили в начале главы схему. Теперь, пожалуй, стоит несколько уточнить ее. Существует некий отправитель сообщения. Имеется устройство, которое кодирует это сообщение. Есть канал связи, через который оно передается в пространстве и во времени.
И, наконец, есть получатель сообщения и декодирующее устройство, «понимающее» знаки кода. В итоге получаем:
Какими бы кодовыми знаками ни записывали знаменитую теорему, ее смысл остается постоянным.