«Открытые системы»

Следуя историческим традициям русской поэзии, период с конца 50-х до середины 60-х годов справедливо можно назвать золотым веком языков программирования

Именно в это время был заложен фундамент для развития языков программирования на многие-многие годы вперед. Недолгий «золотой век» был отмечен яркими открытиями и творческими удачами, чего стоят одни названия — Алгол, Lisp и другие. В 60-е годы лучшие умы сосредоточили свое внимание на языках, и это неудивительно. Часть из них шла прагматическим путем, создавая практичные языки программирования, другие видели в языке нечто большее, их видение было обусловлено исследованиями в области искусственного интеллекта, желанием создать средство общения с машиной. Сегодня некоторые их взгляды представляются наивными, но следует учесть, что тогда все разнообразие программного обеспечения сводилось к компиляторам, не было ничего из того колоссального арсенала, который накоплен сегодня.

Алгол 60 приобрел большую популярность в Европе, чем в Америке, хотя впервые он был реализован на машине B5000 компании Burroughs

Хронологически следующим после Фортран был язык APL (его название иногда расшифровывают как A Programming Language, но чаще Array Processing Language). Первые сообщения об APL Кеннет Айверсон сделал в 1957 году, еще в свою бытность аспирантом Гарвардского университета. Ему невероятно повезло — его научными руководителями были Говард Айкен и выдающийся экономист, ставший в последующем лауреатом Нобелевской премии, Василий Леонтьев. Не удивительно, что в своей диссертационной работе Айверсон объединил их труды и одним из первых начал моделировать экономические процессы, решая на компьютере линейные дифференциальные уравнения.

Позже, перейдя в корпорацию IBM, Айверсон создал следующую версию языка, она получила название APL/360. Затем он основал компанию, где в 70-е годы разработал еще один язык, получивший название J, в честь жены и верной соратницы Джин. Своеобразие языка APL заключается в том, что в нем используется собственный набор символов, в том числе символы, не входящие в набор ASCII. Неожиданное решение позволило очень удобно записывать математические формулы, а наличие специализированного терминала и редкая для того времени интерпретация кодов программ открыли необычную для 60-х годов возможность работы в интерактивном режиме. Однако необходимость в специализированной клавиатуре и сложность распечатки листингов ограничили распространение APL. Отмеченные недостатки были компенсированы в языке J, который отличался прежде всего тем, что в нем использовались только стандартные символы ASCII; однако время было упущено, и язык APL, за который в 1979 году Айверсон получил Тьюринговскую премию, остался ему историческим памятником.

Через год после появления APL случилось еще одно важнейшее событие в истории языков программирования. В мае 1958 года в Цюрихе было объявлено, что совместным комитетом европейских и американских ученых был создан язык IAL (International Algebraic Language). Позже, признав оригинальное название неблагозвучным, IAL переименовали в Алгол 58. В этом виде язык не получил широкого признания, однако успех сопутствовал модернизированной версии Алгол 60. Этот язык почему-то приобрел большую популярность в Европе, чем в Америке, хотя впервые он был реализован на машине B5000 компании Burroughs.

Практическое значение Алгол 60 и его преемника Алгол 68 оказалось намного меньше, чем Фортран, чьи недостатки он должен был компенсировать, однако он чаще использовался в качестве языка для публикации алгоритмов.

Особый интерес представляет процедура разработки языка Алгол, которая привлекла к себе выдающихся ученых. Поколению программистов, воспитанных на языках Си или Java, могут показаться странными те надежды, которые возлагались на языки лет 40 назад. В них видели не столько прикладной инструмент программирования, сколько — не без излишней доверчивости по отношению к возможностям искусственного интеллекта — способ общения с машиной. Возможно, поэтому, а может быть, по причине большей, чем сегодня, гуманитарной составляющей в сознании программистской общественности в центре внимания последней оказались работы лингвиста Ноама Хомского, изучавшего синтаксические особенности естественных языков. Хомский отличался значительным своеобразием и несомненной харизмой. Сегодня трудно сказать с полной уверенностью, что его работы действительно серьезно повлияли на развитие языков программирования, но одно явное следствие, безусловно, есть — это нотация Бэкуса-Наура. Джон Бэкус и Питер Наур разработали формальный метод описания языков программирования, приобретший популярность благодаря Алгол: любой учебник по этому языку включал описание на BNF.

Сегодня Алгол интересен, пожалуй, только с исторической точки зрения, но, как ни странно, его непосредственный родственник JOVIAL живет и здравствует. Язык JOVIAL был создан Джулиусом Шварцем на IAL. Отсюда и аббревиатура JOVIAL (Jules Own Version of the International Algorithmic Language). Долголетие это языка объясняется тем, что еще в 70-е годы Пентагон пришел к разумному решению о принятии стандарта на систему команд и архитектуру 16-разрядного микропроцессора для бортовых систем (кстати, стандарт MIL-STD-1750 действует в армии США по сей день). В качестве стандартного языка был избран JOVIAL, поскольку Шварц заложил в него возможность создания кросс?платформенных программ, способных работать в реальном режиме времени.

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

К поколению перечисленных языков относится и LISP (LISt Processing), изобретенный сотрудником Массачусетского технологического института Джоном Маккарти в 1958 году. Судьба языка LISP феноменальна, он активно использовался в исследованиях, связанных с искусственным интеллектом, вплоть до 90-х годов. Потом интерес к нему ослабел, но начиная с 2000 года LISP снова на сцене, сегодня он в первой двадцатке по популярности. LISP относят к числу языков, чей индекс популярности в наши дни растет наиболее быстро.

Последним в списке легендарных языков можно назвать Кобол, его история неоднократно описана, он был создан специальным комитетом Минобороны США всего за шесть месяцев. В его основу были положены идеи языков FLOW-MATIC, изобретенного Грейс Хоппер, и COMTRAN Боба Бемера из IBM (последний более известен как один из авторов кода ASCII). Первая спецификация Кобол 60 была опубликована в 1960 году.

Немало интересных работ в области языков программирования было сделано и в СССР. К примеру, в 1966 году Валентином Турчиным был создан РЕФАЛ (РЕкурсивных Функций АЛгоритмический язык), изначально задуманный как метаязык для описания семантики других языков, но впоследствии, с появлением эффективных практических реализаций, он стал использоваться в качестве языка программирования.


Кеннет Айверсон (1920-2004), подобно многим другим таким же, как он, детям фермеров был вынужден бросить школу, чтобы работать. Во время Второй мировой войны он вступил в ряды Канадских королевских военно-воздушных сил. Демобилизовавшись, Айверсон поступил в Королевский университет в Канаде, который закончил в 1951 году со степенью бакалавра в области математики и физики. В 1951 году он получил степень магистра математики в Гарварде и в 1954 году здесь же — доктора философии в области прикладной математики. В 1955-1960 годах Айверсон занимал должность доцента в Гарварде. В это время он разработал нотацию для операций над числовыми массивами. В 1962 году Айверсон опубликовал описание этой нотации на разработанном им языке A Prog?ram?ming Language (APL). Этот очень компактный процедурный язык сверхвысокого уровня отличался крайней простотой для изучения, но его синтаксис не имел ничего общего с привычной алгебраической нотацией, и программы на APL было исключительно сложно читать. Вскоре он приступил к работе над языком программирования J, которую не оставлял до самой смерти.


Питер Наур родился 25 октября 1928 года. Он начал свою научную карьеру как астроном, получив в 1957 году степень доктора философии по астрономии. Но увлечение компьютерами побудило его изменить профессию. В 1959 году он получил должность в датском компьютерном институте Regnecentralen, где проработал до 1969 года. Одновременно с работой в этом институте он читал лекции в Институте Нильса Бора и Техническом университете Дании. В 1969 году Наур стал профессором Копенгагенского университета, где проработал почти 30 лет, до 1998 года. В 2005 году Наур был удостоен премии Тьюринга за его вклад в разработку языка программирования Алгол 60. Была особо отмечена его работа в качестве редактора сообщения Report on the Algorithmic Language Algol 60, которая стала важной вехой в развитии программирования. Все, кто так или иначе связан с программированием, знают имя Наура по букве «Н» в аббревиатуре БНФ (нормальная форма Бэкуса-Наура), названии общепризнанной нотации для записи синтаксиса языка программирования. В 2005 году Наур был удостоен премии Тьюринга, высоко ценимой в компьютерном мире, за вклад в создание языка Алгол.


Валентин Турчин родился в 1931 году в подмосковном Подольске. В 1947 году он поступил на физический факультет МГУ. По его окончании в 1952 году он поступил на работу в Физико-энергетический институт в Обнинске, где в 1957 году защитил кандидатскую диссертацию. В 1964 году Турчин был приглашен в Институт прикладной математики им. Келдыша в Москве. В 1966-1968 годах появились первые публикации об алгоритмическом языке РЕФАЛ, первом языке искусственного интеллекта и, фактически, единственном языком такого рода, который использовался в Советском Союзе. Примерно с 1960 года Турчин начал заниматься общественной деятельностью, печататься в самиздате. В 1973 году после открытого письма в защиту академика Андрея Сахарова перед Турчиным закрываются все возможности научной работы. В 1977 году Турчин покидает СССР. В 1977-1979 годах он работал в Институте Куранта, а с 1979 года Турчин — профессор на кафедре вычислительной математики в City College Нью-Йоркского университета. В 1990 году он начал осуществлять проект Principia Cybernetica. В 1999 году Турчин оставил свой пост в City College.