воскресенье, июня 24, 2007

Первый в мире язык программирования

Мне всегда казалось, что первым был Фортран, что, в частности отображено и в наверное наиболее известной диаграмме истории языков программирования. На самом деле по влиянию и известности Фортран конечно и был первым. Однако с исторической точки зрения - нет.




[Если быть совсем точным, то уж по настоящему первым языком программирования была, по всей видимости, та нотация, с помощью которой были написаны программы Чарльза Бэббиджа в знаменитой статье Ады Августы Байрон, графини Лавлейс "Sketch Of the Analytical Engine"(статья представляла собой перевод статьи итальянца Менабреа о работе разностной машины Бэббиджа и, содержала существенное дополнение, написанное самой Адой Августой). Однако это был не вполне язык программирования, да и машина, для которой он предназначался существовала только в уме гениального человека. Замечу кстати, что в 1991 году музей науки в Лондоне создал по чертежам Бэббиджа его машину и она сейчас существует в рабочем состоянии]

Итак, первый язык программирования. Это был вовсе не Фортран, а язык с удивительным названием - Plankalkül, то есть в переводе с немецкого "Исчисление планов" или "План вычислений", был разработан немецким учёным, изобретателем и конструктором Конрадом Цузе в нацистской Германии между 1942 и 1945 годами.

[Цузе также сконструировал несколько различных моделей компьютеров. Например его Z3 тоже был создан раньше знаменитых Marc I и ENIAC и являлся при этом вполне полноценной машиной. ]

Утверждается, что всех своих достижений Цузе добился абсолютно самостоятельно, не обладая сведениями ни о работах американцев и англичан, проводившихся в близкое время, и даже не зная о работах Бэббиджа.

Создание языка программирования было естественным продолжением работ по созданию "железной" части компьютеров. Сам Цузе пытался с его помощью писать программу для игры в шахматы. Работы над языком были закончены около 1946 года, однако развития язык не получил и даже написанное руководство увидело свет только в 1972 году. Из-за этого язык оказался неизвестным и существенного влияния на дальнейшее развитие индустрии не оказал (в сравнении например с тем же Фортраном).

Тем не менее Plankalkül несомненно был первым в мире языком программирования высокого уровня. Основные концепции языка включают:

  • Наличие подпрограмм (и это в 1940-х годах!!!)
  • Наличие операции присваивания (=>)
  • Циклы
  • Условный оператор (if)
  • Возможность манипуляций с массивами
  • Возможность манипуляций со списками
При создании языка Цузе собрал множество проблем, которые были поставлены инженерами и учёными. Для демонстрации того, что язык действительно способен решать эти проблемы было написано огромное количество примеров программ (в частности около 60 страниц примеров для программы играющей в шахматы).

Одной из проблем языка был чрезвычайно сложный и очень непривычный современному программисту синтаксис. Вот пример присваивания A[5] = A[4]+1 на языке Plankalkül:


Здесь V - это строка для индексов, S - строка для задания типов данных, 1.n - обозначает целое число размером n бит.

В настоящее время институт Цузе в Берлине создал компилятор языка Plankalkul. На сайте института также представлены тексты работ Конрада Цузе и симуляторы созданных им компьютеров.

Plankalkül не оказал существенного влияния на другие языки. Но тем не менее историческое первенство - за ним.

5 комментариев:

Didro комментирует...

Спасибо за интересный и объективный рассказ.

Анонимный комментирует...

Спасибо за интересные исторические факты :)

lrrr комментирует...

Немножко OT: я вот картинку эту кажется видел в книжке "Кибернетика от А до Я" В. Пекелиса, 1990 года... это оттуда? :)

Lev Kurts комментирует...

Есть такая исследовательница Jean Sammet, которая в 1969 году написала книгу: Programming Languages: History and Fundamentals, 1969. Так вот, в качестве иллюстрации к этой книге была изображена "Вавилонская башня языков программирования", которую я и использовал как иллюстрацию. Выглядело это примерно так:
http://courses.cs.vt.edu/~cs1104/TowerOfBabel/ToB_1_0.htm


Jean Sammet - наверное самый серъёзный исследователь языков программирования в то время.

Известная "энциклопедия языков программирования" (http://hopl.murdoch.edu.au) огромным количеством своей информации обязано именно Jean Sammet.

P.S. Полный список всех языков, изображенных на башне можно найти вот тут:
http://rockfish-cs.cs.unc.edu/COMP144/sammet.pdf

lrrr комментирует...

Оо спасибо, я в общем-то и подозревал что вряд ли это скан этой самой "кибернетики..", и должен быть более древний источник, но не думал что картинка эта настолько легендарная :)