Главная arrow Гибкие системы arrow Первые компиляторы
Как начинался компьютер
Компьютерная революция
Двоичный код
Разработки военных лет
Интегральные микросхемы
Микрокомпьютер
Персоны
Сеть
Язык компьютера
Развитие ПО
Гибкие системы
Средства разработки
Информатика
Вычислительная наука
Операционные системы
Искусственный интеллект
Предыстория
Поиск
Знания и рассуждения
Логика
Робототехника
 

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

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

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

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

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

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

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

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

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

Работа над транслирующими системами - как компиляторами, так и интерпретаторами - велась в начале 50-х годов повсюду. Когда в 1953 г. фирма IBM вышла на рынок со своим первым полностью электронным компьютером модели IBM-701, она одновременно предложила и интерпретируемый язык ассемблера, названный «Спидкодинг» (SpeedCoding - быстрое кодирование).

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

Своей системой они достигли того, чего Джон Мочли ожидал от «Краткого кода» - возможности вводить математические символы в компьютер в естественном виде. В то время как в «Кратком коде» уравнение i = 10 записывалось в виде трех пар двузначных кодов (плюс три пары старших нулей), в системе Лэнинга и Цирлера оно записывалось просто как i = 10.

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

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

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

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

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

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

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

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

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