Статья
Версия для печати
Обсудить на форуме
Ответы на вопросы студентов отделения программного обеспечения EWD1305



    Примерно восстановить вопросы оставлено читателю в качестве упражнения.

    • Красивые безделушки - не всегда усовершенствование, возьмите, к примеру, последовательность Классная доска => Диапроектор => PowerPoint
    • Мне не следует тратить время на компьютер лишь потому, что я ученый-компьютерщик.[Медикам-исследователям вовсе не обязательно самим страдать от болезней, которые они изучают.]
    • Это не задача информатики  продвигать компьютеризацию, скажем, разрабатывая прожорливые приложения и тем самым создавая рынок для следующего поколения вычислительного оборудования. [Медикам-исследователям не следует изобретать новые болезни, чтобы создавать рынок для новых лекарственных средств.]
    • Задача Университета  не предлагать то, что просит общество, а давать то, что обществу необходимо. [Те вещи, что общество просит, в основном хорошо понятны, и для них не нужен Университет; Университет же должен предлагать то, что никто больше предоставить не в состоянии.]
    • На наше формирование большое влияние оказывают инструменты, которые мы используем, в частности: формализмы, которые мы используем, формируют наш образ мышления лучшим или худшим образом, и это значит, что мы должны быть чрезвычайно осторожны в выборе того, чему учить и чему учиться, потому что разучиться потом совершенно невозможно. [Много лет назад, когда мне нужен был новый ассистент, одним из требований было "Не иметь даже понятия о FORTRANе", а в высшей школе в Сибири запрещено преподавание BASICа.]
    • Программист должен уметь демонстрировать, что его программа обладает требуемыми свойствами. Если эта мысль приходит к нему слишком поздно, он наверняка не сможет справиться с этой задачей: только если он позволяет этой цели влиять на разработку, есть надежда, что он справится с ней. Окончательная проверка не обеспечивает этого влияния и по сути дела является телегой, запряженной впереди лошади, но именно это и происходит в программных фирмах, в которых программирование и "контроль качества" осуществляют разные группы. [Вряд ли стоит говорить, что эти фирмы не дают никакой гарантии качества.]
    • Необходимые приемы эффективного доказательства достаточно формальны, но до тех пор, пока программированием занимаются люди, не владеющие ими, кризис программного обеспечения будет продолжать пребывать с нами и будет рассматриваться как неизлечимая болезнь. А вы знаете, что делают неизлечимые болезни: они приводят к появлению знахарей и шарлатанов, которые в данном случае принимают личину Гуру Программирования.
    • Кое-кто из вас сомневается, что упомянутые ранее "приемы эффективного доказательства", столь изящные для маленьких программ, способны масштабироваться, я цитирую, "применимо к устрашающим размерам и явной сложности большинства программ". Что ж, они окажутся бессильны, если вы попытаетесь использовать их для распутывания хаоса, созданного группой некомпетентных, неорганизованных программистов. Их сила проявляется в фазе конструирования, когда (i) они приводят к значительно более коротким исходным текстам, чем созданные без их помощи, и (ii) длина вывода программы растет не быстрее, чем линейно, с ростом самой программы. Наконец, программы, произведенные таким способом, получаются бесконечно лучшими, чем обычный программный хлам.
             
    Мы не должны забывать, что программисты живут в мире искусственно созданных сущностей, это отличает их от большинства других ученых. Программист не должен спрашивать, насколько применимы технологии надежного программирования, он должен создать мир, в котором они применимы; это единственный путь обеспечить высокое качество разработки. Добавлю цитату из EWD898 (1984):
             
    "Возможности машины дают нам теперь достаточный простор для создания хаоса. Неограниченные возможности для запутывания всего на свете! Выработка строгой интеллектуальной дисциплины сохранять вещи достаточно простыми  это настоящий вызов в этой среде, как технический, так и образовательный".

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

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

    "Слишком мало людей осознает, что высокие технологии, столь знаменитые сегодня, - это в основном математические технологии".
             
    (Выдержка из 2nd David-report, названного так в честь председателя комитета Dr. E.E. David Jr).

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

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

    prof. dr. Edsger W. Dijkstra   
    Department of Computer Sciences, The University of Texasat Austin, Austin, TX 78712-1188, USA 
    Alf

    Версия для печати
    Обсудить на форуме