Как появились первые компиляторы

Nov 09, 2013 21:56



Грейс Хоппер у клавиатуры UNIVAC

Грейс Хоппер развила концепцию машинно-независимых языков программирования, что привело к появлению первых высокоуровневых языков. С её именем связаны две важнейшие разработки.

ПЕРВЫЙ КОМПИЛЯТОР

В 1951 году Грейс Хоппер получила задание создать библиотеку стандартизованных математических подпрограмм для компьютера Юнивак. Юнивак (UNIVAC) - это первый в США компьютер, предназначенный для коммерческого применения, и своим успехом он был в немалой степени обязан удобным компонентам ввода-вывода данных.

Уилкс и два других кембриджских программиста опубликовали книгу по системе программирования для «Эдсака» (это была первая книга по программированию), и созданный ими язык ассемблера стал предметом зависти передовых программистов всего мира.

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

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

Хоппер назвала эту транслирующую программу компилятором (compiler - компоновщик). «Подпрограммы находятся в библиотеке [компьютера], объясняла она позднее, - а когда вы подбираете материал из библиотеки, - это называется компоновкой. Так же и здесь».
 
Хотя «Автокод» Гленна*, созданный в 1952 г., обладал аналогичными свойствами, компилятор Хоппер стал первой транслирующей системой, получившей широкую известность. В отличие от построчной интерпретации текста, применяемой в «Кратком коде», компилятор Хоппер вначале целиком преобразовывал всю программу, записанную на языке высокого уровня, в машинный код. По желанию программиста преобразованная программа могла либо выполняться сразу, либо сохраняться для последующего использования.

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

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

Хоппер назвала свой первый компилятор A-0, подразумевая, что это лишь самое начало работы. По мере улучшения и расширения компилятора на протяжении ряда лет A-0 превратился в A-1, затем в A-2 и A-3. Когда через несколько лет фирма «Ремингтон Рэнд» выпустила компилятор в продажу, ее отдел торговли решил дать новому изделию более броское название, переименовав его в «Мэт-мэтик» (MATCH-MATIC).

"КОМПЬЮТЕРЫ - ЭТО ВСЕГО ЛИШЬ ТУПЫЕ МАШИНЫ, И УЧИТЬ ИХ АНГЛИЙСКОМУ ТАК ЖЕ ДИКО, КАК УЧИТЬ РАЗГОВАРИВАТЬ"

Тем временем Грейс Хоппер поставила перед собой новую цель. Она чувствовала, возможно, лучше, чем кто-либо другой, что распространение компьютеров из лабораторий в конторы корпораций и правительственные учреждения создаст совершенно новую категорию пользователей. «Существует много различных людей, которым нужно решать разные задачи, - говорила она. - Некоторые из них связаны с обработкой символов, другие - с обработкой слов, и им нужны языки другого типа, а не наши попытки превратить их всех в математиков».

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

Вместо того чтобы создавать новый язык, построенный на основе математических символов, они искали язык, на котором можно было бы писать команды типа COMPARE (сравнить) или TRANSFER (переслать). Через несколько месяцев работы Хоппер и ее коллеги выделили список примерно из 30 слов, которые стали «рабочими лошадками» обработки данных.

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

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

В стремлении убедить начальство Хоппер прибегла к довольно хитрому трюку. Она модифицировала компилятор, называемый тогда B-0, так, чтобы он реагировал не только на английский язык, но и на французский и немецкий.

Позже она объясняла: «Если вы сделали что-то один раз - это случайность, если два - совпадение, если же вам удалось осуществить это трижды, значит, вы открыли закон».

Вскоре после такой трехъязычной демонстрации компилятор, получивший название «Флоу-мэтик» (FLOW-MATIC) , поступил на рынок, пополнив семейство языков, облегчающих работу, таких как FLOW-MATIC, SpeedCoding и другие.

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

_________________________

*Иногда говорят, что первый компилятор был разработан Аликом Гленном, но он начал разрабатываться позже - в 1952 году. Юнивак к тому времени уже вовсю использовали, по делу и не очень:

Во многом благодаря неукротимой энергии Грейс Хоппер компоновщик и другие подобные вспомогательные средства способствовали коммерческому успеху машины «Юнивак» - первого компьютера массового выпуска и спроса.

Первая машина этой модели была отправлена в Национальное бюро переписи населения США в 1951 г., и в том же году еще 4 машины были поставлены вооруженным силам и правительственным учреждениям. А в 1952 г. компьютер «Юнивак», правильно предсказав неожиданную победу Дуайта Эйзенхаура над Эдлаем Стивенсоном в борьбе за президентское кресло, благодаря телевидению стал известен всей стране. Правда, это предсказание стало возможным лишь благодаря группе программистов, разработавших для этой машины программу анализа избирательной кампании.

[Источники]
http://chernykh.net/content/view/205/217/
http://chernykh.net/content/view/204/216/


изобретения, основоположницы, программирование, Новейшее время, США, наука

Previous post Next post
Up