Язык программирования ibm как называется
IBM возродит язык программирования COBOL
В рейтингах популярности языков программирования относительно молодые Kotlin, Rust или Go все чаще вытесняют C++, Java и другую классику. Резкий скачок спроса на COBOL-программистов стал полной неожиданностью для рынка. Компания IBM решила, что «древний» язык рано списывать со счетов, и намерена возродить его.
Чем вызван скачок спроса на COBOL-разработчиков
Пандемия коронавируса привела к увеличению количества заявок на пособия по безработице в США: так, в штате Нью-Джерси рост за несколько недель достиг 1600%. Из-за всплеска обращений в службу занятости ИТ-инфраструктура системы не выдержала – ПО, значительная часть которого написана на COBOL, не было рассчитано на такие нагрузки. Чтобы оптимизировать код и расширить возможности системы, потребовались COBOL-разработчики.
Мейнфреймам, на которых было запущено ПО службы занятости, более 40 лет. Специалистов по их обслуживанию также не хватает.
Поиск разработчиков стартовал 4 апреля. Добровольцев стал искать губернатор штата Нью-Джерси Роберт Асаро-Анджело. Вскоре к нему присоединились власти Колорадо и других штатов, ведь поток заявок на пособия продолжал расти.
Но этот язык вряд ли можно включить в число популярных – так, авторитетный ресурс Tom’s Hardware назвал COBOL мертвым языком. Специализированных курсов по COBOL фактически нет, а значительная часть разработчиков, писавших подобные системы, уже вышла на пенсию.
Планы IBM
IBM планирует организовать обучающие курсы по COBOL. Инициативу поддержит Open Mainframe Project – курируемый Linux Foundation проект, который разрабатывает ПО с открытым исходным кодом.
В IBM уже заявили, что курсы будут бесплатными, но критерии отбора кандидатов пока не опубликовали. По завершении обучения компания выложит материалы курса на GitHub в аккаунте Open Mainframe Project, а затем и на Coursera.
Также компания возродит сообщество COBOL-разработчиков. Авторы инициативы будут продвигать современные методы общения среди специалистов. На сайте Open Mainframe Project уже создано несколько узкоспециализированных COBOL-форумов, задействуют и другие каналы. Отчасти ресурсы станут базами для поиска специалистов по COBOL.
Пользователи форума Reddit идею курсов по COBOL поддержали. Но далеко не все участники обсуждения выразили готовность помогать американскому правительству и компаниям, которые пользуются системами на COBOL. К тому же многие разработчики не верят, что обновление ПО на COBOL – действительно решение проблемы.
Особенности COBOL
COBOL – один из первых высокоуровневых языков программирования. Название языка – сокращение от COmmon Business Oriented Language, что переводится как «общий бизнес-ориентированный язык».
Первую версию COBOL выпустили в 1959 году. Разработкой занималась команда под руководством американской ученой Грейс Хоппер, коммодора флота США. Она же, к слову, создала первый в истории компилятор для языка программирования и развивала концепцию машинно-независимых языков, а также стала использовать термин debugging для поиска ошибок в работе компьютеров.
В COBOL используется строгая статическая типизация. Это ANSI-стандартизованный язык, сравнительно громоздкий и многословный – разработчики хотели приблизить его к естественной английской речи. Но за это COBOL критиковали: так, Дейкстра заявлял, что «использование COBOL калечит ум. его преподавание должно рассматриваться как уголовное преступление».
Код «Hello, world» на COBOL
В 2002 году COBOL пережил своеобразное перерождение. Он стал поддерживать парадигму объектно-ориентированного программирования и получил поддержку других современных конструкций. Но и до этого он умел работать с файлами, структурами данных и записями – это было весьма революционным для 70-80-х.
Где применяется COBOL
Казалось бы, от языка, которому пошел седьмой десяток, пора отказаться. Но, по данным Reuters, в мире до сих пор используется 220 млрд (!) строк кода на COBOL.
Этим ПО мы пользуемся каждый день. К примеру, код на COBOL можно встретить в 95% банкоматов и 43% банковского ПО.
Также COBOL используют крупные ведомства – уже упомянутая служба занятости США и другие государственные организации. В 2006 и 2012 году исследования показали, что COBOL используют 60% организаций в мире.
При этом в 1997 году в мире использовали 240 млрд строк кода на COBOL. Его общую стоимость оценивали в 2 трлн долларов США. Наконец, в 2006 году COBOL считался языком, на котором написано больше всего строк кода. Потеснить его смог лишь JavaScript из-за мощного развития веб-технологий.
Отказаться от всего этого кода быстро не получится. Прежде всего, нужны значительные средства, которые в разгар пандемии взять попросту неоткуда.
Кроме того, нужно разработать новую архитектуру, планы интеграции, постепенного вывода устаревшего ПО и его замещения новыми системами, обеспечить безопасность этих процессов. И, конечно же, требуются специалисты, которые способны разобраться в коде на COBOL и организовать его постепенную замену.
Чтобы понимать масштабы, приведем пример Банка содружества Австралии. Он решил отказаться от ПО на COBOL и заменил его новыми современными решениями. На это потребовалось пять лет и 750 млн долларов США.
История языков программирования: как Fortran позволил пользователям общаться с ЭВМ на «ты»
В 2017 году языку Fortran исполняется 60 лет. За это время язык несколько раз дорабатывался. «Современными» версиями считаются Fortran 90, 95, 2003 и 2008. Если изначально это был язык программирования высокого уровня с чисто структурной парадигмой, то в более поздних версиях появились средства поддержки ООП и параллельного программирования. На сегодняшний день Fortran реализован для большинства платформ.
До появления языка Fortran разработчики программировали, используя машинный код и ассемблер. Язык высокого уровня быстро набрал популярность, так как был прост в изучении и обеспечивал генерацию эффективного исполняемого кода. Это существенно упростило жизнь программистам.
В 1950 году, когда Джону Бекусу было 25 лет, он, получив степень магистра математики в Колумбийском университете, устроился программистом в фирму IBM. Вскоре он возглавил группу, разрабатывающую интерпретатор под названием «Быстрый кодировщик» для компьютера марки IBM-701. Затем он работал в составе группы по созданию более мощного преемника модели 701, машины IBM-704.
В 1953 году Бекус выступил с рационализаторской инициативой. Он предложил создать язык и компилятор к нему, которые должны были упростить программирование модели IBM-704. Система позволяла записывать программы в алгебраической форме, а компилятор должен был автоматически переводить ее в машинные коды.
С этим предложением Джон Бекус, как говорится, оказался в нужном месте, в нужное время. С опозданием выйдя на рынок, фирма IBM испытывала затруднения с увеличением сбыта своих компьютеров. По этой причине она поддерживала исследования по информатике в Колумбийском, Гарвардском и некоторых других университетах. Помимо этого, IBM и сама искала пути снижения стоимости программирования, а также пыталась упростить работу с компьютерами, чтобы сделать их более привлекательными, «дружественными» для пользователей.
Дело в том, что в то время с компьютерами работали в основном ученые, инженеры и преподаватели. Вычислительные машины использовались для научных расчетов. Однако эти люди испытывали большие сложности, так как приходилось использовать машинные коды и язык ассемблера. А это требовало довольно глубокого знания устройства и действия самого компьютера.
Поэтому они наверняка согласились бы изучить язык высокого уровня, особенно если бы он напоминал привычные им алгебраические формулы. Такие рассуждения подвигли IBM к разработке Fortran.
IBM-704
Исследователи фирмы IBM, создававшие Fortran, и не подозревали, насколько большое значение приобретет этот язык. Когда они в начале 1954 года приступили к работе, информатика развивалась стихийно, и каждый работал по наитию. Это привело к возникновению профессиональных программистов и специалистов по информатике.
Один из управляющих фирмы IBM решил, что из шахматистов получаются хорошие программисты, поэтому он заводил беседы с возможными кандидатами в программисты во время шахматных партий с одним из сотрудников фирмы IBM (который, кстати, был чемпионом США по шахматам).
Мало кто из восьми человек, занятых в разработке Fortran, был серьезно знаком с компьютерами. Они пришли из университетов и авиакомпаний, а также из собственных программистских групп IBM.
До колледжа Бекус был посредственным учеником («Я прошел больше школ, чем могу вспомнить»). После службы в армии во время второй мировой войны он оказался в Нью-Йорке, где поступил в школу радиотехники. «Пределом моих стремлений было сделать высококачественное звуковоспроизводящее устройство», — признался Бекус позднее,.
Однако преподаватель по ремонту телевизионной и радиоаппаратуры пробудил у Бекуса интерес к математике и убедил его продолжить учебу в Колумбийском университете. Так скромно началась одна из самых плодотворных карьер в истории вычислительной техники.
Итак, разработчики во главе с Бекусом расположились в штаб-квартире фирмы IBM на Мэдисон-авеню в Нью-Йорке.
Они выделили основные понятия нового языка, в частности оператор присваивания (например, N = 100), задававший переменным определенные значения, ввели индексируемые переменные, которые сообщали компьютеру, какой элемент из списка переменных нужен (например, X(3) означает третий элемент списка, названного X), предложили очень важный оператор DO, который позволял повторять нужную последовательность операторов заданное число раз.
Как заявлял Бекус, большинство людей считало, что основной вклад Fortran — это возможность писать программы в виде алгебраических формул, а не на машинном языке. Но на самом деле это не так. По его мнению, Fortran в первую очередь автоматизировал организацию циклов. Важность этой задачи при разработке научных приложений сложно переоценить. Работа над языком шла быстро.
Однако совсем другое дело — разработка компилятора. Бекус понимал, что развеять сомнения в возможностях «автоматического» программирования, то есть написания программ на языках высокого уровня нелегко. Это произойдет, когда программы, полученные с помощью Fortran, будут такими же быстродействующими и надежными, как и написанные в машинных кодах или на языке ассемблера, думал он.
По плану на разработку компилятора отводилось полгода, однако работа над ним заняла более двух лет.
В конце 1956 года и в 1957 году интенсивность работы по доводке и отладке компилятора резко возросла. В этот период члены группы часто снимали номер в ближайшей гостинице, где отсыпались днем, работая на машине по ночам, чтобы иметь возможно больше непрерывного машинного времени. Ошибки одна за другой устранялись, и в апреле 1957 года компилятор был готов для использования владельцами машины IBM-704.
«Большой конфуз»
По ошибке, которую Бекус назвал «большим конфузом», компилятор был послан в лабораторию «Вестингауз-Беттис» в виде колоды перфокарт и без каких-либо инструкций; что и позволило Гербу Брайту из лаборатории «Вестингауз-Беттис» запустить Fortran вслепую. Остальные пользователи получили систему на магнитной ленте вместе с руководством для оператора.
В одну из пятниц апреля 1957 года в компьютерный центр атомной лаборатории «Вестингауз-Беттис» возле Питтсбурга почтальон доставил загадочную посылку. Программист Херб Брайт и двое его коллег открыли ящик, на котором не было никаких пометок, и обнаружили там стопку примерно из 2 тысяч перфокарт, без единой инструкции.
Рассматривая перфокарты, Брайт вспомнил, что в IBM как раз шла окончательная отладка языка высокого уровня, предназначенного для использования на IBM-704. Может, почтальон принес именно этот долгожданный компилятор? Брайт и его друзья решили загрузить загадочные карты в компьютер и посмотреть, что получится.
Брайт вложил в считывающее устройство компьютера тестовую программу, написанную на Фортране, и нажал кнопку пуска. Новый компилятор выдал на принтер сообщение: «на карте № 25 обнаружена ошибка в операторе — пропущена запятая».
Программисты, привыкшие к запутанным сообщениям в виде числовых кодов, были поражены ясностью этой информации. Неверный оператор исправили и снова нажали кнопку пуска. Ленты начали вращаться, и компьютер выдал стопку перфокарт программы. Когда карты загрузили в считывающее устройство, заработал принтер и без остановки напечатал 28 страниц. Компьютер лишь слегка ошибся в формате выходных данных. «Но числа были правильными! Числа были правильными!» — восклицал позднее Брайт.
На самом деле, примерно в одно и то же время с Fortran’ом появилось еще два языка высокого уровня – Кобол и Алгол. Начиная с конца 50-х годов они долгое время лидировали в компьютерном мире. Большинство современных программ написано на языках, которые представляют собой потомки этих трех языков.
Распространение и адаптация
Но поначалу Fortran принимали без особой теплоты. Программисты, как вспоминал Бекус, «весьма скептично воспринимали все наши заявки». Однако по сравнению со своими предшественниками Fortran был сравнительно прост для обучения и использования.
Кроме того, фирма IBM снабжала все модели 704 Fortran’ом бесплатно. В результате к 1958 году более половины всех машинных команд на 60 компьютерах фирмы были получены не вручную, а «автоматически», с помощью нового языка высокого уровня.
Бекус понимал, что конкурирующие производители тоже займутся разработкой языков высокого уровня для своих вычислительных машин. Однако Fortran быстро стал нормой и его адаптировали для различных моделей ЭВМ. Первую адаптацию осуществила сама фирма IBM. Через пять лет Fortran использовался на шести различных моделях компьютеров фирмы IBM, а также на компьютерах компании «Сперри Рэнд», «Филко» и других.
Небольшая группа, в которую входил Дэвид Хеммис, за короткое время адаптировала Fortran к машине IBM-650, меньшей, чем IBM-704. Хеммис и его коллеги разработали систему «FORTRANSIT» (FOR TRANSIT — для перехода); позднее эти два слова слились в одно. Таким образом, система FORTRANSIT стала первым транслятором исходного, работающим на ЭВМ нескольких моделей.
Дэвид Хеммис – один из первых разработчиков компьютерных языков, за рулем своего автомобиля выпуска 1928 года. Фотография сделана в Уэстхемптоне (шт. Нью-Йорк) во время автомобильных гонок 1957 года.
Доработка
Тем не менее, работу над новым языком нужно было продолжать достаточно долго: это стало ясно еще в начале 1957 года, когда продолжался процесс отладки. Бекус и другие разработчики понимали, что язык нуждается в более точной системе диагностики программных ошибок. Кроме того, необходимо было реализовать возможность раздельного и независимого написания подпрограмм и программных модулей. Таким образом язык получил бы еще одно преимущество – повторное использование кода.
Благодаря усилиям разработчиков всего через год после создания оригинала появился Fortran II. Одно из достоинств нового языка состояло в том, что он позволял вставлять в программы фрагменты кода на ассемблере. Более поздняя версия, Fortran III, была создана в 1958 году. Про Fortran IV, который еще больше расширил возможности языка, стало известно в 1962 году.
Ядро языка, его основные операторы и выражения, оставались практически неизменными на протяжении многих лет. Но, поскольку Фортран многократно адаптировался ко все новым системам машин, для которых он не предназначался, постепенно накапливались отличия. Одни возможности терялись, новые возникали. Это неизбежно порождало путаницу.
Например, не все компиляторы одинаково истолковывали важнейший оператор DO: некоторые всегда выполняли цикл хотя бы один раз, не проверяя, нужно ли его вообще выполнять, другие осуществляли такую проверку. Чтобы навести порядок в подобных вопросах, производители и пользователи компьютеров договорились провести стандартизацию языка.
В 1966 году первый стандарт получил название Fortran 66. В 1977 году, соответственно, вышел стандарт Fortran 77. В 1991 году появился Fortran 90. Fortran 95 создан в 1997 году.
Fortran в СССР
В Советском союзе ко двору больше пришелся Алгол-60. Поэтому Fortran в этой стране появился позже. Тем не менее, постепенно он вышел на первое место по популярности. Были разработаны компиляторы (трансляторы) для большинства отечественных ЭВМ – «Минск-32», БЭСМ-4, БЭСМ-6, АС-6, ЕС ЭВМ, СМ ЭВМ, МВК «Эльбрус» и так далее.
В ИПМ им. Келдыша в разное время было разработано несколько трансляторов. Два из них – Фортран-Алмо и Форшаг (Фортран шаговый) были написаны на языке Алмо и код генерировали на этом же языке. Это позволило установить трансляторы на несколько разнотипных ЭВМ. В обоих трансляторах реализован стандарт Fortran 66.
Форшаг также включал язык диалога, который позволил создавать, редактировать и выполнять трансляцию кода в диалоговом режиме. Помимо этого, был разработан комплекс графических программ для Фортрана – Графор, который активно использовался на различных ЭВМ.
Fortran и по сей день остается популярным среди научных работников. Это первый язык программирования высокого уровня, имеющий транслятор, получивший практическое применение и дальнейшее развитие. Как говорилось в руководстве фирмы IBM, выпущенном в 1957 году, «Fortran обеспечивает эффективный способ создания программ для модели 704, прост в обучении и не требует глубоких знаний в области ЭВМ».
С тех пор научные работники, инженеры и студенты получили возможность общаться с компьютером без помощи профессиональных программистов, пишущих на ассемблере.
Однако следующее поколение программистов стало относиться к Fortran’у как к «ископаемому». Эдсгер Дейкстра, язвительно отмечал, что обучение студентов этому языку должно приравниваться к серьезному преступлению.
Персона. Джон Бэкус — создатель первого языка программирования высокого уровня
17 октября 1977 года на ежегодной конференции АСМ премия Алана Тьюринга была вручена человеку, который создал первый высокоуровневый язык программирования для научных и технических целей.
Премия была присуждена Джону Бэкусу «… за глубокий и важный вклад в создание практических систем программирования высокого уровня. В особенности – за работы по Fortran и частые публикации формальных процедур для спецификации языков программирования».
В 50-х годах ХХ века труд программиста по написанию, вводу и отладке программ был далеко не легким: сначала программы писались на машинном языке.
Для облегчения участи программистов были придуманы подпрограммы, а затем первые ассемблеры. Но эффективность программирования от этого существенно не повысилась. Если бы кто-то мог написать транслятор, который позволил бы вводить команды из слов и символов, а затем автоматически конвертировать их в машинный код.
Бесполезный Бэкус
Джон Бэкус родился 3 декабря 1924 года в Филадельфии. Его отец был главным инженером-химиком в компании по производству нитроглицерина. Бэкус-старший начинал свою карьеру как простой служащий, но потом продвинулся по служебной лестнице во время Первой мировой войны, когда благодаря его техническим изобретениям была предотвращена серия взрывов на заводах.
Джон закончил школу в Вашингтоне, затем осенью 1942 года поступил в Виргинский университет на химический факультет. Юноша не подавал никаких надежд в плане дальнейших успехов. Педагоги сомневались, что он мог принести хоть какую-то пользу обществу. Как позднее вспоминал он сам, несмотря на то, что родители определили его в престижную школу, процесс обучения вызывал у него отвращение. Когда Бэкус поступил в университет, единственным занятием, которое он посещал раз в неделю, был урок музыки.
К концу второго семестра, в 1943 году, руководство университета решило, что дальнейшее пребывание юноши в стенах учебного заведения излишне: Бэкус был отчислен. В это время была в разгаре Вторая мировая война, и США уже полтора года вели боевые действия против Японской империи. Молодой Джон Бэкус в чине капрала был принят в дружные ряды тихоокеанской ПВО. Однако в боевых действиях Бэкус участия не принимал.
Поиск себя
После демобилизации Джон вернулся в США и поселился в Нью-Йорке. Перед ним вновь встал вопрос выбора профессии. Ничто, кроме музыки, его не привлекало. Поскольку ему сильно хотелось иметь хорошую аппаратуру для прослушивания музыки, он поступил в школу радиотехники: получив там необходимые навыки, он смог бы самостоятельно сконструировать музыкальную аппаратуру.
Однажды один преподаватель попросил Джона Бэкуса помочь ему с построением графиков частотных характеристик усилителя. Вычисления были несложными, но их обилие утомляло. Неожиданно эти повторяющиеся математические операции заинтересовали Бэкуса. Преподаватель по ремонту теле- и радиоаппаратуры пробудил в нем интерес к математике и убедил его продолжить образование в Колумбийском университете.
Весной 1949 года, за несколько месяцев до получения диплома, 25-летний Джон Бэкус по-прежнему не мог определиться со своим будущим. В поисках перспективной работы его занесло в Компьютерный центр IBM на Мэдисон Авеню. Как оказалось, это была «судьбоносная случайность».
Получив степень магистра математики в Колумбийском университете, по приглашению Рекса Сибера — одного из изобретателей машины SSEC (Selective Sequence Electronic Calculator) – Бэкус поступил на работу программистом в фирму IBM. Это случилось в 1950 году.
Тогда слово «компьютер» (computer) обозначало совсем не то, что оно обозначает сегодня. Selective Sequence Electronic Calculator (SSEC) был одной из первых разработок IBM в новой области электронных вычислительных устройств на вакуумных лампах. Этот, так сказать, компьютер не имел памяти, а весь ввод и вывод происходил посредством перфолент. Так что, компьютерами были в каком-то смысле и люди, которые «помогали» машинам.
В проекте SSEC Джона Бэкуса подключили к решению задачи вычисления положения Луны в 12-часовом интервале на 200-летнем отрезке времени. Для вычисления каждой позиции Луны требовалось произвести 11 тысяч сложений и вычитаний, 9 тысяч умножений и выполнить 2 тысячи просмотров специальных таблиц. Это задача требовала напряженной работы 13 тысяч огромных вакуумных ламп SSEC. Различные узлы SSEC располагались вдоль трех стен комнаты размером 18 на 6 метров, а программисты находились как бы внутри компьютера.
Вычисления, выполненные, в том числе и Бэкусом, на SSEC, кстати, использовались в космической навигации НАСА в период с 1952 по 1971 годы. Позднее ему приходилось выполнять и более экзотические задачи — например, вычисление точных орбит пяти внешних планет Солнечной системы на временном интервале с 1653 по 2060 годы.
SSEC морально устарел уже в 1952 году и был демонтирован.
Fortran
В 1954 году компания IBM запустила новый проект – IBM 704. В отличие от ламповой ЭВМ 701, новый проект был электронно-магнитным. IBM 704 предоставила программистам универсальный набор команд для работы, в том числе с числами с плавающей запятой.
Реализовывать на языке ассемблера алгоритмы обработки чисел с плавающей запятой нелегко. А программировать в ту пору приходилось в основном только математические формулы, и никаких математических сопроцессоров не было. В конечном итоге «лентяй» Джон Бэкус (как он впоследствии шутливо, а может, и не совсем шутливо вспоминал) стал все больше задумываться над тем, как создать язык, независимый от архитектуры машины и позволяющий легко программировать математические формулы.
Джон Бэкус обратился к своему шефу Кутберту Хэрду с предложением разработать практический язык программирования высокого уровня и компилятор для машины IBM 704. Предложение Бэкуса было одобрено.
Fortran родился в штаб-квартире фирмы IBM на Мэдисон-авеню в Нью-Йорке — в офисе на 19 этаже, где расположилась группа Бэкуса. Сначала с Бэкусом работал только Ирвинг Циллер, потом присоединился Харлан Херрик с командой математиков и техников.
Бэкус собрал группу из девяти дипломированных специалистов по математике, и они с энтузиазмом принялись за работу по созданию нового языка. Эти девять человек позднее вошли в историю программирования – Роберт Нельсон (Robert Nelson), Харлан Херрик (Harlan Herrick), Льюис Хэйт (Lois Haibt), Рой Нат (Roy Nutt), Ирвинг Циллер (Irving Ziller), Шелдон Бест (Sheldon Best), Дэвид Сэйр (David Sayre), Ричард Голдберг (Richard Goldberg) и Питер Шеридан (Peter Sheridan).
В своих воспоминаниях Бэкус пишет, что из-за свойственной ему лени он создал такую систему управления группой, что ему, собственно, и делать-то ничего не приходилось. Наибольшую сложность представляла для него только задача, как заставить членов группы не тратить столько времени на игры. Программисты из группы Бэкуса во время ланча любили сразиться в шахматы (правда, в то время еще не виртуальные, а настоящие). И никакие угрозы не помогали в борьбе с этим: раньше 14:00 они обычно игру не заканчивали.
С тех пор некоторые думают, что «настоящие» программисты должны тратить не менее двух часов в день на (уже компьютерные) игры.
Разработчики не надеялись, что их язык программирования будет когда-либо использоваться на машинах, отличных от IBM 704, но они были уверены, что в случае успеха их работа существенно повлияет на ИТ-индустрию.
Они выделили основные понятия нового языка, в частности оператор присваивания (например, N = 100), задававший переменным определенные значения, ввели индексируемые переменные, которые сообщали компьютеру, какой элемент из списка переменных нужен (например, X(3) означает третий элемент списка, названного X), предложили очень важный оператор DO, который позволял повторять нужную последовательность операторов заданное число раз.
Текст программы стал более простым, появились конструкции IF для организации ветвлений и циклы. Невероятно упростилось программирование формул. Например, формула D=B^2-4AC, программирование которой даже на современном языке ассемблера потребует десяток строк кода, на новом языке записывалась следующим образом: D=B**2-4*A*C.
Как заявлял Бекус, люди ошибочно полагали, что основной вклад Fortran — это возможность писать программы в виде алгебраических формул, а не на машинном языке. По его мнению, Fortran в первую очередь автоматизировал организацию циклов. Важность этой задачи при разработке научных приложений сложно переоценить.
Работа над языком шла быстро, чего нельзя было сказать о разработке компилятора. Бекус понимал, что развеять сомнения в возможностях «автоматического» программирования, то есть написания программ на языках высокого уровня, нелегко. Программы на Fortran должны быть такими же быстродействующими и надежными, как и написанные в машинных кодах или на языке ассемблера.
Из трех лет, затраченных на разработку проекта в целом, более двух лет заняла работа над компилятором. Если первое сообщение о создании языка группа сделала в 1954 году, то о разработке компилятора — только в апреле 1957 года.
Первая страница руководства по Fortran с автографом Бэкуса
Разработчики долго не могли определиться с названием нового языка. Бэкус придумал несколько банальных названий, но каждый раз они не устраивали коллег. Но однажды он предложил FORTRAN (FORmula TRANSlation). Реакция была аналогичной, но это название было принято из-за отсутствия лучшего.
Джон Бэкус, конечно, шутит, когда говорит, что ничего не делал. Лавры создателя первого языка высокого уровня принадлежат ему по праву.
Algol
Другим важным достижением Бэкуса стало применение способа формальной записи — БНФ (Бэкуса — Наура форма) для описания языка Algol.
В 1958 году Джон Бэкус решил принять активное участие в обсуждении нового языка (он впоследствии и получил название Algol) в Цюрихе. Однако возникла проблема — английский язык, на котором изъяснялся Бэкус, был мало понятен швейцарским программистам. В связи с этим для описания конструкций языка были применены специальные диаграммы, которые Бэкус разработал совместно с датским астрономом и программистом Питером Науром. С тех пор форма Бэкуса-Наура (Backus-Naur Form — BNF) стала неким «эсперанто» мирового программирования. Программисту, владеющему BNF, для знакомства с новым языком не нужно изучать объемные труды с его словесным описанием: достаточно изучить BNF этого языка.
Синтаксические диаграммы BNF и дерево разбора
В феврале 1959 года Бэкус убедил влиятельную организацию SHARE (куда входили пользователи компьютеров фирмы IBM) сделать ставку на новый язык программирования. После этого организация настоятельно порекомендовала IBM реализовать Algol.
На словах компания пошла навстречу своим клиентам, а на деле работа в этом направлении почти не велась. В то время IBM была мировым лидером на рынке компьютеров и активно внедряла Fortran, что вполне ожидаемо. У членов SHARE, на самом деле, тоже не было ясной позиции. Когда их энтузиазм угас, они как ни в чем не бывало продолжали поддерживать Fortran.
А Бэкус, несмотря на неудачу, продолжал активно продвигать Algol.
В 70-е годы Джон Бэкус совместно с Джоном Уильямсом и Эдвардом Уимерсом он разработал новый язык программирования FP.
FP — это так называемый чистый функциональный язык программирования, в котором программист сосредотачивается не на переменных и их значениях, а на «черных ящиках» — функциях, имеющих вход и выход.
Бэкус представил миру новый язык в 1977 году в статье под названием «Can Programming Be Liberated from the von Neumann style? A Functional Style and its Algebra of Programs» («Возможно ли освободить программирование от стиля фон Неймана? Алгебра программ в функциональном стиле»).
FP был задуман скорее как математическая модель, чем как средство разработки ПО. Он является каноническим примером языка, использующим функциональную парадигму.
В FP особое внимание уделено точному семантическому описанию и обработке абстрактных типов данных. Также вместе со своими сотрудниками Бэкус разработал оптимизирующий компилятор, использующий алгебраические преобразования.
Идеи, использованные в языке FP, были использованы при создании языка LISP.
Память
Джон Бэкус ушел из жизни 17 марта 2007 года. Ему было 82. Несмотря на то, что в начале пути он не знал, что делать со своей жизнью, судьба приняла это решение за него.
Кроме премии Алана Тьюринга, о которой было сказано выше, Джон Бэкус в 1976 году был награжден Национальной медалью за вклад в науку.
«Иногда стимулом к изобретению становится не полет творческой мысли и не необходимость, а желание отдохнуть от нудной и тяжелой работы. Джон Бэкус убежден, что именно это заставило его разработать язык, в значительной мере автоматизирующий работу программиста», – пишет Лесли Гофф.