Найти тему

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

Дейкстра
Дейкстра

[Примерная реконструкция вопросов предоставляется читателю в качестве упражнения.]

  • Гаджеты - не обязательно улучшение, см. преемственность:

Доска -> Проектор -> Power Point

  • И мне не нужно тратить время на компьютер только потому, что я компьютерный ученый.

[Исследователи-медики не обязаны страдать от болезней, которые они исследуют.]

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

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

  • Задача университета - не предлагать то, что просит общество, а давать то, что ему нужно.

[То, чего требует общество, обычно многими понимается, и для этого не нужен университет; университет должен предложить то, что не может предложить никто другой.]

  • Мы все сформированы инструментами, которые мы используем, в частности: формализмы, которые мы используем, формируют наши мыслительные привычки, к лучшему или к худшему, а это означает, что мы должны быть очень осторожны в выборе того, что мы учим и чему учим, отучиться от этого на самом деле невозможно.

[Много лет назад, когда мне требовался новый ассистент, то одним из обязательных условий было «без предварительного знакомства с ФОРТРАНОМ», а в средних школах Сибири преподавание BASIC было запрещено.]

  • Программист должен уметь продемонстрировать, что его программа обладает требуемыми свойствами. Если об этом подумать позже, то почти наверняка он не сможет выполнить это обязательство: только если он позволит этому обязательству повлиять на его замысел, есть надежда, что он сможет его выполнить. Чистая апостериорная проверка отрицает такое целостное влияние и, следовательно, ставит телегу впереди лошади, но именно это и происходит в компаниях по разработке программного обеспечения, где «программированием» и «контролем качества» занимаются разные группы. [Излишне говорить, что там нет гарантий.]
  • Необходимые методы эффективного рассуждения довольно формальны, но пока программирование осуществляется людьми, которые не владеют ими, кризис программного обеспечения останется с нами и будет считаться неизлечимой болезнью. И вы знаете, что делают неизлечимые болезни: они привлекают знахарей и шарлатанов, которые в данном случае принимают форму гуру программной инженерии.
  • Некоторые из вас сомневаются, что вышеупомянутые «методы эффективного мышления», какими бы хорошими они ни были для небольших программ, будут расширяться, я цитирую, «учитывая устрашающие размеры и абсолютную сложность большинства программ». Что ж, они будут бессильны, если вы попытаетесь использовать их, чтобы распутать ужасающий беспорядок, созданный группой некомпетентных, неорганизованных программистов. Их сила проявляется на этапе конструирования, где (I) они имеют тенденцию приводить к гораздо более коротким текстам, чем были бы созданы в противном случае, и (II) длина производных программ имеет тенденцию расти не намного больше, чем линейно с длиной производных программ. Наконец, созданные таким образом программы бесконечно лучше обычного мусора.

  • Мы никогда не должны забывать, что программисты живут в мире артефактов, и этот факт отличает их от большинства других ученых. Программист не должен спрашивать, насколько применимы методы звукового программирования, он должен создать мир, в котором они применимы; это его единственный способ создать высококачественный дизайн. К этому я должен добавить цитату из EWD898 (1984):

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

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

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

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

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

(из 2-го доклада Дэвида, названного так в честь председателя комитета доктора Э. Дэвида-младшего)

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

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

проф. доктор Эдсгер В. Дейкстра

Кафедра информатики

Техасский университет в Остине

Остин, Техас 78712 - 1188

США