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

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

Первая из таких систем записи имела основанием число восемь и называлась восьмеричной. Если в двоичной системе используются две цифры, 0 и 1, то в восьмеричной их восемь: от 0 до 7. Каждая цифра служит для представления одной из восьми возможных трех битовых комбинаций (000, 001, 010, 011, 100, 101, 110 и 111).

В более сложной системе с основанием 16 (шестнадцатеричной) биты группируются по 4; 16 возможных комбинаций из 4 битов выражаются цифрами от 0 до 9 и буквами А, В, С, D, Е, F.

Увлечение машинками

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

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

Закончив в 1928 г. с отличием колледж Вассара в Пугкипси, Грейс Хоппер получила затем степень доктора математики (редкое достижение для женщины) в Йельском университете и, вернувшись в Вассар, стала преподавателем.

В разгар второй мировой войны Хоппер вступила в резерв ВМФ США и в июне 1944 г. получила офицерское звание. При росте 150 см и весе 47,5 кг она была, несомненно, самым маленьким морским офицером. Однако ее роль в эти годы можно считать огромной.

Младший лейтенант Хоппер была включена в команду ВМФ, которая разрабатывала программы для гарвардского «Марка-1». «Марк-1» был самой большой и симпатичной машинкой из всех виденных мной", - говорила она позднее.

Команда программистов, в которую включили Хоппер, состояла из двух мичманов-мужчин. Позднее выяснилось: узнав, что должен прийти «старый седой профессор колледжа», один подговорил другого не занимать соседний с ней стол. Однако вскоре Хоппер показала, чего она стоит как программист. «Я имела то преимущество, - говорила она, - что изучала как технику, так и математику и знала, как работает машина от начала до конца. Конечно же, я была счастлива. Заканчивая в 1928 г. колледж, я и не подозревала, что в 1944 г. появится компьютер».

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

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

Скрытая опасность восьмеричных

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

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

Хоппер была не одинока в своих попытках облегчить тяжесть программирования. Незадолго до ее приезда в Филадельфию Джон Мочли выступил с предложением, которое позволило программированию сделать первый осторожный шаг на пути к отказу от восьмеричных и шестнадцатеричных чисел. Он посоветовал своим программистам разработать компьютерный язык, который позволял бы человеку вводить задачу в машину в алгебраических терминах - этот шаг наверняка бы одобрил Конрад Цузе.

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

Например, круглая скобка превращалась в 09, плюс - в 07. Затем в компьютере специальная программа превращала эти коды в нули и единицы, и машина выполняла нужные операции.

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

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

Взяв численное значение 07, компьютер без труда выполнит последовательность шагов, в результате которых вычисляется сумма двух чисел, если только он был запрограммирован так, чтобы идентифицировать 07 как операцию сложения. Таким же образом компьютер может обработать и целое предложение вида: IF N < 100 THEN PRINT N/47 (IF - если, THEN - то, PRIN - печатать) и перевести его в машинные команды, следуя которым машина выполнит требуемые действия.

Такие целенаправленные манипуляции с символами - фундаментальный принцип, лежащий в основе языков программирования.

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

Вклад Великобритании

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

Одним из слушателей лекций был Морис В. Уилкс, впоследствии глава математической лаборатории Кембриджского университета. Вдохновленный услышанным, Уилкс возвратился в Англию и принялся за разработку машины, основанной на идее «Эдваке».

Работа началась в 1947 г. Новый компьютер «Эдсак» заработал в 1949 г., задолго до того, как фирма Мочли и Экерта выпустила первый коммерческий образец.

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

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

Вместо этого они ввели систему мнемоники, где каждая машинная команда представлялась одной заглавной буквой. Так, S обозначала «вычитание», I - «прочитать следующий ряд дырочек на входной бумажной ленте», T - «передать информацию в память», а Z - «остановка машины».