
1977 год. Вашингтон. Джон Бэкус поднимается на кафедру, чтобы прочитать лекцию лауреата премии Тьюринга — высшей награды в информатике. Зал ждёт чествования FORTRAN: языка, который Бэкус создал двадцать лет назад и который сделал его знаменитым.
Бэкус делает нечто другое. Он представляет свою влиятельную лекцию «Can Programming Be Liberated from the von Neumann Style?» — «Может ли программирование освободиться от стиля фон Неймана?»
Человек, которого чествуют за FORTRAN, использует трибуну, чтобы объяснить: FORTRAN — это симптом болезни, а не лекарство. Вся архитектура современного программирования ущербна. Нужна другая парадигма.
Это редкая интеллектуальная честность: получить главную награду отрасли — и тут же сказать, что то, за что тебя наградили, было лишь шагом к чему-то лучшему.
Джон Уорнер Бэкус родился 3 декабря 1924 года в Филадельфии, Пенсильвания, и вырос в Уилмингтоне, Делавэр, — сын состоятельного биржевого брокера.
Он учился в школе The Hill School в Поттстауне, Пенсильвания, и, по всей видимости, не был прилежным учеником.
Это мягкая формулировка. Он столкнулся с академическими трудностями и был отчислен из Университета Вирджинии из-за плохой посещаемости. Богатый отец, частная школа, университет — и полное отсутствие интереса к формальному образованию.
Война изменила траекторию. Когда он поступил на военную службу, армия направила его изучать медицину в Университете Питтсбурга. Там он обнаружил, что ему нравится математика.
Медицина не стала призванием. Зато математика — стала.
После армии он посещал Haverford College, а затем Колумбийский университет, где получил степень бакалавра математики в 1949 году и магистра в 1950-м.
Плохой студент нашёл свой предмет — и стал отличным учёным.
С 1950 по 1953 год Бэкус работал программистом в отделах чистой и прикладной науки IBM. С 1954 по 1958 год — руководил отделом программных исследований.
IBM в начале 1950-х — это не та корпорация, которую мы знаем сегодня. Это компания, только начинающая понимать, что вычислительные машины могут делать нечто большее, чем обрабатывать бухгалтерские таблицы. Программирование в то время — это написание инструкций прямо на машинном языке: нули, единицы, адреса памяти. Каждая программа — утомительное ручное переложение математики в команды конкретного железа.
Бэкус понял: это неправильно. Математики и учёные не должны думать о регистрах процессора. Им нужен язык, на котором можно выразить алгоритм — и пусть машина сама разберётся с деталями реализации.
В 1954 году Бэкус собрал команду для определения и разработки Fortran для компьютера IBM 704. Хотя FORTRAN, пожалуй, не был первым языком высокого уровня, он стал первым, получившим широкое распространение.
Создание FORTRAN было не только лингвистической задачей — это была инженерная проблема первого порядка. Нужно было убедить скептиков, что компилятор — программа, переводящая человекочитаемый код в машинные инструкции — может делать это достаточно эффективно. В 1954 году большинство профессиональных программистов в это не верили.
Бэкус ввёл первый оптимизирующий компилятор, который облегчил принятие языка, и разработал форму Бэкуса-Наура (BNF) — нотацию для описания языков программирования, остающуюся стандартом в этой области.
В конечном счёте каждый проданный IBM 704 включал программу FORTRAN и сопровождающее руководство. FORTRAN завоевал значительную популярность в научном сообществе и на многие десятилетия стал доминирующим языком программирования для научных приложений.
Если FORTRAN дал программистам язык, то BNF дал лингвистам и учёным-компьютерщикам инструмент для описания любого языка.
Бэкус вступил в международный комитет по разработке алгоритмического языка программирования ALGOL 58 и его преемника ALGOL 60. Описания языка ALGOL использовали контекстно-свободную грамматику для формального описания синтаксиса, и Бэкус совместно с Питером Науром разработал нотацию Backus-Naur Form (BNF).
BNF — это способ записать правила грамматики языка в строгой формальной нотации. Например: «программа — это последовательность операторов, оператор — это либо присваивание, либо условие, либо цикл». Такая запись однозначна, проверяема и может быть обработана другой программой.
BNF стала значительной вехой в формализации языков программирования. Сегодня она используется при описании синтаксиса практически каждого языка программирования — от Python до JSON.
В 1963 году Бэкус был назначен IBM Fellow — в год, когда программа Fellows была впервые учреждена Томасом Уотсоном-младшим. На этой позиции Бэкус получил значительную свободу в выборе проектов, включая преподавательские назначения в Калифорнийском университете в Санта-Крузе и Беркли.
Свобода исследований, предоставленная IBM Fellow, — редкое явление в корпоративной науке. Бэкус использовал её радикально: вместо того чтобы развивать FORTRAN, он начал думать о том, почему всё программирование устроено неправильно.
Лекция 1977 года стала манифестом. «Can Programming Be Liberated from the von Neumann Style?» — название, которое прямо называет проблему.
Архитектура фон Неймана — процессор, память, шина данных между ними — лежит в основе всех современных компьютеров. Она же лежит в основе стиля программирования: программа — это последовательность команд, меняющих состояние памяти. Взять значение из ячейки А, прибавить значение из ячейки Б, записать результат в ячейку В.
Бэкус утверждал: это «узкое горлышко фон Неймана» — архитектурное ограничение, ставшее ментальной тюрьмой. Функциональное программирование предлагало другой путь: вычисление как применение функций к данным, без изменяемого состояния, без побочных эффектов, без бесконечного манипулирования памятью.
Бэкус создал новый язык FP (Functional Programming). Хотя теоретические основы функционального программирования были заложены ранее в лямбда-исчислении в виде Lisp Джона Маккарти, работа Бэкуса сделала функциональное программирование более известным.
Бэкус вышел на пенсию 31 октября 1991 года и был связан с исследовательским центром IBM Almaden в качестве консультанта.
Он не стал медийной фигурой, не превратился в бренд. Сорок лет в одной компании, постепенный уход в теоретические исследования, жизнь в Сан-Франциско, а потом в Ашленде, Орегон. Он был дважды женат. Первый брак — с Маржери Джеймисон (1947–1966), второй — с Барбарой Уной (1968 — до её смерти в 2004 году). Двое детей.
Джон Уорнер Бэкус скончался 17 марта 2007 года в Ашленде, Орегон, в возрасте 82 лет.
Бэкус получил Национальную медаль науки в 1975 году и премию Тьюринга 1977 года «за глубокий, влиятельный и долговременный вклад в разработку практических высокоуровневых систем программирования, в частности через работу над FORTRAN, и за публикацию формальных процедур спецификации языков программирования».
Помимо этого: W. W. McDowell Award IEEE (1967), IBM Fellow (1963), премия Дрейпера (1993), награда Computer History Museum Fellow Award (1997), членство в Национальной академии наук и Национальной академии инженерных наук, степень почётного доктора Университета Анри Пуанкаре (1989).
FORTRAN существует по сей день. Это не реликт — это рабочий инструмент: в астрофизике, в климатологии, в финансовом моделировании. Программы, написанные в 1960-е, всё ещё работают на суперкомпьютерах.
BNF присутствует в спецификации каждого языка программирования, созданного за последние семьдесят лет — от C до Python, от SQL до JavaScript.
Идеи Бэкуса о функциональном программировании, казавшиеся экзотикой в 1977 году, стали мейнстримом в XXI веке: Haskell, Erlang, Elixir, функциональные возможности в Python, Java и C++ — всё это отзвуки лекции, которую плохой студент из Уилмингтона прочитал, получая главную награду в информатике.
Двойное наследие: человек, давший программистам язык для работы — и одновременно указавший на его ограниченность. Редкая интеллектуальная честность, требующая не меньшего мужества, чем создание чего-то нового.
Джон Бэкус FORTRAN BNF премия Тьюринга
| Родился: | 03.12.1924 (82) |
| Место: | Филадельфия (US) |
| Умер: | 17.03.2007 |
| Место: | Ашленд (US) |
| Фотографии | 3 |