Система Ланинга и Цирлера
Система Лэнинга и Цирлера (иногда называемая ее пользователями «Джорджем») была первым действующим алгебраическим компилятором , то есть системой, способной принимать математические формулы в алгебраической записи и создавать эквивалентный машинный код (термин «компилятор» еще не был изобретен и систему называли « интерпретирующей программой»). Он был реализован в 1952 году. [1] для MIT WHIRLWIND Дж . Холкомба Лэнинга и Нила Зирлера. Ему предшествуют неалгебраические компиляторы, такие как UNIVAC A-0.
Описание
[ редактировать ]Система принимала формулы в более или менее алгебраической записи. Он соблюдал стандартные правила приоритета операторов , допускал вложенные круглые скобки и использовал верхние индексы для обозначения показателей степени . Это была одна из первых систем программирования, которая позволяла использовать символические имена переменных и автоматически выделять память.
Система также автоматизировала следующие задачи: вычисление с плавающей запятой , привязку к подпрограммам для основных функций анализа (синус и т. д.) и печати, а также массивов и индексации.
Система принимала входные данные на перфоленте, изготовленной компанией Friden Flexowriter . Набор символов , используемый при установке Whirlwind, включал в себя цифры в верхнем регистре (надстрочные индексы) и дефис, которые использовались для обозначения индексов массива, кодов функций и (целочисленных) показателей степени. Как и другие обозначения программирования того времени, система принимала только однобуквенные имена переменных, а умножение обозначалось сопоставлением операндов. Для явного обозначения умножения была доступна поднятая точка (символ был создан путем спиливания нижней половины двоеточия!) Система также включала поддержку решения линейных дифференциальных уравнений с помощью метода Рунге-Кутты .
Система была описана в 18-страничном машинописном руководстве, написанном для людей, знакомых с математикой, но, возможно, незнакомых с компьютерами. Он не содержит почти ничего, что могло бы дать представление о компьютерном оборудовании.
Пример программы
[ редактировать ]Следующий пример, взятый со страницы 11 руководства по системе, оценивает для используя разложение в ряд Тейлора . Реализация не очень эффективна, и система уже включает в себя в своей библиотеке подпрограмм, но этот пример служит для того, чтобы дать представление о синтаксисе системы. Обратите внимание, что деление в системе оценивается после умножения и что CP 1 является условной ветвью уравнения 1, если последняя вычисленная величина отрицательна:
x = 0, 1 z = 1 - x2/2 + x4/2·3·4 - x6/2·3·4·5·6 + x8/2·3·4·5·6·7·8 - x10/2·3·4·5·6·7·8·9·10, PRINT x, z. x = x + .1, e = x - 1.05, CP 1, STOP
Приложения
[ редактировать ]Для системы было написано несколько приложений. Одно задокументированное приложение, авторами которого были сами Лэнинг и Цирлер, касалось проблемы аэронавтики. [ нужна ссылка ] Для выражения задачи требовалось семь систем дифференциальных уравнений, и ее передали в Whirlwind, поскольку она была слишком велика для дифференциального анализатора Массачусетского технологического института . Авторы, используя особенность Рунге-Кутты своей системы программирования, создали программу из 97 операторов за два с половиной часа. Программа успешно заработала с первого раза.
Влияние на ФОРТРАН
[ редактировать ]Некоторые источники утверждают, что система Лэнинга и Цирлера послужила источником вдохновения для FORTRAN . Сам Джон В. Бэкус признался, что способствовал этому заблуждению:
Влияние системы Лэнинга и Цирлера на развитие ФОРТРАНа — это вопрос, который был запутан из-за множества неверных утверждений с моей стороны. В течение многих лет я считал, что идея использования алгебраической записи на FORTRAN пришла к нам после демонстрации системы Лэнинга и Цирлера в Массачусетском технологическом институте. (Бакус [2] )
Изучив документацию того времени, Бэкус узнал, что проект FORTRAN «идет полным ходом», когда он и его команда получили возможность увидеть работу Лэнинга и Цирлера:
[Мы] уже рассматривали алгебраический ввод, значительно более сложный, чем тот, который использовался в системе Лэнинга и Цирлера, когда мы впервые услышали об их новаторской работе ... [Трудно сказать, какие новые идеи, если таковые вообще были, мы получили, увидев демонстрация своей системы. (Бакус [2] )
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Дженкинс, Деннис (1 апреля 2001 г.). Дик, Стивен Дж .; Гарбе, Стив (ред.). «Передовая автоматизация транспортных средств и компьютеры на борту шаттла» . Полет СТС-1: Компьютер . НАСА . Архивировано из оригинала 14 июля 2022 г. Проверено 14 июля 2022 г.
- ^ Jump up to: а б Бэкус, Джон Уорнер . История ФОРТРАНА I, II и III . Труды Первой конференции ACM SIGPLAN по истории языков программирования. Сан-Хосе, Калифорния, США. Архивировано из оригинала 27 августа 2005 г. (16 страниц)
Дальнейшее чтение
[ редактировать ]- Лэнинг-младший, Дж. Холкомб ; Зирлер, Нил [в Викиданных] (январь 1954 г.). Программа перевода математических уравнений для Whirlwind I (PDF) . Приборная лаборатория Массачусетского технологического института . Инженерный меморандум Е-364. Архивировано (PDF) из оригинала 25 апреля 2022 г. Проверено 14 июля 2022 г. (28 страниц)
- Саммет, Жан Э. (1969). Языки программирования: история и основы . Прентис-Холл .
- «Раннее развитие языков программирования». История вычислительной техники в двадцатом веке . Нью-Йорк: Академическая пресса . 1980. ISBN 0-12-491650-3 .