Эдгар Дейкстра отвечает на вопросы студентов…
Июль 4, 2007 — seregaborzovАлгоритм Дейкстры? Мне жаль, если Вы знаете только это об этом гуру информатики. В сети масса ресурсов о Дейкстре, поищите - он того стоит. Я же привожу часть ответов Дейкстры на вопросы студентов.
Перевод с англ. Олег Хачкинаев (Alf)
Ответы на вопросы студентов отделения программного обеспечения
[Восстановить примерные вопросы мы предлагаем читателю в качестве упражнения.]• Красивые безделушки — не всегда усовершенствование, возьмите, к примеру, последовательность: Классная доска => Диапроектор => PowerPoint.
• Мне не следует тратить время на компьютер лишь потому, что я ученый-компьютерщик. [Медикам-исследователям вовсе не обязательно самим страдать от болезней, которые они изучают.]
• Это не задача информатики — продвигать «компьютеризацию», скажем, разрабатывая прожорливые приложения и тем самым создавая рынок для следующего поколения вычислительного оборудования. [Медикам-исследователям не следует изобретать новые болезни, чтобы создавать рынок для новых лекарственных средств.]
• Задача Университета — не предлагать то, что общество просит, а давать то, что обществу необходимо. [Те вещи, что общество просит, в основном хорошо понятны, и для них не нужен Университет; он же должен предлагать то, что никто больше предоставить не в состоянии.]
• На наше формирование большое влияние оказывают инструменты, которые мы используем, в частности, формализмы, которые мы используем, формируют наш образ мышления лучшим или худшим образом, и это значит, что мы должны быть чрезвычайно осторожны в выборе того, чему учить и чему учиться, потому что разучиться потом совершенно невозможно. [Много лет назад, когда мне нужен был новый ассистент, одним из требований было «Не иметь даже понятия о Фортране», а в высшей школе в Сибири запрещено преподавание Бейсика.]
• Программист должен уметь демонстрировать, что его программа обладает требуемыми свойствами. Если эта мысль приходит ему в голову слишком поздно, он наверняка не сможет справиться с этой задачей: только если он позволяет этой цели влиять на разработку, есть надежда, что он справится с ней. Окончательная проверка не обеспечивает этого влияния и по сути дела является телегой, запряженной впереди лошади. Но именно это и происходит в программных фирмах, в которых «программирование» и «контроль качества» осуществляют разные группы. [Вряд ли стоит говорить, что эти фирмы не дают никакой гарантии качества.]
• Необходимые приемы эффективного доказательства достаточно формальны, но до тех пор, пока программированием занимаются люди, не владеющие этими приемами, кризис программного обеспечения будет сохраняться и рассматриваться как неизлечимая болезнь. А вы знаете, что делают неизлечимые болезни: они приводят к появлению знахарей и шарлатанов, которые в данном случае принимают личину Гуру Программирования.
• Кое-кто из вас сомневается, что упомянутые ранее «приемы эффективного доказательства», столь изящные для маленьких программ, способны масштабироваться, я цитирую, «применимо к устрашающим размерам и явной сложности большинства программ». Что ж, приемы окажутся бесполезны, если вы попытаетесь использовать их для распутывания хаоса, созданного группой некомпетентных, неорганизованных программистов. Их сила проявляется в фазе конструирования, когда (i) они приводят к значительно более коротким исходным текстам, чем созданные без их помощи, и (ii) длина вывода программы растет не быстрее, чем линейно, с ростом самой программы. Наконец, программы, произведенные таким способом, получаются бесконечно лучшими, чем обычный программный хлам. Мы не должны забывать, что программисты живут в мире искусственно созданных сущностей, это отличает их от большинства других ученых. Программист не должен спрашивать, насколько применимы технологии надежного программирования. Он должен создать мир, в котором они применимы; это единственный путь обеспечить высокое качество разработки. «Возможности машины дают нам теперь достаточный простор для создания хаоса. Неограниченные возможности для запутывания всего на свете! Выработка строгой интеллектуальной дисциплины сохранять вещи достаточно простыми — это настоящий вызов в этой среде, как технический, так и образовательный».
• «Вернемся к нашему первоначальному вопросу: может ли наука о компьютерах спасти компьютерную промышленность? Мой ответ таков: если компьютерную промышленность вообще можно спасти, только наука о компьютерах способна сделать это. Но может пройти немало времени, пока компьютерная промышленность — в особенности компании, крепко стоящие на ногах, — согласятся с этой точкой зрения. Почти наверняка это потребует больше времени, чем тот ограниченный период, на который они строят свои будущие планы. Тем временем академический мир — который традиционно строит гораздо более далеко идущие планы, — не имеет выбора. Он вынужден совершенствовать лучшие навыки, которые может выработать информатика, и обучать им. Чем поддаваться внешнему давлению и распространять сегодняшние заблуждения, лучше прекратить эту деятельность вовсе». Но чтобы подчеркнуть, как много терпения нам понадобится, позвольте привести еще одну старую цитату (1988): «Слишком мало людей осознает, что высокие технологии, столь знаменитые сегодня, — это в основном математические технологии». (Выдержка из 2nd David-report, названного так в честь председателя комитета Dr. E.E. David Jr.)
• Нет, я боюсь, что Информатика страдает от популярности Интернета. Он привлекает все возрастающую — если не сказать сметающую все на своем пути — массу студентов с весьма слабыми научными склонностями, и при более близком знакомстве Интернет только укрепляет господствующую (и несколько вульгарную) одержимость скоростью и объемами.
• Да, я разделяю ваше беспокойство: вряд ли можно научиться хорошо программировать, пройдя соответствующий курс. Ситуация сходна с аналогичной в математике, где программа обучения ориентирована на математические результаты; как заниматься самой математикой — студент должен впитать самостоятельно, так сказать. Один из доводов в пользу манипуляции символами и вычислительных доказательств — им гораздо легче научить, чем словесно-графическим доказательствам. Широкое введение курсов подобной вычислительной методологии, впрочем, столкнется с непреодолимыми политическими проблемами.
• В программном бизнесе имеется множество предприятий, которым неясно, что наука может помочь им; им также неясно, что она должна попытаться сделать это.
и еще в Размышляешь? много цитат от Дейкстры.
…а музыка была: Snoop Dogg feat. Pharell Williams - Let’s Get Blown
зы: если кто-то не понимает зачем я вставляю …а музыка была, так это для того, чтоб вы слушали именно этот трек при прочтении поста, чтобы оказаться на одной волне с автором и прочувствовать всю литературную подоплеку конкретного рассказа…
Blogus tags : программирование
del.icio.us Tags: progarmming, Dijkstra
Tags: Dijkstra programming









Июль 6, 2007 at 2:26 пп
“литературная подоплёка” в данном посте, по-моему, практически отсутствует.
Июль 6, 2007 at 4:45 пп
=))))
конкретный имелся ввиду не только этот, а вапще пост как таковой…
Июль 10, 2007 at 11:52 дп
Круто!
Июль 10, 2007 at 2:58 пп
ЗЫ - зачетный! :))
Июль 11, 2007 at 3:09 пп
ок -) выложу еще чего-нить от него…