С днём рождения, Эдсгер Вибе Дейкстраǃ

в 15:25, , рубрики: edisonsoftware, Алгоритмы, Блог компании Edison, Программирование

«Пусть тахорги в страхе воют,
Издавая визг и писк!
Ведь на них идет войною
Структуральнейший лингвист!»

image

  • Очень жесткий правдоруб.
  • Мог бы стать физиком-теоретиком (как Ричард Фейнман, который тоже родился 11 мая), но выбрал несуществующую на тот момент профессию — программист.
  • Носит имя алгоритма поиска кратчайшего пути. Алгоритм был создан при решении железячной задачи «О нахождении оптимального пути передачи электрического тока всем существенным элементам цепи, минимизируя при этом расход меди».
  • Непримиримый враг goto.
  • Инициатор мема Considered harmful. «GOTO Statement Considered Harmful», "„GOTO Considered Harmful“ Considered Harmful", «„«GOTO Considered Harmful» Considered Harmful“ Considered Harmful?»
  • Автор концепции семафора.
  • Разработчик операционной системы THE (Technische Hogeschool Eindhoven).
  • Стоял у истоков структурного программирования и распределенных вычислений.
  • Не написал ни одной статьи на компьютере.

В обычной жизни Э.В.Дейкстра был чудаком: предпочитал простую ручку компьютеру, в его доме не было телевизора, он не пользовался мобильным телефоном, не смотрел кино. Когда его коллеги подготовили и издали к 60-летнему юбилею специальный сборник, Дейкстра ответил каждому из них личным благодарственным письмом, написанным от руки (61 адресат). Ученому его уровня и положения полагался секретарь, но Дейкстра отказался от этой привилегии и все предпочитал делать сам. Любил музыку и был хорошим пианистом.

Под катом несколько цитат Дейкстры, пара сокращенных эссе и список статей на русском языке.
(Вместе с компанией EDISON поздравляем Декстру и Фейнмана с днём рождения.)

image

Цитаты

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

«… мне надо было сделать выбор – либо прекратить программировать и стать настоящим респектабельным теоретическим физиком, либо как-то формально завершить мое обучение теоретической физике с минимальными усилиями и стать… кем же? Программистом? Но разве это респектабельная профессия? В конце-концов, что такое программирование? В чем должен был состоять тот солидный объем знаний, который позволил бы считать программирование научной дисциплиной?»

Когда советское правительство приняло решение о переходе советской промышленности к копированию модельного ряда IBM/360, Дейкстра (работавший в то время в конкурировавшей с IBM фирме Burroughs) назвал это решение величайшей победой Запада в холодной войне, а выбранную для клонирования модель IBM/360 (прообраз советской ЕС ЭВМ) — величайшей диверсией Запада против СССР.

«Если отладка — процесс удаления ошибок, то программирование должно быть процессом их внесения.»

«Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации.»

«Вопрос «умеет ли компьютер думать» имеет не больше смысла, чем вопрос «умеет ли подводная лодка плавать».»

«Проекты, предлагающие программирование на естественном языке, гибельны по своей сути.»

«Глубоко ошибается тот, кто думает, что изделиями программистов являются программы, которые они пишут. Программист обязан создавать заслуживающие доверия решения и представлять их в форме убедительных доводов, а текст написанной программы является лишь сопроводительным материалом, к которому эти доказательства применимы.»

«Программирование на КОБОЛе калечит мозг, поэтому обучение ему должно трактоваться как преступление.»

«На любом языке можно написать фортрановскую программу.»

«Средства не виноваты в том, что их безграмотно используют.»

«Тестирование программы может весьма эффективно продемонстрировать наличие ошибок, но безнадежно неадекватно для демонстрации их отсутствия.»

«Мы будем лучше справляться с нашей работой программистов, если только мы будем подходить к этой работе с полным сознанием ее ужасающей сложности, если только мы будем верны скромным и элегантным языкам программирования, если мы будем учитывать природную ограниченность человеческого ума и приниматься за эту работу как Очень Смиренные Программисты»

«Разница между «старой программой» и «новой программой» столь же глубока, сколь глубока разница между гипотезой и доказанной теоремой или между математическим наблюдением и утверждением, строго выведенным из свода постулатов."

«Программист должен доказывать правильность программы одновременно с ее написанием.»

image

Статьи и книги

Архив работ Декстры (на английском)

image
«Дисциплина программирования»

С днём рождения, Эдсгер Вибе Дейкстраǃ - 5

image
Коллектив авторов «Структурного программирования»: Niklaus Wirth, Edsger W. Dijsktra, Tony and Jill Hoare

image
«О вреде оператора Go To»

Письмо Дейкстры: почему обучение программированию нужно начинать с функционального языка

Сборник статей в PDF.

  • Программирование как вид человеческой деятельности.
  • Навстречу корректным программам.
  • Смиренный программист.
  • Два взгляда на программирование.
  • Почему программное обеспечение такое дорогое?
  • О природе информатики.
  • Научная фантастика и научная реальность в информатике.
  • Почему американская информатика кажется неизлечимой.
  • Конец Информатики.
  • Ответы на вопросы студентов отделения программного обеспечения.

image

Два эссе, сокращенные переводы которых удалось найти в сети

«Я рассказывал эту историю разным людям. Программистам, как правило, она нравилась, а их начальники обычно сердились все больше и больше по мере ее развития. Настоящие математики, однако, не могли понять, в чем соль.»

Притча

В незапамятные времена была организована железнодорожная компания. Один из ее руководителей (вероятно, коммерческий директор) обнаружил, что можно сэкономить много денег, если снабжать туалетом не каждый железнодорожный вагон, а лишь половину из них. Так и решено было сделать.

Однако вскоре после начала пассажирских перевозок начались неприятности с туалетами. Причина их была крайне проста: хотя компания была только что создана, неразберихи уже хватало, и о распоряжении коммерческого директора ничего не знали на сортировочных станциях, где все вагоны считали одинаковыми. В результате в некоторых поездах туалетов почти совсем не было.

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

Тем не менее неприятности с туалетами продолжались. Новое расследование их причин показало, что хотя действительно половина вагонов в поезде снабжена туалетами, иногда выходит так, что все они оказываются в одной половине поезда. Чтобы спасти дело, были выпущены инструкции, предписывающие чередовать вагоны с туалетами и без них. Это добавило работы сцепщикам, однако, поворчав, они и с этим справились.

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

Теперь, когда все туалеты находились на равных расстояниях, компания была уверена в успехе, однако пассажиры продолжали беспокоиться: хотя до ближайшего туалета было не больше одного вагона, но не было ясно, с какой стороны он находится. Чтобы решить и эту проблему, внутри вагонов были нарисованы стрелки с надписью «ТУАЛЕТ», сделавшие необходимым правильно ориентировать и вагоны без туалетов.

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

Хотя во времена, к которым относится наша история, человечество не знало ЭВМ, неизвестный, нашедший это решение, был первым в мире компетентным программистом.

Источник

«Но, собратья, я спрашиваю вас: разве это честно? Не подрывает ли наше затянувшееся молчание единства информатики? Прилично ли сохранять молчание? Если нет, то как об этом говорить?»

Как быть, если правда колет глаза

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

Информатика (computer science) выглядит тяжело больной от такого противоречия. В целом она хранит молчание и стремится избежать конфликта, переключая внимание на другое (например, в отношении Кобола вы можете либо бороться с болезнью, либо делать вид, что ее не существует: многие факультеты информатики выбирают второй, более простой путь). Но, собратья, я спрашиваю вас: разве это честно? Не подрывает ли наше затянувшееся молчание единства информатики? Прилично ли сохранять молчание? Если нет, то как об этом говорить?

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

Программирование — одна из наиболее трудных отраслей прикладной математики: слабым (poor) математикам лучше оставаться чистыми (pure) математиками.

Научно-технические расчеты — простейшее применение вычислительной техники.

Средства, которые мы применяем, оказывают глубокое (и тонкое) влияние на наши способы мышления и, следовательно, на нашу способность мыслить.

Фортран — «младенческое расстройство» с двадцатилетним стажем — безнадежно неадекватен какому бы то ни было применению ЭВМ сегодня: он слишком неуклюж, слишком опасен и слишком дорог, чтобы его применять.

ПЛ/1 — «роковая болезнь» — принадлежит скорее к области проблем, чем к области решений.

Практически невозможно научить хорошо программировать студентов, ориентированных первоначально на БЕЙСИК: как потенциальные программисты они умственно оболванены без надежды на исцеление.

Использование Кобола калечит ум. Его преподавание, следовательно, должно рассматриваться как уголовное преступление.

АПЛ — ошибка, доведенная до совершенства. Это язык будущего для программистской техники прошлого: он открывает новую эру для любителей кодирования.

Проблемы управления в целом и базами данных в частности чрезвычайно сложны для людей, которые думают на смеси «ЕС-овского с нижегородским» (буквальный перевод: в терминах фирмы IBM, смешанных с неряшливым английским).

Об использовании языка: невозможно заточить карандаш тупым топором. Столь же тщетно пытаться сделать это десятком тупых топоров.

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

Многие компании, которые поставили себя в зависимость от оборудования фирмы IBM (и, поступив так, продали душу дьяволу), потерпят крах под весом неуправляемой сложности своих систем обработки данных.

Ни научная дисциплина, ни крепкая профессия не могут быть основаны на технических ошибках министерства обороны и производителей ЭВМ.

Использование антропоморфной терминологии в отношении вычислительных систем — признак профессиональной незрелости.

Провозглашая себя работающими в области программного обеспечения (software), слабые (soft) ученые делают себя еще более смешными (но не менее опасными). Вопреки своему названию, software (буквально: мягкое оборудование) требует [жесточайше] твердой научной дисциплины для своей поддержки.

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

Проекты, предлагающие программирование на естественном языке, гибельны по своей сути.

Разве не достаточен этот список, чтобы дать повод для беспокойства? Но что мы собираемся делать? Вероятно, заняться повседневными делами…

Если предположение о том, что «вы предпочли бы, чтобы я не волновал вас пустяками, посылая вам это», справедливо, то можете добавить его к списку неприятных истин.

Источник

Видео

P.S.

Предлагаю желающим поучаствовать в мини-флэшмобе по переводу цитат Дейкстры (цитаты отсюда или отсюда).

Автор: Edison

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js