Ответы на вопросы студентов программной инженерии

Э́дсгер Ви́бе Де́йкстра (нидерл. Edsger Wybe Dijkstra[6] (11/05/1930—6/08/2002, родился в Роттердаме, Нидерланды) — учёный, труды которого оказывают огромное влияние на информационные технологии; один из разработчиков концепции структурного программирования, исследователь формальной верификации и распределённых вычислений. Тьюринговский лауреат (1972).

Источник перевода — EWD 1305

[Реконструкцию предполагаемых вопросов оставляем в качестве упражнения читателю]

  • Гаджеты — это не обязательно хорошо, посмотрите на прогресс Доска → Проектор → Power Point (надо признаться, что при чтении лекций я по прежнему предпочитаю доску, а не новомодные увлечения проектором).
  • Мне не нужно тратить время на компьютеры просто потому, что я специалист по компьютерам. (Ученые-медики не обязаны страдать от болезней, которые они лечат).
  • «Компьютеризации» — это не бизнес для вычислительной науки. Говоря проще, это не разработка ресурсоёмких приложений для формирования нового рынка очередного поколения аппаратного обеспечения. (Ученые-медики не обязаны изобретать новые заболевания для расширения рынка фармацевтики).
  • Предлагать то, что просит общество — не задача университета, он должен дать то, что обществу действительно необходимо. (В целом, потребности общества понятны и для этого нет надобности в университетах; университеты могут предложить то, что больше никто не сможет предложить)
  • Мы все сформировались под влиянием инструментов, которыми пользуемся, в частности: формализмы, которые в той или иной степени формируют наш образ мыслей. Это значит, что надо быть очень осторожным в выборе того, чему мы учимся и учим других потому, что переучиться на самом деле не возможно. (Много лет назад, принимая на работу своего нового помощника, одним из требованием было «без предварительного знания ФОРТРАНА», а в средних школах Сибири, изучение BASIC не допускается).
  • Программист должен уметь продемонстрировать то, что его программа обладает требуемыми свойствами. Если эта мысль приходит к нему слишком поздно, то он наверняка не сможет справиться со своей задачей: одна эта мысль оказывает влияние на разработку и вселяет надежду, что он справится с ней. Окончательная проверка не обеспечивает нужного воздействия и по сути дела напоминает телегу, запряженную впереди лошади. Но именно это и происходит в программных фирмах, где «программирование» и «контроль качества» проводят разные группы. (Вряд ли стоит говорить, что подобные фирмы не дают никаких гарантий качества.)
  • Приемы эффективного доказательства достаточно формальны. Но до тех пор, пока программированием занимаются люди, не владеющие ими, кризис программного обеспечения будет продолжать пребывать с нами и будет рассматриваться как неизлечимая болезнь. А вы знаете, как поступают неизлечимо больные — ищут знахарей и шарлатанов, в нашем случае они принимают вид гуру программной инженерии.
  • Поскольку вышеупомянутые «приёмы эффективного доказательства» показаны на небольших программах, то многие сомневаются в их масштабировании, цитирую — «учитывая огромные размеры и саму сложность большинства программ». Эти приёмы бессильны при попытках использовать их расхлебывая ужасающий беспорядок, созданный группой некомпетентных, неорганизованных программистов. Сила таких приёмов проявляется уже во время разработки, когда i) они, как правило, приводят к гораздо более короткому коду, чем код, созданный как-то иначе, и ii) размер вызываемых функций, как правило, немногим отличается от линейной зависимости от размера вызывающей программы. Наконец программы, созданные таким способом бесконечно лучше, чем обычное барахло.
  • Никогда не надо забывать, что программисты живут в мире артефактов, что и отличает их от большинства других ученых. Программист не должен спрашивать, насколько применимы методы при программировании звука, он должен создавать миры, в котором это делается; это только его способ показать высококачественное проектирование. К этому я должен добавить цитату из EWD898 (1984)

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

  • В ответ на вопросы о том, почему мы изучаем бесполезные для бизнеса вещи, я отсылаю вас к EWD920 (1985). здесь позвольте привести только один абзац:

    Вернемся к нашему первоначальному вопросу: может ли наука о компьютерах спасти компьютерную промышленность? Мой ответ таков: «Если, что и может спасти компьютерную промышленность, то это только наука». Пройдёт не мало времени, пока компьютерная промышленность и, в особенности, компании, крепко стоящие на ногах, согласятся с этой точкой зрения. Почти наверняка для этого потребуется больше времени, чем тот ограниченный период, на который они планируют своё будущее. В то время, как академический мир традиционно строит гораздо более далеко идущие планы – у него нет выбора. Он вынужден совершенствовать лучшие навыки, которые может предложить информатика, и обучать им; если поддаваться внешнему давлению и распространять сегодняшние заблуждения, то лучше прекратить эту деятельность совсем»

    Но чтобы подчеркнуть, сколько терпения нам нужно, позвольте мне дать ещё одну старую цитату (1988)

    «Слишком мало людей, как уже отмечалось сегодня, признают, что высокие технологии, по существу, являются математическими технологиями.» (from the 2nd David-report, so named after the committee’s chairman Dr. E. E. David Jr.)

  • Нет, я боюсь, что Информатика страдает от популярности Интернета. Интернет привлекает все возрастающую, если не сказать, сметающую всё на своем пути, массу студентов с весьма слабыми научными способностями, и это только укрепляет сложившеюся (и довольно вульгарную) одержимость своей скоростью и мощностью.
  • Да, я разделяю ваше беспокойство: вряд ли можно научиться хорошо программировать, пройдя соответствующий курс. Ситуация аналогична ситуации в математике, где программы обучения ориентированы на математические результаты; в чём смысл самой математики – студент должен впитать самостоятельно, так сказать. Один из доводов в пользу манипуляции символами и вычислительными доказательствами заключается в им, что им гораздо легче научить, чем доказательствам словесно-графическим. Широкое введение курсов
    подобных вычислительной методологии, впрочем, столкнется с непреодолимыми политическими проблемами. В программном бизнесе имеется множество предприятий, которым неясно, что наука может помочь им; им также неясно, что она должна попытаться сделать это.
  • В софтверном бизнесе есть много предприятий, для которых не ясно, что наука может помочь им; не понятно,что наука должна попытаться это сделать.

Остин, 28 Ноября 2000

проф. др. Э́дсгер Ви́бе Де́йкстра
Кафедра компьютерных наук
Университет Техаса в Остине
Остин, Техас 78712 — 1188
США

CC BY-NC 4.0 Ответы на вопросы студентов программной инженерии, опубликовано К ВВ, лицензия — Creative Commons Attribution-NonCommercial 4.0 International.


Респект и уважуха

Добавить комментарий