Третья часть (не заключительная) интервью 2001 года Ф. Франы с Э. Дейкстрой.
Продолжаем вспоминать историю программирования, которая помогает ответить на вопрос, почему оно получилось таким, а не другим. Был бы этот путь другим, если бы не политика? Теперь мы уже не сможем ответить на этот вопрос, но можем посмотреть, какая царила в то время атмосфера.
В скобках квадратных [ ] указаны примечания самого интервьюера Ф. Франы;
В скобках фигурных { } указаны мои уточнения.
В этом блоке привожу пояснения.
Ссылки на некоторые источники в конце.
Эдсгер В. Дейкстра
Герой интервью
Филип Л. Франа
Интервьюер, James Madison University
Э. Дейкстра: Что очень ясно показывает, что вы много теряете, если ограничиваете роль математики проверкой программы, а не построением или выводом программы. Вот чему мы научились из соревнования, которое выиграл Деккер. (Извините меня на минуту.)…
Ещё одно важное событие 1959 года — участие в «нулевом» Конгрессе IFIP в Париже, который проходил под эгидой Организации Объединённых Наций. Я присутствовал там, хотя на тот момент был ещё не слишком известным молодым специалистом. К тому времени я несколько раз посещал Англию и Германию, а мои международные контакты начались в декабре 1958 года, когда стартовали подготовительные встречи по разработке ALGOL 60.
Международная конференция по обработке информации (International Conference on Information Processing) прошла в 1959 году под эгидой ЮНЕСКО. Это дало старт для появления IFIP (International Federation for Information Processing), которая до сих пор координирует международное сотрудничество в области компьютерных наук.
Вспомним, что 1947–1991 гг. — это Холодная война, конфронтация между США и их союзниками по блоку НАТО, и СССР со своими союзниками по восточному блоку. Первые, как известно, были за капиталистическую модель развития, вторые — за социалистическую систему. Нидерланды находились в составе Западного блока и поддерживали западные инициативы.
Поэтому в тот период международное сотрудничество даже в научных областях сталкивалось с политическими препятствиями.
IFIP сыграла ключевую роль в стандартизации и распространении знаний о вычислительных системах, таких как ALGOL (язык программирования), который был одним из важных достижений того времени. В условиях глобальной конкуренции за технологическое превосходство, такие обмены позволяли ускорить развитие IT‑сектора в различных странах.
Кризис стимулировал работу над созданием надежных систем связи и передачи данных, что также отразилось на развитии вычислительных технологий и на работе таких организаций как IFIP.
Для того чтобы минимизировать влияние одной страны на работу всей организации, страну должны были представлять федерации от каждой страны. Это позволяло иметь равное представительство. IFIP стал примером того, как даже в условиях Холодной войны можно было сохранять мосты для научного сотрудничества.
Отвлечёмся ещё раз, как видно из брошюры, представители СССР там тоже были. «Методы машинного перевода и их применение для англо‑русской схемы» (СССР). Докладчик: И. К. Бельская. Ссылку на саму брошюру с программой конференции в PDF можно найти в конце статьи.
Обычно на подобных встречах от Математического центра присутствовал мой начальник, Аад ван Вейнгарден, но он попал в серьёзную автомобильную аварию. Поэтому нас с Я.А. Зонневельдом, как его ближайших подчинённых, отправили вместо него.
Аад ван Вейнгаарден, директор вычислительного отдела Математического центра в Амстердаме, уезжал в августе 1958 года с конференции Международного конгресса математиков в Эдинбурге. Они с женой ехали в отпуск в Шотландию, но их машина разбилась. В результате этой аварии его жена погибла, а сам он получил травмы, из-за которых был госпитализирован до ноября.
Эта личная трагедия стала поворотным моментом в жизни ван Вейнгаардена. Он решил начать новую карьеру, отошёл от некоторых прежних обязанностей и стал специалистом по языкам программирования, что совпало с началом работы над ALGOL 60.
Зонневельд был специалистом по численным методам и занимался числовыми вычислениями, а я, как программист, занимался программной реализацией. Так я оказался на подготовительных встречах по ALGOL 60, где впервые пришлось обсуждать что‑то на английском языке спонтанно. Это было непросто.
Ян Адрианус Зонневельд был коллегой Дейкстры, специализировавшимся на численных методах и анализе. В контексте работы над ALGOL 60 «числовые аспекты языка» относятся к разработке и проверке функциональности языка программирования, связанной с обработкой чисел и вычислений. В ALGOL 60 была работа с числовыми типами данных, сложение, вычитание, умножение и деление, числа с плавающей запятой, встроенные математические функции (тригонометрические функции, логарифмы, корни) и прочее.
ALGOL 60 был предназначен для научных вычислений, и точная обработка чисел была одной из его главных задач.
Ф. Франа: Как вы учились {английскому языку}?
Д. Дейкстра: Ну, у меня, конечно, был английский в школе, в старшей школе. Я много читал, но меня не было опыта в написании или «говорении» на нём. Я многому научился у друзей, как только они узнали, что я люблю, когда меня исправляют.
И я чрезвычайно благодарен Майку Вудджеру из Национальной физической лаборатории, Теддингтон {пригород Лондона}, с которым я впервые встретился в декабре 1958 года. Он быстро сделал для себя правилом исправлять только те ошибки, которые он слышал от меня повторно, потому что иначе разговор был бы невозможен. Это очень помогло, и я думаю, что примерно через три‑четыре года я начал чувствовать себя комфортно.
Ф. Франа: Я слышал, как вы замечали, что изучение многих разных языков полезно для программирования.
Имеются в виду языки для общения людей, а не разные языки программирования.
Д. Дейкстра: О, да, это действительно полезно. Есть огромная разница между человеком, который говорит только на одном языке, и тем, кто хорошо освоил хотя бы второй. Знание второго языка делает вас гораздо более осведомленным о природе языков вообще. Вы начинаете замечать, что некоторые конструкции одного языка попросту невозможно перевести на другой.
Однажды меня спросили, какими качествами должен обладать компетентный программист. Тогда я ответил: математическое мышление и исключительное владение родным языком. Я упомянул математическое мышление, потому что тогда ещё не было понятно, как именно математика в её привычном понимании может помочь справляться с задачами программирования. А под "родным языком" я имел в виду не английский, а именно язык, который человек знает с детства, поскольку, когда формального языка программирования не хватает, приходится мыслить словами и предложениями, которые привычны и понятны. Более того, хотя я тогда этого не знал, исследования показывают, что при изучении второго языка люди никогда не достигают в нём бóльшего мастерства, чем в родном. Это и задаёт планку того, насколько чётко и выразительно вы сможете мыслить и излагать свои идеи.
Хорошее владение родным языком. Чтобы хорошо программировать, нужно уметь ясно выражать свои мысли. Даже если программы пишут на английском, ваши навыки мышления и объяснения зависят от того, как вы владеете своим родным языком.
Исследования показывают, что люди не могут освоить второй язык лучше своего родного. Поэтому, чтобы стать более грамотным и чётким в программировании, нужно развивать свои способности к выражению идей сначала на своем основном языке.
Чем лучше вы понимаете языки (и свой родной, и другие), тем лучше вы сможете писать программы, потому что программирование — это тоже способ выражения идей.
Это подтверждают различные исследования, например, статья в Oxford Research Encyclopedia под названием «Bilingualism: A Cognitive and Neural View of Dual Language Experience» утверждает, что владение двумя языками улучшает способности к решению проблем, связанным с управлением конфликтующими задачами и переключением между ними, что особенно важно для программистов.
Ф. Франа: Знаю, я немного отвлёк вас от последовательности событий. Для ориентира: насколько мы сейчас далеки от старта Рабочей группы 2.3?
Мы и сами к этому времени порядком отвлеклись. Рабочая группа IFIP 2.3 (IFIP Working Group 2.3) — это группа по методологии программирования, основанная в рамках Международной федерации по обработке информации (IFIP). Она занималась разработкой и исследованием принципов и методологий, которые могли бы сделать программирование более структурированным, надёжным и эффективным.
«2»: Это обозначение технического комитета IFIP, посвящённого программированию (TC2: Software Theory and Practice).
«3»: Номер подгруппы в рамках TC2, занимающейся методологией программирования (Programming Methodology).
Таким образом, полное название отражает её иерархическое положение: это третья рабочая группа второго технического комитета.
Д. Дейкстра: Десять лет.
Ф. Франа: Десять лет спустя?
Д. Дейкстра: Да. Это началось в…
Ф. Франа: 1969?
Д. Дейкстра: Да. 1969, а мы были в 1959 году в Париже. Одно из главных событий, которое я помню, это то, что Алан Перлис из Технологического института Карнеги (Carnegie Institute of Technology), я не думаю, что это был уже CMU (Carnegie Mellon University) в тот момент, пытался нанять Петера Наура и меня. У него должен был быть хороший вкус, чтобы выбрать нас из этого скопления людей. Как только Петер услышал, что Перлис хотел бы, чтобы мы делали, он стал очень презрительным. Он назвал Соединенные Штаты отсталой страной {«the backward country»}.
Здесь небольшая неточность. Carnegie Institute of Technology, который упоминается, на самом деле был уже к 1969 CMU (Carnegie Mellon University) с 1967 года. Это университет в Питтсбурге, США, известен своими программами в области компьютерных наук, инженерии, искусственного интеллекта и робототехники.
Петер Наур (Peter Naur) — датский ученый и программист, один из основателей области вычислительной лингвистики и теории языков программирования. Он известен своими работами по разработке языка программирования ALGOL.
П. Наур считал Америку «отсталой» в области вычислительных наук в 1960-х годах из‑за, по его мнению, поверхностных и утилитарных подходов к разработке программного обеспечения. Он был сторонником более глубоких, теоретических подходов, таких как формальная семантика языков программирования и строгая математическая основа, в отличие от практических и «коммерчески ориентированных проектов», характерных для США того времени.
Когда Дейкстра говорит, что Перлис проявил «хороший вкус», выбирая его и Петера Наура из толпы, это, конечно, и присущая ему ирония, и способ показать, что в тот момент не все осознавали их вклад в развитие вычислительных наук.
Ф. Франа: Петер?
Э. Дейкстра: Да. Он сказал, что если они хотят взяться за глупый проект, им лучше сделать это самим.
Ф. Франа: Думаю, с тех пор он смягчился.
Э. Дейкстра: Я знаю его много лет.
Ф. Франа: Он друг Артура Норберга, директора CBI.
Э. Дейкстра: О, правда?
Ф. Франа: Они до сих пор поддерживают связь.
Артур Норберг — на тот момент директор CBI (Charles Babbage Institute) в Америке, занимающейся развитием компьютерных технологий и образования. Франа подчёркивает, что Петр Наур, несмотря на свои прежние критические замечания о США, теперь поддерживает контакт с Норбергом.
Э. Дейкстра: Кто, они? Так вот, появился ALGOL 60, который, оглядываясь назад, я думаю, следует считать началом вычислительной науки. Если мы хотим отметить значимый перелом в нашем восприятии вычислений, то это именно появление ALGOL 60. Я вернусь к этому позже, особенно в том контексте, как он сделал эту тему академически уважаемой.
Ф. Франа: Да, я хочу услышать об этом подробнее.
Э. Дейкстра: Дейкстра: Я опубликовал статью под названием «Рекурсивное программирование» в журнале Numerische Mathematik, что было немного безумно, потому что она не имела никакого отношения к численной математике, но в то время это был подходящий журнал. В 1961 году я начал задумываться о программировании и осознавать, что это действительно интеллектуальная задача.
Одно из событий, где мы с Петером {Науром} были основными докладчиками, — это летняя школа по автоматическому программированию, организованная неким Гудманом в Брайтоне, Англия. На этой встрече было много известных британских учёных, и, думаю, это сыграло важную роль в моём признании в Великобритании. В зале был Тони Хоар, но ни я, ни он не помним, что тогда встретились. Он не помнит меня, потому что в его памяти мы с Петером, оба с бородами и акцентом, слились в одного человека. [Смех] Мы позднее выяснили, что оба там были.
Франа: Вы оба были там?
Дейкстра: Мы оба были там: он был в аудитории, а я был одним из основных докладчиков.
Тони Хоар — британский учёный, получивший Премию Тьюринга за вклад в информатику, и развитие формальных методов программирования. Конечно же, ещё автор одноимённого алгоритма быстрой сортировки, которые изучаются в рамках изучения этих сортировок.
Итак, теперь в 1962 году, именно тогда мои размышления о синхронизации программ привели к операциям P‑ и V; это был один из важных шагов в 1962 году.
P‑ & V‑операции были предложены Дейкстрой как часть его работы над синхронизацией процессов в многозадачной системе.
В 1965 году Дейкстрой было введено понятие семафора. Это переменная специального типа, над которой можно провести две операции "закрытия и "открытия". P (proberen) уменьшает семафор, ожидая его доступности, а V (verhogen) увеличивает значение семафора, сигнализируя о завершении задачи. Это стало фундаментом для управления параллелизмом. На их основе были разработаны за это время более сложные концепции.
Семафоры являются частью низкоуровневого программирования, а современные языки популярные языки программирования (например, Java, Python, C++, С#) предоставляют высокоуровневые библиотеки для управления потоками.
Тогда же я участвовал в конференции по обработке символов в Риме, примерно в апреле. Петер {Наур} приехал туда с женой, и девушки днём гуляли по городу. Однажды, вернувшись к приёму, они услышали, как кто‑то из толпы подводил итоги политической ситуации: «Конечно, есть американцы, немцы, французы, англичане. А еще два Фиделя Кастро!» Мы смеялись.
Шутка «два Фиделя Кастро» намекает на перегретую политическую атмосферу холодной войны и контраст между силами НАТО (США, Германия, Франция, Англия) и стереотипами о том, как выглядят революционные лидеры.
Фидель Кастро был у власти в то время. В 1959 году он пришёл к власти на Кубе после Кубинской революции. Кастро стал ключевой фигурой в глобальной политике холодной войны, особенно из‑за союза Кубы с Советским Союзом, что вызывало напряжённость с США, включая такое событие, как Карибский кризис как раз в 1962 году, о котором идёт здесь речь в интервью. Американцы называют его Кубинский кризис, а сами кубинцы часто Октябрьский кризис.
Дейкстра и Нуар с отрощенными бородами ассоциировались с Кастро, в ту пору бывшим у всех на слуху.
Ещё был забавный момент. Были панельные дискуссии, мы с Петером сидели рядом, и у нас были всевозможные неприятные замечания, но мы сделали правилом выходить к микрофону по очереди — когда наступала моя очередь, я шёл, а в следующий раз он. Это продолжалось около часа, и ван Вейнгаарден, мой босс, сидел рядом с американцем, и в определённый момент американец схватил его за плечо и сказал: «Боже мой! Их двое». [смех]
Американец считал, что Дейкстра и Ноур с их бородами и акцентами настолько похожи, что визуально слились в одного человека.
Это можно включить в интервью? Это не математика, это не информатика, но это правдивая история…
Статья: International Informatics — Aad van Wijngaarden's 100th Birthday https://ercim‑news.ercim.eu/en106/r‑s/international‑informatics‑aad‑van‑wijngaarden‑s-100th‑birthday