Промт: Grace Hopper dressed as a pirate

Почти все, имеющие отношение к IT, слышали историческую байку о первом баге в истории. Баг (английское bug, «жук») был вполне буквальным: в 1947 году в реле гарвардского компьютера Mark II застрял мотылёк. Куда меньшее количество наших современников знают, что процесс его извлечения из недр ЭВМ окрестила «дебаггингом» некая Грейс Хоппер — да так метко, что термин «дебаггинг» жив по сей день.

Ну и тем более немногие в курсе, что Грейс Хоппер отметилась в истории компьютерных технологий далеко не только этим курьёзом, но и куда более весомыми вещами. И вообще была впечатляющей особой, каррамба, сумевшей «войти в айти» на самой его заре — до того, как это стало мейнстримом. В конце концов, в честь абы кого не будут называть разом эсминец, суперкомпьютер, трансатлантический подводный кабель связи и колледж в Йельском университете!

Будь как бабуля Хоппер, юзернейм, и в твою честь тоже назовут эсминец

Грейс Хоппер — в девичестве Мюррей — родилась в Нью-Йорке в далёком уже декабре 1906 года в почтенной семье шотландско-голландского происхождения. Море у девочки было буквально в крови: её прадед Александр Уилсон Рассел, адмирал ВМС США, участвовал в разгроме эскадры конфедератов в заливе Мобил в 1864-м. Грейс была старшим ребёнком и заводилой младших — ей неоднократно влетало за то, что она подбивала сестру и брата на всевозможные похождения.

Впрочем, взгляды её семья имела вполне прогрессивные, да ещё и с математико-техническим уклоном: отец и дед Грейс служили страховыми брокерами и отменно умели считать, а мать была дочерью нью-йоркского инженера-строителя и хорошо разбиралась в математике. Неудивительно, что девочка росла любознательной: как-то раз, заинтересовавшись устройством часов, она разобрала семь будильников подряд — пока от неё не потребовали ограничить разрушительные эксперименты только одним устройством.

Маленькая Грейс Хоппер по версии нейросети Kandinsky 2.1

В частной школе для девочек из Грейс, по тогдашней традиции, пытались сделать образцовую леди и будущую жену, но как-то не сложилось. Зато отец одобрил её план поступить в женский колледж Вассар и получить хорошее образование: ведь большая часть наследства должна была отойти единственному сыну.

При первой попытке Грейс завалила латынь (и в самом деле, зачем она математику), но со второй всё-таки прошла в колледж. А затем поступила не куда-нибудь, а в Йельский университет — известный оплот иллюминатов с рептилоидами, — где за отличия в учёбе даже получила почётный диплом студенческого братства «Phi Beta Kappa». Грызение гранита науки не помешало ей одновременно с получением магистерской степени в 1930-м выйти замуж за профессора литературы Нью-Йоркского университета Винсента Фостера Хоппера — и обрести ту самую фамилию, под которой Грейс и войдёт в историю IT.


В 1934-м Грейс Хоппер защитила в Йеле диссертацию «Новые типы критериев неприводимости» на соискание степени доктора математики и математической физики. Её научным руководителем был Ойстин Оре — знаменитый норвежский математик, специалист в области алгебры, теории чисел и теории графов. Его открытия и наработки позже весьма пригодились в развитии программирования, в том числе и самой Хоппер. В том же 1934-м Грейс сама начала преподавать математику в колледже Вассар, откуда недавно выпустилась. В 1941-м она получила звание доцента — и тут до США добралась Вторая мировая война в лице ударивших по Перл-Харбору палубных самолётов адмирала Нагумо.

Хрупкая барышня-математик незамедлительно попыталась записаться в военно-морской флот по стопам прадеда-адмирала. Однако её не взяли, причём вовсе не за принадлежность к женскому полу. Во-первых, как раз через два дня после вступления страны в войну Грейс стукнуло 35 лет — многовато по тогдашним меркам, а во-вторых, она весила всего лишь 47 кило — на семь килограммов меньше минимального веса для женщин-военнослужащих. В довершение всего ей сказали, что хорошим преподавателем математики она принесёт стране больше пользы, а на флоте и без неё людей хватит.

Грейс Хоппер в 40-е годы

Однако Грейс была упорна в своём новообретённом стремлении надеть военно-морской мундир. В 1943-м она взяла отпуск в колледже и вступила в WAVES — женский добровольческий корпус резервистов при военно-морском флоте, призванный освободить флотских мужчин от офисной работы в тылу. В декабре 43-го её в порядке исключения приняли в школу курсантов резерва, Грейс окончила её лучшей на курсе и уже спустя год была назначена в бюро артиллерийских вычислительных проектов при Гарвардском университете в звании младшего лейтенанта ВМС США.


Тут-то и начался её путь в IT. Потому что Грейс как талантливого математика направили в команду Говарда Эйкена, работавшую над новейшим электромеханическим компьютером Harvard Mark I (он же IBM Automatic Sequence Controlled Calculator): монстром площадью в несколько десятков квадратных метров. Работа была увлекательной, но сложной и требовала очень много времени. Постоянно мотаться между Бостоном и Нью-Йорком было затруднительно — посему личная жизнь пошла под откос, и в 1945-м Грейс развелась со своим профессором литературы. Замуж она больше не вышла, предпочтя карьеру айтишника, а фамилию Хоппер оставила себе.

Грейс стала одним из трёх первых программистов новоявленного чуда техники массой 4,5 тонн, работавшего на перфокартах и вычислявшего логарифмы по целой минуте. Даже для сложения требовалась треть секунды, а для умножения — уже шесть секунд. Грейс написала для Harvard Mark I 561-страничное руководство, а также участвовала в вычислениях для расчёта траекторий снарядов корабельных зениток, которые в итоге превратились в почти непреодолимую преграду даже для японских камикадзе. Ну, и для Манхэттенского проекта покодила с Джоном фон Нейманом — результатом чего стало появление американского ядерного оружия вкупе с Хиросимой и Нагасаки.

Говард Эйкен, Грейс Хоппер и другие члены команды на фоне компьютера Harvard Mark I

Война окончилась, но Грейс уже была увлечена компьютерными вычислениями, а флотский мундир нравился ей больше любого платья:

Должны быть специальные курсы, посвященные гражданской одежде. Я всегда носила удобную военную обувь, а как только встала на каблуки — тут же упала!

В гарвардской лаборатории она продолжила работать с новыми компьютерами: сначала Harvard Mark II, а затем и Harvard Mark III. Именно при работе с Harvard Mark II жарким летом 1947 года и случилась та самая история с «первым багом». В какой-то момент компьютер начал «глючить», сотрудники лаборатории принялись искать причину сбоя — и нашли слегка поджаренного мотылька, зачем-то забравшегося в реле панели F под номером 70.

Тот самый «первобаг», который теперь заботливо хранится в Национальном музее американской истории Смитсоновского института

Вот только Грейс Хоппер, вопреки популярной легенде, могла быть в этом деле довольно-таки ни при чём.

Термин «баг» применительно к различным конструктивным проблемам в технике использовался в американском английском как минимум с 1870-х годов: его упоминал в переписке ещё Томас Эдисон в 1878-м. В годы Второй мировой термин применялся особенно активно, часто в сочетании с другой живописной лексикой — в связи с большим количеством свежеразработанной и потому «сырой» военной техники в распоряжении американских военнослужащих. Даже у роботов Айзека Азимова в рассказе «Как поймать кролика» 1944 года технические проблемы в устройстве назывались именно багами:

THE VACATION WAS LONGER THAN TWO WEEKS. That, Mike Donovan had to admit. It had been six months, with pay. He admitted that, too. But that, as he explained furiously, was fortuitous. U. S. Robots had to get the bugs out of the multiple robot, and there were plenty of bugs, and there are always at least half a dozen bugs left for the fieldtesting.

В классическом русском переводе Алексея Иорданского (1964 год) этот фрагмент звучит так:

Отдых продолжался более двух недель — этого Донован не мог отрицать. Они отдыхали шесть месяцев, с сохранением заработной платы. Это тоже факт. Но, как сердито объяснил Донован, так получилось чисто случайно. Просто специалисты «Ю. С. Роботс» хотели выловить все недоделки составного робота. Недоделок хватало — и всегда по меньшей мере десяток оставался до полевых испытаний.


В общем, к тому моменту, когда 9 сентября 1947 года в недрах реле компьютера Harvard Mark II нашли насекомое, термин был вполне употребителен — именно поэтому бедолагу-мотылька так и охарактеризовали.

Со словом «дебаггинг», которое часто приписывают Грейс, тоже не всё понятно. Дело в том, что в тот день Хоппер попросту не присутствовала в лаборатории, где работали над Harvard Mark II, — и непосредственно в процессе событий изобрести термин «дебаггинг» не могла.

Более того, слово debugging к тому времени тоже успело появиться. Правда, не у американцев, а у англичан: уже в 1945 году Оксфордский словарь цитировал это понятие в значении «исправление конструктивных дефектов при испытании авиационных двигателей». В том же году он упоминался в британском авиационном журнале в контексте работы с авиационными камерами. Так что первыми его придумали, похоже, авиамеханики Королевских ВВС в годы Второй мировой.

Примерно так выглядел дебаггинг в изначальном смысле слова

Вот только гарвардские компьютерщики, в отличие от офицеров действующих войск, вряд ли имели хоть какой-то опыт общения с персоналом британской авиации. Общепонятным слово debugging в конце 40-х было только в среде Королевских ВВС. Впрочем, его нашли и в письме ядерного физика Роберта Оппенгеймера за 1944 год — так что, в теории, через «несколько рукопожатий» оно могло опосредованно дойти и до команды также работавших на Манхэттенский проект компьютерщиков Гарварда.

Вполне возможно, в американском английском оно было изобретено заново — и именно в среде тех, кто работал над первыми американскими компьютерами. Возможно, что и самой Грейс Хоппер. Проблема в том, что мы не знаем.

Зато мы знаем, что Хоппер пришла в восторг от каламбурной истории с поимкой «бага» и всю жизнь очень любила рассказывать её своим многочисленным студентам. На своём приоритете в изобретении слова она никогда не настаивала — но из-за большого количества слушателей и частого упоминания этой истории термин мог попросту «приклеиться» к харизматичной и уважаемой IT-специалистке с офицерским званием.


В любом случае, байка про баг — лишь забавный курьёз. Настоящий вклад Грейс Хоппер в историю разработки компьютеров гораздо весомее. Дело в том, что именно она «научила компьютеры понимать по-английски», изобретя первый компилятор.

В 1949 году Грейс Хоппер ушла из лаборатории Гарварда и — оставаясь офицером резерва ВМС США — начала работать на компанию Eckert-Mauchly Computer Corporation, которую вскоре купила Remington Rand. И не просто работать: Грейс стала главным математиком команды, работавшим над созданием первого коммерческого компьютера UNIVAC I. Он был куда совершеннее недавних «Марков»: сложение выполнялось примерно за 500 микросекунд, а умножение — за 2000 микросекунд.

Грейс Хоппер за консолью UNIVAC I

Машина предназначалась для использования частными компаниями, где вполне могло не оказаться математиков уровня Гарварда. После некоторого объёма общения с клиентами и конечными пользователями Грейс пришла в голову ныне самоочевидная, но тогда революционная идея: а что, если вводить программный код на основе слов английского языка? Который затем будет преобразовываться, или компилироваться, специальной программой в понятные машине команды — и всё это вместо того, чтобы делать это посредством сложной для непосвящённого математической нотации.

В конце 1953 года Хоппер (уже в звании лейтенант-коммандера, или капитана третьего ранга для российского флота) донесла свою мысль до руководства Remington Rand, показав экспериментальный компилятор «A Compiler», он же A-0. Теперь каждая подпрограмма (например, возведение числа в степень) получала свой уникальный номер, записывалась в виде машинного кода на кассету и вызывалась в основной программе по этому номеру.

Пример машинного кода

Грейс Хоппер обосновывала свою позицию следующим образом:

Когда-то я была профессором математики. В те времена я обнаружила, что есть студенты, которые просто не могут изучить математику. Затем мне поручили сделать так, чтобы предпринимателям было легко пользоваться нашими компьютерами. Оказалось, что вопрос не в том, смогут ли они изучить математику, а в том, захотят ли они делать это. <...>

Многие из них говорили: «Выбросьте эти символы — я не знаю, что они значат, у меня нет времени их изучать!» А тем, кто заявляет, будто люди, обрабатывающие данные, должны использовать математическую нотацию, я посоветую для начала обучить математической записи вице-президента, полковника или адмирала. Уверяю вас, я уже пробовала.

Поначалу от неё отмахнулись, несмотря на представленные наработки. «В это не могли поверить, — вспоминала позже Хоппер. — У меня был работающий компилятор, и никто им не пользовался. Мне говорили, что компьютер может выполнять только арифметические операции».


Однако Грейс продолжила работу над созданием первого компилируемого языка — и стала-таки главой специально учреждённого под неё отдела автоматизации программирования. Уже в 1955 году её команда представила спецификацию к языку программирования FLOW-MATIC или B-0 (Business Language version 0), предназначавшегося для работы на UNIVAC I. Грейс реализовала прототип компилятора, который убедил руководство компании в осуществимости, полезности и коммерческих перспективах идеи. В 1958 году он стал доступен публично.

Ну а в 1959 году на свет появился разработанный уже коммандером (~капитаном второго ранга) Грейс Хоппер язык программирования COBOL: «common business-oriented language», «общий бизнес-ориентированный язык». Естественно, и тут не обошлось без ушей Пентагона, который считал введение единого стандарта для всё более массовых компьютерных систем (в том числе закупаемых для военных нужд) делом полезным. Именно Пентагон, закупавший в те годы солидную часть коммерческих компьютеров, настоял на необходимости предустановки на всех машинах компиляторов Кобола — ну и понеслось. А Грейс Хоппер получила почётное прозвище «бабушки Кобола» — и, соответственно, всех последующих языков программирования на основе перевода слов из человеческих языков компиляторами.


С тех пор Кобол настолько глубоко проник в компьютерные системы американского государства и его военных структур, а также больших старых банков, что по сей день используется на немалом числе старых мейнфреймов. И уходит под давлением новых систем медленно и нехотя. Ещё в 1997 году кодом на Коболе обрабатывалось около 90% глобальных финансовых транзакций и 75% коммерческих транзакций.

При этом Кобол — как «дедушка» поздних и более рационально устроенных языков — взрывал мозги немалому числу программистов из-за своей громоздкости, многословности и подчёркнутой ориентированности на более-менее связный английский текст. К примеру, классический «Хеллоу ворлд» на нём выглядит так:

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
*
ENVIRONMENT DIVISION.
*
DATA DIVISION.
*
PROCEDURE DIVISION.
PARA-1.
DISPLAY «Hello, world.».
*
EXIT PROGRAM.
END PROGRAM HELLO-WORLD.

Взбешённый этим вязким «многабукафф», нидерландский учёный Эдсгер Дейкстра даже утверждал, что Кобол ни много ни мало калечит мозг — и в полемическом запале требовал признать его преподавание и использование уголовным преступлением. Но не будем винить за это Грейс Хоппер: она всё же была первой. Именно её идея заложила основы массового освоения программирования без необходимости в фундаментальном математическом образовании — приблизив тем самым нынешнюю эпоху.


Сыграв свою главную роль в истории IT, Грейс Хоппер и не подумала успокаиваться. В 1966 году и в 60-летнем возрасте она, в соответствии с правилами, была отправлена в отставку в звании коммандера. Но на «гражданке» провела всего полгода, вскоре вернув погоны и продолжив карьеру. С 1967 года Хоппер занимала пост директора Группы языков программирования в Департаменте информационных систем ВМФ США, в числе прочего продолжая развивать Кобол, а также настаивая на замене больших централизованных вычислительных систем компьютерными сетями:

Первопроходцы перевозили тяжести на быках. И, если бык не мог сдвинуть бревно, они не пытались вырастить быка побольше. Мы должны стремиться не к повышению мощности отдельных компьютеров, а к повышению численности компьютерных систем.


Также она разработала стандарты для тестирования компьютерных систем и компонентов (особенно для ранних языков программирования, таких как COBOL и FORTRAN), что изрядно поспособствовало унификации и универсализации софта и харда разных производителей. В 1973 году Грейс получила погоны капитана ВМС США — аналога капитана первого ранга по российской и советской системе флотских званий, ну а в 1985-ом, в знак заслуг перед американской компьютерной отраслью вообще и флотскими вычислительными системами в частности, стала одной из первых в мире женщин-адмиралов. Прадед мог бы гордиться!

Капитан Грейс Хоппер получает звание коммодора ВМС США

Правда, адмиральский мундир по службе Хоппер носила менее года. Уже в 1986-м она официально вышла в отставку в рекордном для морского офицера возрасте 79 лет, восьми месяцев и пяти дней. Церемония, опять же в знак особого признания, проходила на борту 188-летнего (!) 52-пушечного фрегата USS Constitution — старейшего парусного корабля на планете из находящихся на плаву. Ко всему прочему, Грейс стала единственной женщиной, награждённой медалью Министерства обороны США «За выдающуюся службу» — высшей наградой для американских военнослужащих за небоевые, но важные свершения.

Церемония выхода в отставку контр-адмирала Грейс Хоппер на борту парусного фрегата USS Constitution

Впрочем, запомнилась Грейс Хоппер не только заслугами в развитии IT — но и тем, что внесла огромный вклад в его популяризацию и обучение новых компьютерных специалистов. Параллельно с военной службой и сопутствующими разработками она читала лекции по информатике и программированию: сначала в Пенсильванском университете, а затем в Университете Джорджа Вашингтона.

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

За свои научные и педагогические заслуги Грейс Хоппер получила более 40 почётных учёных степеней в университетах разных стран мира. Её лекции пользовались огромным интересом в том числе потому, что она была очень ярким рассказчиком, привыкшим объяснять сложные материи не только гикам-айтишникам, но и не слишком выдающимся по эрудиции коллегам-военным.


Знаменитым и даже меметичным стало её наглядное объяснение того, почему сигнал со спутников идёт отнюдь не мгновенно, а вычислительным устройствам для ускорения работы лучше быть как можно более компактными. Для иллюстрации этой мысли Хоппер обычно приходила на лекцию с 30-сантиметровым телефонным шнуром компании Bell, поясняя, что именно такое расстояние свет проходит за одну наносекунду. Порой она прихватывала и 300-метровую бухту кабеля — демонстрируя, что именно столько свет проходит уже за одну микросекунду:

Мы вешали этот провод в кабинете программистов… Чтобы они знали, на чём мы их вздёрнем, если они будут терять микросекунды.


До самой своей смерти Грейс Хоппер работала старшим консультантом в Digital Equipment Corporation, одной из крупнейших цифровых компаний тогдашних США. Её задачей было не только консультирование, но и представительские функции: в IT-среде Хоппер была знаменитостью и пользовалась большим уважением.

Умерла Хоппер мирно, во сне, в первый день нового 1992 года в возрасте 85 лет. Как и полагается офицеру вооружённых сил США, она была похоронена на Арлингтонском кладбище. На могильном камне по традиции перечислены военные кампании, к которым она имела хотя бы формальное отношение как офицер на технической должности.


А ещё, несмотря на кабинетную карьеру, в которой ей так и не удалось добраться до службы в море, Грейс Хоппер была достойной наследницей своего прадеда-адмирала. Об этом наглядно свидетельствуют её цитаты:

Кораблю безопасней в порту, но он не для этого строился.

Идите и делайте: успеете оправдаться потом.

Намного проще попросить прощения, чем получить разрешение.

Самая опасная фраза в языке: «Мы всегда так делали».

Мы переборщили с менеджментом и забыли о лидерстве. Быть может, стоит вышвырнуть парней с MBA из Вашингтона.

Грейс Хоппер остаётся верна себе даже в детских книжках

Джей Эллиот, основатель и гендиректор Nuvel, а также бывший высокопоставленный сотрудник Apple, Macintosh, IBM и Intel, характеризовал Хоппер так: «Она до мозга костей офицер ВМФ, но, если поскрести глубже, вы найдёте пиратку». Практически та самая бабушка, которая курит трубку в известной песне. Ну, или в её более современной версии от «Дореволюционного Советчика»:

Если бы Грейс Хоппер дожила до 2010-х, эта песня определённо была бы про неё (а Facebook таки принадлежит компании Meta, считающейся экстремистской организацией и запрещённой в РФ)

Ещё при жизни Грейс была весьма популярна — а в XXI веке окончательно стала культовой фигурой. Всего лишь через четыре года после смерти в её честь назвали новейший эсминец УРО USS Hopper типа «Arleigh Burke», который и поныне базируется на Перл-Харбор в составе то 7-го (Тихий океан), то 5-го (Персидский залив и окрестности) флота:


В 2010-м году в честь Грейс Хоппер назвали суперкомпьютер Cray XE6 производительностью в 1,28 петафлопс, работающий в Исследовательском центре Министерства энергетики США:


Ну а в 2013-м Google отметил 107-ю годовщину её рождения специальным дудлом:


Одного не довелось Грейс Хоппер: покомандовать не кодом или сотрудниками, а на мостике боевого корабля. Чего ей со всей определённостью хотелось… но не сложилось.

Зато сложилось очень многое другое.


Telegram-канал с розыгрышами призов, новостями IT и постами о ретроиграх ????️

Комментарии (36)


  1. victor_1212
    08.04.2023 13:20
    +3

    > для Манхэттенского проекта покодила с Джоном фон Нейманом, результатом чего стало появление американского ядерного оружия

    небольшое дополнение - участие Грейс Хоппер было коротким эпизодом, по просьбе фон Неймана она решала уравнение в частных производных, типа несколько месяцев работы, в общем без знания для чего, фон Нейман был консультантом по всем сложным вопросам, общался со всеми, но непосредственно в работе не участвовал, вероятно наибольший вклад в организацию вычислений внес Ричард Фейнман, хотя прямо в его обязанности это не входило, ниже фон Нейман, Фейнман, Станислав Улам (1944)

    программировался Mark I довольно своеобразно, см. ниже


    1. vassabi
      08.04.2023 13:20

      1) с одной стороны - ну да, вроде и всего ничего, но наверно "порешать уравнения" фон Нейман мог попросить и студента, однако почему-то не попросил ?

      2) действительно - все наглядно и понятно, зачем еще какие-то промежуточные языки программирования ?
      (которые только зря место занимают, а уж про "компиляцию С++" https://xkcd.ru/303/ кто только не шутил! :D )

      /сркзм/


      1. victor_1212
        08.04.2023 13:20

        > но наверно "порешать уравнения" фон Нейман мог попросить и студента, однако почему-то не попросил

        не будем фантазировать, про Mark I не только студенты, но и профессора не слышали вообще в то время, да и доступ в Harvard не у каждого был :)

        интересно, что примерно в то же время в Германии вполне себе аналог был в разработке (Zuse Z4), после войны он работал в ETH Zurich, первый язык высокого уровня Plankalkül был в виде проекта для Z4 уже в 1948, на десяток лет опережая cobol и fortran


        1. ermouth
          08.04.2023 13:20

          Языком высокого уровня Планкалькуль сложно назвать. Это очень громоздкий ассемблер скорее.


          1. victor_1212
            08.04.2023 13:20

            > Это очень громоздкий ассемблер скорее.

            Пожалуйста приведите аргументы. Knuth в своей статье “The Early Development of Programming Languages” (Knuth, Pardo 1976) относит Plankalkül к языкам высокого уровня, статья хорошо известна, его аргументы более-менее понятны, давайте обсудим Ваши.

            ps

            нотация необычная конечно, пример сравнения можно посмотреть например

            https://craftofcoding.wordpress.com/2021/06/23/plankalkul-the-first-language-ii/


            1. ermouth
              08.04.2023 13:20

              Да чё уж, вот сразу книга, на которую вы ссылаетесь http://www.club.cc.cmu.edu/~ajo/disseminate/STAN-CS-76-562_EarlyDevelPgmgLang_Aug76.pdf

              Мой аргумент простой: действующее определение языка программирования высокого уровня по ГОСТ 19781-90: язык программирования, понятия и структура которого удобны для восприятия человеком.

              Планкалькуль для восприятия – ад. Мнение Кнута – понятно, его восторг – тоже, но это всё же не язык высокого уровня.


              1. victor_1212
                08.04.2023 13:20

                ну понятно, статья доступна много где, у меня к примеру это один из многих файлов, примерно представляю как писался ГОСТ 19781-90, это не аргумент, не знаю где Вы увидели эмоции в статье Кнута, советую прочитать более внимательно, и подумать самому типа без ГОСТ


                1. ermouth
                  08.04.2023 13:20
                  +1

                   это не аргумент

                  Это определение было. В начале спора надо устаканиться с определениями, я вам это определение дал, и я с ним согласен.

                  Да и по другим параметрам он не язык высокого уровня. Трёхадресный ассемблер с индексной адресацией, причём для каждого аргумента и для результата – свои фреймы; при этом не допускающий ни глобальных переменных, ни рекурсии – сорри, может, в 1977 это могло считаться языком высокого уровня.

                  Сегодня это больше напоминает нечитаемый IR в процессе работы какого-нибудь компилятора, это причём ещё в плоском синтаксисе.

                  В 2Д синтаксисе Планкалькуль – просто каша, двумерные таблицы программ Ады Лавлейс и то лучше читаются, хотя там тоже по сути трёхадресный ассемблер, даром что на 100+ лет старше.


                  1. victor_1212
                    08.04.2023 13:20
                    -1

                    > при этом не допускающий ни глобальных переменных, ни рекурсии – сорри, может, в 1977 это могло считаться языком высокого уровня...

                    заметим в ГОСТ 19781-90, не упоминаются ни глобальные переменные, ни рекурсии, вообще про языки высокого уровня примерно 8 слов + два предлога, довольно убогий документ, но есть шедевры типа -

                    "адрес в пространстве памяти = элемент множества порций данных, являющегося областью определения функции адресации ",

                    в соответствии с обычаями habr, минус в карму это Ваш последний аргумент, без разницы конечно, приятно быть вместе с Кнутом, против ГОСТ 19781-90, :)

                    на самом деле мне когда-то давно тоже пришлось поучаствовать в разработке стандартов на sw, причем более важных чем ЕСПД


                    1. ermouth
                      08.04.2023 13:20
                      +1

                      приятно быть вместе с Кнутом

                      Это ваш единственный аргумент, других у вас и не было.

                      Даже ребята, которые частично реализовали это академическое упражнение на Яве, по пути навставляв в ужасающий синтаксис костылей чтобы хоть как-то обойти противоречия или просто ошибки в работах Цузе, и те в конце говорят «However, claims that the Plankalku ̈l was a complete high-level programming language are questionable.»

                      И ребята эти правы.

                      Простите, на этом всё. С верованиями спорить бесполезно.


                      1. victor_1212
                        08.04.2023 13:20
                        -1

                        > Даже ребята, которые частично реализовали это академическое упражнение на Яве

                        вполне понимаю этих ребят и их точку зрения, но они выражаются корректно и только на основе собственного опыта, на ГОСТ 19781-90 не ссылаются :)

                        вот Вы пишете в своих комментариях "их роутеров .. даже было расковырял", это нормально, но с уровнем примерно понятно, при этом пытаетесь учить, мне к примеру долгое время приходилось делать это самое embedded sw причем для routers и пр. уровня производительности какие Вы вероятно никогда не увидите в жизни,

                        про мои верования - это 50+ лет в программировании, из них 30+ работы в us, начиная с digital, все время сети и real time


        1. ptr128
          08.04.2023 13:20
          +1

          Ну читабельным, в отличии от COBOL, он не был. Оригинальная нотация была вообще двухмерной.

          Мне на COBOL пришлось около года программировать, не считая редкие подработки в поддержке, которые случаются до сих пор. Для своих целей он вполне удобен. По крайней мере формировать документы из него для печати на АЦПУ было точно удобней, чем на FORTRAN, PL/I или даже C.


          1. victor_1212
            08.04.2023 13:20
            +1

            > читабельным, в отличии от COBOL, он не был. Оригинальная нотация была вообще двухмерной.

            конечно, das Museumsstück, таки 1948 год

            > Мне на COBOL пришлось около года программировать

            на Fortran (БЭСМ-6) тоже пришлось в свое время, но COBOL вероятно не смог бы совсем, это личное конечно, при всем уважении типа по Dijkstra -

            “The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense.”


            1. ptr128
              08.04.2023 13:20

              Ну к моменту освоения COBOL, на FORTRAN мне уже приходилось программировать. COBOL после него был как раз хорош. Структурное программирование, возможность вообще не пользоваться GOTO, развитые структуры данных, встроенный генератор отчетов, простой и прозрачный интерфейс к внешним данных, начиная от ленты и заканчивая СУБД (тогда это была IDMS) - всего этого в FORTRAN IBM/370 тогда еще не было.


              1. victor_1212
                08.04.2023 13:20

                понимаю конечно, зависит от области применения, обработкой данных в стиле COBOL не приходилось заниматься, в основном системное sw причем embedded


          1. vadimr
            08.04.2023 13:20

            Да ну ладно. PL/I включает все возможности Кобола, только в гораздо более удобном для восприятия виде.


            1. ptr128
              08.04.2023 13:20
              +2

              Имеет все возможности для работы с магнитными лентами, ISAM методом доступа и встроенный генератор отчетов?
              Может я что-то пропустил, но в проектах на PL/I с лентами мне приходилось работать переходя на ассемблер. Родной поддержки ISAM я в PL/I вообще не встречал - тоже ходи через ассемблер. А генераторы отчетов для него я впервые увидел только в начале 90-х. Да и то, так как они прикручивались сбоку, то по удобству явно уступали COBOL. В итоге отчеты нередко предпочитали формировать через файлы сформированные PL/I при помощи того же COBOL. Декларативное описание отчета в COBOL оказывалось существенно дешевле в поддержке, чем процедурное в PL/I


              1. vadimr
                08.04.2023 13:20
                -1

                Что касается лент и ISAM, то их поддержка была в компиляторе PL/I того времени. Генератора отчётов, действительно, не было. Но я не работал с генератором отчётов и не очень понимаю, чем в практическом смысле он отличается от присваивания структуры BY NAME.


                1. ptr128
                  08.04.2023 13:20
                  +1

                  Что касается лент и ISAM, то их поддержка была в компиляторе PL/I того времени.

                  https://www.ibm.com/docs/en/SSQ2R2_14.0.0/com.ibm.ent.pl1.zos.doc/pg.pdf
                  "Enterprise PL/I provides no support for ISAM datasets"

                  Поддержка лент была рудиментарной. Смонтировать и размонтировать ленту никак, а ведь файлы могли быть многотомными. Читать в обратном направлении - тоже. С блоками неизвестного размера работать не умел. С метками лент или несколькими файлами на одной ленте - тоже.

                  При том, что из COBOL быстро перемотать ленту к нужному файлу проблем не представляло. И вывести на консоль просьбу установить ленту и указать, на какой накопитель ее оператор поставил - тоже. И проверить метку, чтобы убедиться, что оператор не накосячил - само собой.


                  1. vadimr
                    08.04.2023 13:20

                    "Enterprise PL/I provides no support for ISAM datasets"

                    Это новый компилятор для zSeries, в нём поддержки ISAM уже нет, так как вопрос потерял актуальность. Вы читаете как раз список его отличий от старого компилятора PL/I for MVS & VM.

                    Монтирование и управление метками лент для программ на PL/I выполнялось средствами JCL (или CP/CMS). Читать в обратном направлении и работать с блоками неизвестного размера PL/I умел.


                    1. ptr128
                      08.04.2023 13:20
                      +1

                      Это новый компилятор для zSeries

                      Ваш пруф?

                      средствами JCL

                      Спасибо, не надо. Средства JCL во-первых, статичны, во-вторых, почти ничего из перечисленного мной выше не поддерживают.

                      Например, как Вы на JCL собрались описывать несколько файлов на ленте, если Вы даже не знаете, сколько файлов девочка на СПД туда наколотила?

                      CP/CMS

                      Мы вообще о чем и о каких временах? Какая на хрен СВМ на EC-1033? Ее даже на ЕС-1061 не поднимешь. Только начиная с ЕС-1046. К моменту появления СВМ я уже свалил на ПК с NEC V20 и вовсю писал на С.


                      1. vadimr
                        08.04.2023 13:20

                        Ваш пруф?

                        https://www.ibm.com/docs/en/developer-for-zos/14.0?topic=compiler-understanding-limitations-new

                        По-моему, даже у Фролова и Олюнина описывалась работа с ISAM в PL/I. Я лично от этого был далёк, поскольку работал преимущественно в СВМ.

                        Если не ошибаюсь, компилятор PL/I(O) штатными средствами поддерживал все методы доступа того времени, кроме VTAM.

                        Мы вообще о чем и о каких временах?

                        Ну вы не уточняли, о каких временах.

                        Какая на хрен СВМ на EC-1033? Ее даже на ЕС-1061 не поднимешь. 

                        Я лично много работал в СВМ на ЕС-1061. Она поддерживала машины, начиная с Ряда-2. Хотя на ЕС-1066, конечно, работала лучше за счёт микропрограммной поддержки и общей надёжности машины.

                        Например, как Вы на JCL собрались описывать несколько файлов на ленте, если Вы даже не знаете, сколько файлов девочка на СПД туда наколотила?

                        Никто теоретически не мешал сами эти операторы JCL сгенерить программно. Но это, конечно, изврат. Но в конечном итоге манипуляции в ассемблере с DSCB и DCB приводили к тому же.


                      1. ptr128
                        08.04.2023 13:20
                        +1

                        По Вашему пруфу я нашел только о том, как конвертировать ISAM доступ из COBOL в VSAM. Про PL/I - ни слова.

                        Я лично много работал в СВМ на ЕС-1061. Она поддерживала машины, начиная с Ряда-2.

                        Даже не представляю, как ее туда удалось водрузить. НИЦЭВТ поставляло СВМ официально только для Ряд-3, а ЕС-1062 - Ряд-2. Поставлялась она вообще с SVS 6.1. На месте водружали TKS. По крайней мере даже в 1987 году, через два года после моего ухода на ПК, почти везде оставался TKS, если еще не штатный SVS 6.1.

                        Знаю о неудачной попытке водрузить СВМ на ЕС-1035 (тоже Ряд-2). Остались на TKS.

                        Никто теоретически не мешал сами эти операторы JCL сгенерить программно. Но это, конечно, изврат.

                        Очень интересно. Для COBOL или ассемблера делались пустые DD, которыми можно было динамически управлять. Но вот о том, что DD можно добавить уже после запуска задания на выполнение - слышу впервые. Тем более о таком механизме в PL/I.


                      1. vadimr
                        08.04.2023 13:20

                        По Вашему пруфу я нашел только о том, как конвертировать ISAM доступ из COBOL в VSAM. Про PL/I - ни слова.

                        Это ссылка на страницу документа Enterprise PL/I for z/OS Compiler and Run-Time Migration Guide, раздел Understanding the limitations of the new compiler.

                        Конкретно про использование ISAM можете почитать в руководстве по более старому компилятору, глава 9. Уже на тот момент ISAM поддерживался в режиме совместимости, так как его функции выполняет более новый VSAM.

                        Но вот о том, что DD можно добавить уже после запуска задания на выполнение - слышу впервые

                        Я имел в виду, что в одном задании можно подготовить второе задание. DD – это же просто текст на виртуальных перфокартах, которые сами по себе являются результатом работы какой-то программы.


                      1. ptr128
                        08.04.2023 13:20

                        По Вашему пруфу описана только ограниченная функциональность доступа к ISAM через VSAM.

                        Я к сожалению не могу сейчас найти документацию на PL/I образца 1983 года. Но точно помню, что с ISAM там были проблемы.

                        Я имел в виду, что в одном задании можно подготовить второе задание.

                        И сбрасывать принудительно все промежуточные данные на диск или ленту? Оригинально.

                        При этом Вы никак не назвали способ из PL/I все же посчитать количество файлов на ленте. Без этого как DD будете формировать?


                      1. vadimr
                        08.04.2023 13:20

                        Вы точно прочли 9-ю главу? Посмотрите листинг на странице 179.


                      1. ptr128
                        08.04.2023 13:20

                        Точно. VSAM, в отличии от ISAM, не позволяет работать с лентами


                      1. vadimr
                        08.04.2023 13:20

                        VSAM посвящена 11-я глава.


                1. ptr128
                  08.04.2023 13:20
                  +1

                  не очень понимаю, чем в практическом смысле он отличается от присваивания структуры BY NAME

                  А где в структуре описать позиции блоков и субблоков на листе АЦПУ в которые должны выводиться данные? На несколько листов кто разбивать будет с корректным выводом итогов, подитогов, заголовков и футеров? Кодом программист? В COBOL это обеспечивал генератор отчетов сам, на основании декларативного описания. В PL/I - кодируй все процедурно.

                  Какая-нибудь многостраничная накладная, с подитогами на листах, с тремя переменными табличными блоками (один на всю ширину листа, два других под ним справа и слева) на COBOL делалась за час-два. На PL/I - за день не факт, что управишься.


        1. vadimr
          08.04.2023 13:20
          -1

          Цузе имел безусловный приоритет в проектировании и создании первого в мире работающего программируемого компьютера, но не получил поддержки от немецко-фашистского государства и действовал как энтузиаст. В отличие от США и Великобритании, где работам по созданию компьютеров придавалось высшее государственное значение.


          1. victor_1212
            08.04.2023 13:20

            возможно главное это подтверждение, что создание компьютера к этому времени вполне назрело, ограниченность ресурсов Германии сыграло роль, ну и бомбежки под которые контора Zuse попала вместе со всеми, вообще правительство его работы финансировало (Aerodynamic Research Institute) и вполне было в курсе, Z3 был показан в Берлине в мае 1941, фотография реконструкции из музея в Мюнхене


            1. vadimr
              08.04.2023 13:20

              Я понимаю так, что Цузе создал собственное ООО, которое на определённом этапе получило на коммерческой основе заказ от указанного института. А то, чтобы он, как Нейман и Тьюринг, был сотрудником государственного проекта.


              1. victor_1212
                08.04.2023 13:20

                несколько сложнее, в 1939 его призвали в армию, но фактически создали условия для работы, при этом продолжал работать в своем доме над Z2, Z3, и одновременно S1 и S2 специально для расчета аэродинамики планирующих бомб, в 1941 ему дали средства начать производства всего этого и основать компанию Zuse Apparatebau, которую финансировали через DVL (типа NASA), в 1944-45 начались бомбежки и все замедлилось,

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

                ps

                в 1947 к нему приезжал Alan Turing и др. типа смотреть состояние дел


  1. ogost
    08.04.2023 13:20
    +1

    Не она ли в некоем суде, выступая в качестве свидетеля, на вопрос знает ли она что-либо о языках программирования ответила "Я его изобрела"? Или я что-то путаю?


    1. shornikov
      08.04.2023 13:20
      +1

      Это история была про криптографию, если путаю


      1. vorphalack
        08.04.2023 13:20
        +3

        да, про патентных троллей. https://arstechnica.com/tech-policy/2013/11/newegg-trial-crypto-legend-diffie-takes-the-stand-to-knock-out-patent/


        "We've heard a good bit in this courtroom about public key encryption," said Albright. "Are you familiar with that?"

        "Yes, I am," said Diffie, in what surely qualified as the biggest understatement of the trial.

        "And how is it that you're familiar with public key encryption?"

        "I invented it."