Первый язык программирования высокого уровня — Планкалкюль

    Планкалкюль (Plankalkül) — первый в мире язык программирования высокого уровня, разработанный немецким инженером Конрадом Цузе между
    1942 и 1946 годами для его компьютера «Z4» (компьютер на снимке ниже, фото взято из «Википедии»).

    Z4

    Шла Вторая Мировая Война, Цузе работал в отрыве от учёных других стран, совершенно самостоятельно. За это время он создал не только язык программирования,
    но и написал на нём 49 страниц программ для оценки шахматных позиций. Полностью его работа была опубликована много позже, в 1972.

    Рискну рассказать об этом языке программирования, в качестве археологического изыскания. Тем более, что на русском языке об этом языке сказано очень мало.

    Только в 1957 году (работы были начаты в 1954) появился Фортран — язык, который большинство считает первым языком высокого уровня.

    «Z4» был электро-механическим, поэтому компилятора или интерпретатора Планкалкюля не существовало, но в 2000 году в Свободном
    универсистете Берлина (Freie Universität Berlin) был создан интерпретатор его
    диалекта (запускается в виде Ява-аплета в браузере).

    Диалект, который реализуется, назван Plankalkül-2000 и отличается от оригинала различными упрощениями.
    Например, упрощена форма записи, Цузе использовал двухмерную запись —
    первой строкой записывалось само выражение, а ниже некоторые его аргументы (тип переменной, индексы и так далее). Кроме того, были упрощены и значки самих операций,
    приведены к более привычному нам с вами виду.

    Язык довольно богатый, на мой взгляд, для сороковых годов-то: есть условные конструкции, два вида циклов (аналог while и for), есть массивы и кортежи,
    можно описывать и вызывать подпрограммы (но рекурсии нет).

    Все переменные делятся на четыре вида.
    • «Variablen» (Входные переменные) — это входные переменные подпрограмм, доступны только для чтения начинаются с буквы «V» и номера.
    • «Zwischenwert» (Значения промежуточные), доступны для чтения и записи, предназначены для хранения промежуточных вычисляемых значения, начинаются с «Z» и номера.
    • «Resultatwerte» (Результат) — в этих переменных возвращается результат вычисления, начинаются с «R» и номера.
    • «Indizes» (Индексы) — переменные цикла (аналога for), начинаются с «i», дальше может быть номер, номер необходим для организации вложенных циклов.

    Доступны три типа переменных. Несмотря на то, что «Z4» умел оперировать числами с плавающей точкой, интерпретатор этого не умеет.
    • Для целого неотрицательного указывается размерность в битах. Есть две формы записи «0» — один бит, «n.0» — «n» бит, например, 8.0 — один байт (8 бит).
    • Кортеж указывается в скобках, например (3.0, 4.0) — это две переменные в три и четыре бита, кортеж должен иметь более одного элемента.
    • Массив записывается через точку, к примеру: 4.5.0 — массив из четырёх элементов по пять бит в каждом, 32.(0, 8.0, 16.0) — 32 кортежа, в каждом из которых три переменных: один бит, восемь и
      шестнадцать.

    Планкалкюль явно можно сильно упростить по синтаксису, но современный диалект почти в точности копирует ту запись, которую использовал Цузе, я полагаю, что такой синтаксис родился из-за
    необходимости «отлаживать» программу на бумаге. Впрочем, язык настролько прост, что я его выучил целиком минут за 15 и даже написал на нём парочку программ в нескольких вариантах.

    Одна из них вычисляет указанное (по порядку) число Фибоначчи:
    P0 FactEvgenyStepanischev (V0[:4.0]) => (R0[:10.0])
    (0, 1) => (Z0[:10.0], Z1[:10.0])
    
    W1 (V0[:4.0]) [
        i > 0 -> (Z0[:10.0] + Z1[:10.0], Z1[:10.0] - Z0[:10.0]) => (Z1[:10.0], Z0[:10.0])
    ]
    
    Z1[:10.0] => R0[:10.0]
    
    END
    

    Запускать следует так: открываете страницу с интерпретатором, копируете в окно мою программу, нажимаете «Compile», открывается отдельное
    окно с Ява-аплетом (требует, чтобы на компьютере была установлена Ява), в открывшемся окне мышкой побитно набираете начальное значение V0 (нажимать надо на зелёные кружки́),
    потом в окне браузера нажимаете «Run», в красной строчке (R0) увидите получившееся значение.

    Запущенная программа на Планкалкюле

    Подпрограммы в языке начинаются с символа «P» и уникального номера, дальше идёт имя, по которому её можно будет вызвать, у меня подпрограмма называется «FactEvgenyStepanischev», заканчивается
    подпрограмма ключевым словом «END» (в оригинальном Планкалкюле его не было).

    У подпрограммы описываются принимаемые и возвращаемые значения, у меня используется одна переменная на вход, размерностью 4 бита и одна на выход, размерность в 10. Первой строкой
    присваиваются значения «ноль» и «один» промежуточным переменным Z0 и Z1. Тип переменных приходится указывать при каждом их использовании, преобразовать переменную в другой
    тип нельзя.

    Ниже идёт цикл «for» (W1), поскольку номер переменной цикла я не указал (указывается в первых квадратных скобках, которые тут опущены), используется переменная цикла «i», без номера.
    В круглых скобках указывается количество повторений, а в последующих квадратных — тело цикла. Подробности можно
    найти в описании.

    Операция «стрелка» („->“) — условная конструкция, часть справа будет выполнена, если выражение слева истинно. В диалекте работают только самые простые выражения, например
    цикл туда подставить можно, но кнопка «Run» в аплете у меня не появилась, поэтому я ограничился присваиванием внутри цикла.

    Я тут использовал комплексное присваивание, которое хорошо знакомо тем, кто использует Перл, Пайтон или ПХП, но работает оно иначе — присваивания выполняются
    последовательно, слева направо, поэтому я не могу ограничиться «(Z0[:10.0] + Z1[:10.0], Z1[:10.0]) => (Z1[:10.0], Z0[:10.0])», результат будет не тот, который ожидается.

    В конце я присваиваю промежуточное значение результирующему значению подпрограммы.

    Кроме этого в языке почти ничего и нет. Обращение к элементам массива, вызов функции и цикл «while» описывать отдельно смысла не имеет, они выглядят достаточно естественно в рамках этого синтаксиса.
    Все операции, поддерживаемые языком (их немного — логические операции, битовые операции и четыре арифметические действия) выглядят привычно.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 91
    • –21
      Самые старые языки (не считая линейку ассемблеров), на которых, лично мне довелось программировать это фортран (1957), алгол (~1959) и лисп (1958).
      • +68
        Спасибо, ценная информация.
        • +4
          Ну мне было бы интересно услышать и от других подобную информацию. Все рвутся использовать самые новые языки и библиотеки и совсем не много ищет нужный инструмент среди старых языков. А учитывая то, что смена поколений среди программистов в РФ тоже произошла, крайне интересно сколько молодых знают и использовали старые ЯП.
          • –17
            Ок. Мне 30 лет, и довелось попрограммировать (в смысле реальных проектов) на:
            Basic, Visual Basic, Assembler, C, C++, Pascal, Progress 4GL, RSL, Delphi, PHP, Javascript, Perl, Java, T-SQL.
            • –12
              Если не считать Ассемблеров, то из старого: Форт (1971), Си (1969), Лисп (1958), Фокал (1968), Бейсик (1964), Лого (1968), Паскаль (1970), Bash (1977). Сейчас учу Кобол (1959).
              • –20
                Мне 18 лет. Программированием начал увлекаться в 9 лет. Серьёзно им начал заниматься в 12. Имел дело с Assembler, C++, Java, Pascal, VB (Visual Basic), Delphi, PHP, Python, Ruby.
                • +11
                  Я что-то пропустил? Чем Вы, ребята, меряетесь здесь? :)
                  • –5
                    Человек попросил поделиться, кто какие старые языки применял когда-то. Почему вам померещилось, что мы меряемся?
                    • –3
                      Просто soomrack похвастался. Ну, я тоже не удержался.
                      А вообще тема интересная. Не в смысли старых языков, а в смысле списка языков, с которыми работали хабражители.
                    • +6
                      Жутко умиляют вот такие вот истории. Серьезно начал заниматься программированием в 12 лет? Что?
                      Я не спорю, что некоторые в этом возрасте действительно добиваются некоторых успехов, но серьезным их занятие назвать нельзя.
                      Серьезно заниматься программированием (не путать с увлечением) — это когда ты им зарабатываешь себе на хлеб, на постоянной основе, а повышение квалификации уже перестало быть целью — лишь побочная нужда.

                      Ну и в конце-то концов нормальное логическое мышление, крайне необходимое в этой сфере деятельности, развивает только пожалуй вышмат. Насколько помню, в 4 классе только-только начинают изучать дроби.
                      • 0
                        ну что же вы так. krovatti может быть имел в виду спортивное программирование.
                        Насколько я знаю, tourist, который является топ-2 в топкодере, начинал завоевывать свои первые медали в 3 классе. Он сейчас учится в 11 классе, но он задаст жару многим.
                        Хотя такие личности как он больше исключение, подтверждающие правило.
                    • +69
                      Мне 22 и я алкоголик.
                      • +4
                        habraголик.
                        • +5
                          Хах, долгое время аналогичная надпись красовалось у меня в информации профиля на хабре, пока не занялся поиском работы. Потом до меня дошло, что ссылка на страничку была включена в резюме. Пришлось немного подкорректировать…
                          • +3
                            Чтоб уж совсем в тему, знаю язык, русский.
                          • +5
                            Может, алголик?..
                            • 0
                              «Мне 20 и я бородат»
                            • +47
                              Все рвутся использовать самые новые языки и библиотеки и совсем не много ищет нужный инструмент среди старых языков.

                              MS против

                              • 0
                                А я томат.
                            • –14
                              плюс вам в карму.
                              • –2
                                А мне вот программировать на старых языках не приходилось…
                                • 0
                                  Фортран на лабах, запускали на СМ-1420 :)
                                • +1
                                  минималистический язык, выглядит вполне читабельно.
                                  • 0
                                    Попытался сходу вспомнить как называеться этот язык, и вспомнил только «План...» и что то там еще
                                    • +6
                                      Забавно наверное выглядели бы языки программирования, если бы в WW2 победили немцы…
                                      • +10
                                        тогда вместо Windows имели бы Fenster
                                        • +5
                                          А фирма Apfel AG выпустила бы телефон ichFernsprecher. Нет уж, на фиг!
                                          • +2
                                            Хуже бы не было.
                                            • +1
                                              Название длиннее, произносится сложнее. В остальном, конечно, вряд ли хуже.
                                          • 0
                                            то есть победили американцы?
                                          • +9
                                            Думаю, большинство присутствующих сейчас на «Хабре» этого уже не узнали бы.
                                            • 0
                                              Согласен. Но давайте не будем вспоминать плохое. Что было, то было. Почёт и уважение нашим дедушкам. Мы живы — это главное.
                                            • +1
                                              Ровно так же, как и сейчас.

                                              Не стоит забывать, что компьютер Цузе Z4 был электромеханическим, на реле. http://en.wikipedia.org/wiki/Z4_%28computer%29
                                              И программа, которая пишется — это фактически машкоды.
                                              • +1
                                                Думаю, языки высокого уровня стали бы развиваться намного раньше.
                                                • +5
                                                  Разве что, вместо Hello, World! писали бы Hallo, Welt!.

                                                  Но с другой стороны, в штаты как раз из Германии (да и из захваченных ею стран) в 30-40х годах уехало очень много ученых, которые в последствии сильно продвинули компьютерную науку. Тот же фон Нейман. И если бы WWII закончилась бы альтернативно, неизвестно чтобы стало с наукой в Штатах.
                                                  • +14
                                                    >>Разве что, вместо Hello, World! писали бы Hallo, Welt!..
                                                    Скорее Heil Hitler
                                                    • +3
                                                      Язык высокого уровня третьего рейха, угу
                                              • 0
                                                тогда бы кто-нить обязательно написал в всемирном рейхнете
                                                Programmiersprachen wahrscheinlich komisch aussehen, wenn die Deutschen gewann in der 2. Weltkrieg…

                                                [гугль транслейт]
                                                • +1
                                                  опсс…
                                                  Programmiersprachen wahrscheinlich komisch aussehen, wenn die *Russen* gewann in der 2. Weltkrieg…
                                                • –2
                                                  По счастию, это было абсолютно невозможно.
                                                • 0
                                                  Ничего не знал о немецких компьютеров той поры. Пойду почитаю в википедии.
                                                  • +2
                                                    Компьютер на снимке похож на музыкальный инструмент?
                                                    • +4
                                                      Это только монитор с клавиатурой. Остальные пару тонн процессора находятся в шкафах на заднем плане.
                                                    • –9
                                                      запускается в виде Ява-аплета в браузере
                                                      Джава. И никак иначе.
                                                      • +6
                                                        В отношении произношения в русском языке, как и в ряде других, образовались две различные нормы — заимствованная англоязычная /ˈdʒɑːvə/ («джава») и традиционно-национальная «ява», соответствующая традиционному произношению названия острова Ява.

                                                        Пишет нам «Википедия» и в словарях это мнение так же встречается.
                                                        • +3
                                                          да, действительно, в статье написано, что безграмотные программисты из России используют слово «ява». а ещё там написано, что владелец платформы и весь мир использует правильное название «джава». то, что вы скопировали, подмечено на правах местечковой причуды, которая английской версии этой статьи опущена.
                                                          • +3
                                                            Владелец платформы не называет язык «Джава», потому что звук «dʒ» читается как одна буква, которой в русском языке нет. Зато в русском языке есть название острова «Ява», который имеет отношение к одноимённому языку.
                                                            • +5
                                                              не называет язык «Джава», потому что звук «dʒ» читается как одна буква
                                                              что такое транскрипция знаете? так вот, транскрипция их java на русский это джава.
                                                              Зато в русском языке есть название острова «Ява», который имеет отношение к одноимённому языку.
                                                              да, остров имеет. но прямой связи тут никакой нет, с момента наименования языка для него это имя собственное и оно утрачивает связь со своими корнями. в русском языке, например, есть словосочетание «вальс бостОн», которое произносится так и только так, хоть и название города произносится с ударенем на первый слог. можно привести массу примеров.

                                                              не подумайте, что я буквоедствую, но это как называть линукс «линаксом», а убунту «убанту»
                                                              • +6
                                                                Закончим спор.
                                                                • –3
                                                                  как раз называть яву «джавой» это как называть линукс «линаксом» и убунту вот как вы назвали. херь неблагозвучная.
                                                                    • –2
                                                                      ок. спорить без логики я не умею, увольте.
                                                                      а по вашему получается что
                                                                      джава = линукс, а
                                                                      ява = линакс

                                                                      хотя ближе к транскрипции именно линакс и джава, а не ява и линукс.
                                                                      • +1
                                                                        линукс не английское слово и образовано от имени Линуса, поэтому ваши доводы безграмотны. по поводу джавы я всё расписал ниже
                                                                        • –1
                                                                          linux пришол к нам из английского, а не из финского. так же как и java. в английский они пришли из других языков и как там звучали — дело пятое.
                                                                          • –2
                                                                            линукс не приходил к нам из английского. джава пришла к нам из английского, и как звучит на нашем название острова ява — дело пятое
                                                                            • +2
                                                                              Вы почему-то считаете, что критерий правильности — это как происхождение слова. Это не так. Единственный критерий правильности в русском языке — это соответствие языковой норме. Никто не пишет Ландан (Лондон), Чечил (Черчилль) и тд. Если название Ява стало общепринятым, то оно является правильным, чего уж тут поделаешь.
                                                                              • –4
                                                                                да, критерий правильности — языковая норма. но её определяет не большинство, а авторитетный источник
                                                                                • 0
                                                                                  • +3
                                                                                    J in the English language (which is a Germanic descended language) was the last letter added to a English alphabet, even in old german words like jear became year in English. so y became the german J sound when Anglo saxon moved from runic to latinized alphabet. That said, Java is an island in Indonesia, and pronounced with the dz sound, the coffee that comes from there give another common used name, and that is where java comes from.
                                                                  • 0
                                                                    Не поверите, но линукс читается «линукс», а убунту — «убунту».
                                                              • +1
                                                                Ну а что делать, если мы в этом местечке родились и живём? К тому же, если доведется общаться на инглише войсом, то и так надо запомнить, что Ява — это /ˈdʒɑːvə/, и наоборот, а не вникать в контекст о ЯП говорится, об острове или о кофе.
                                                            • +5
                                                              Тогда уж «Джавэ»
                                                              en.wiktionary.org/wiki/Java
                                                              www.howjsay.com/index.php?word=java

                                                              отличный ремарк на stackoverflow по этому поводу

                                                              I had an Indian lecturer at university who pronounced it the same as those little robed dudes from Tatooine in Star Wars.
                                                              • +2
                                                                Наверно и BMW вы называете Би Эм Даблью?
                                                                • 0
                                                                  это немецкие литеры и для них привычное нам произношение правильно
                                                                  • +2
                                                                    Тем неменее американцы именно так и говорят. А еще как вы назовете Delphi — делфи или делфай?
                                                                    • 0
                                                                      американцы ещё и в победе во второй мировой убеждены. главное что немцы так не говорят

                                                                      делфи я называю делфи (вот тут я засмеялся в голос, уж до боли похоже на Hello, this is Linus Torvalds and I pronounce Linux as 'Linux')

                                                                      опережая ваше предположение об открытости последнего слога скажу сразу — это греческое слово
                                                                      • +4
                                                                        Следуя вашей логике:
                                                                        Язык Java назван в честь марки кофе Java, любимого некоторыми программистами, поэтому на официальной эмблеме языка изображена чашка с дымящимся кофе, который в свою очередь назван в честь острова Ява. Из чего следует, на русском стоило бы произносить именно «ява».

                                                                        Хотя так уж сложилось, что в России правильными будут оба варианта + сленговый жаба. Просто все сторонники произношения Джава пытаются услужить видимо SUN, ибо:
                                                                        «Компания Sun придерживается англоязычного произношения во всех странах мира».
                                                                        • –3
                                                                          неа. и с делфи и с джавой сохранено оригинальное произношение. с этой вашей «явой» оно искаверкано по весьма сомнительной причине. тот факт, что на нашем языке один из (или единственный) этимологических корней слова произносится по-другому не даёт оснований каверкать само это слово, если говорить строгим языком
                                                                          • +3
                                                                            А Япония — это исковерканное 日本 или Japan? Вы как по-русски пишите это слово и как произносите?

                                                                            • 0
                                                                              Япония у нас и есть Япония, а 日本 вообще эндоэтноним и к нему правила заимствования ну никак не применимы
                                                                              • +4
                                                                                А я считаю, что у нас Ява и есть Ява. Уже заимствованное слово, пускай и совсем по другому поводу. Зачем множить сущности? А Джава можно назвать эндоэтнонимом :)
                                                                          • 0
                                                                            Не думаю, что Sun, а точнее Oracle. Просто сторонники глобализации и унификации, по крайней мере в том, что касается ИТ терминологии. Может с иностранными коллегами чаще общаются, причём войсом.
                                                                            • 0
                                                                              По поводу второго соглашусь, подумал тоже об этом. Но опять, далеко не все с западными коллегами общаются. По мне, так оба названия верны. Лишь бы собеседник или коллега тебя понимали.
                                                                              • 0
                                                                                Иностранным коллегам (по опыту общения), что «Джава», что «Ява», всё одно непонятно. У них эта буква в один звук произносится.
                                                                                • 0
                                                                                  Я имел в виду, что употребляют «джава» не для того, чтобы иностранцам было понятно, если услышат диалог между двумя русскими программистами, а просто чтобы не плодить сущности у себя в мозгу и не называть одно и то же то джавой, то явой, в зависимости от того на каком языке разговаривает :) Кстати, не раз замечал такую привычку у тех, кто много общается по-английски — заимствованные, скажем так, транскриптивно английские слова типа маркет или менеджер произносят по правилам английского языка, и даже читают так, как будто они написаны по-английски.

                                                                                  А кто не общается войсом, тот предпочитает java всегда в своем мозгу переводить как ява, не думая речь идет о мотоцикле, кофе, острове, ЯП или сигаретах :)
                                                                          • +3
                                                                            > как вы назовете Delphi — делфи или делфай?

                                                                            Дельфи?
                                                                        • 0
                                                                          Да чего уж там, давайте и Питон называть пАйтоном,
                                                                          • 0
                                                                            ну, я знаю людей, настаивающих на этом, и, видимо, они имеют на то основания
                                                                            • +4
                                                                              Да хоть горшком назови — только в печь не клади © народная мудрость
                                                                              • –6
                                                                                лично мне больше всего греет душу название Пистон
                                                                              • +8
                                                                                На логотипе Python изображён питон. Было бы логично так и называть. Но достоверный источник из википедии говорит, что назван Python в честь «Monty Python», на русский произносится как Монти Пайтон. Эти факты всем известны, просто решил напомнить.
                                                                      • +2
                                                                        Ностальгирующие могут почувствовать себя сидящим за терминалом БЭСМ-6. Точнее за его эмулятором.
                                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                                          • +2
                                                                            Пока ctrl+A не нажал, не видел, что к стройным рядам тумблеров есть подписи белым(!) цветом по чуть-более серому фону. Первая мысль была о том, что чукчи различают неопределенное, но весьма значительно количество оттенков снега.
                                                                        • 0
                                                                          А название языка как-нибудь расшифровывается / переводится?
                                                                          • +1
                                                                            Да, примерно как «планирующее исчисление».
                                                                          • 0
                                                                            Да… много людей понахватало минусов…
                                                                            • 0
                                                                              ну дык, аргументы кончаются — становится совсем обидно и люди даже в карму минусовать бегут

                                                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.