Я уже как-то публиковал статью Дейсктры. Вот новая. Перевод с англ. Олег Хачкинаев (Alf), 14 августа 2004:
Существует два расхожих и радикально противоположных взгляда на программирование:
• Взгляд А: Программирование по сути — вещь несложная.
• Взгляд В: Программирование — это очень сложно.
Такое противоречие можно объяснить тем, что в этих двух утверждениях само слово «программирование» употребляется в двух совершенно различных значениях, и на этом успокоиться. Тем не менее этого все-таки недостаточно. От того, какой из взглядов считается более предпочтительным, зависят не только кадровая политика организаций, использующих компьютеры, и учебные программы высших учебных заведений, но и направление развития и исследований в самой компьютерной науке. Таким образом, имеет смысл более детально рассмотреть природу различий между этими двумя убеждениями и по возможности очертить обстоятельства, в соответствии с которыми люди выбирают один подход, а не другой. В этом и есть назначение данного документа.
В этом исследовании мне видится одно препятствие: в этой дискуссии я не являюсь нейтральной стороной. Я — убежденный сторонник взгляда В и рассматриваю взгляд А как основную причину многих печальных заблуждений.
С другой стороны, я не считаю, что наличие собственного мнения дисквалифицирует меня как автора, особенно если я заранее предупрежу об этом своих читателей и не буду притворяться нейтральным. В процессе анализа мы раскроем, как эти различные взгляды на программирование (которое является человеческой деятельностью!) связаны с различными человеческими убеждениями. Влияние предрассудков и мнений — уже само объясняет то почти религиозное рвение, с которым ведутся сражения между сторонниками разных лагерей. Начальный период истории автоматических вычислений делает взгляд А очень понятным. До того как у нас появились компьютеры, программирование вообще не являлось проблемой. Затем появились первые машины: по сравнению с нашими нынешними компьютерами они были просто игрушками, и по сравнению с тем, что мы пытаемся делать сейчас, они использовались лишь для «микроприложений». Если на этом этапе программирование и было проблемой, то весьма незначительной. Добавьте к этому источники трудностей, которые в то время поглощали — или лучше
сказать узурпировали? — большую часть нашего внимания:
1. Арифметические устройства были слишком медленные по отношению к тому, что мы хотели делать с их помощью: эти башмаки почти всегда оказывались слишком тесными, и ради эффективности программы допускались все возможные трюки кодирования (и очень немногие из них реально не использовались).
2. Разработка и конструирование арифметических устройств были настолько новой и, следовательно, трудной задачей, что, если очередная аномалия в коде инструкции могла избавить от каких-либо кульбитов, от них обычно избавлялись — разумеется и потому, что у нас было так мало опыта в программировании, мы не могли хорошо распознавать «аномалии в программном коде»; в результате нам не было необходимости использовать трюки в коде, но также у нас была великолепная возможность их применять.
3. Памяти всегда было слишком мало, и это вместе с ненадежностью первого оборудования препятствовало более разумному использованию машин.
В это время программирование представлялось в первую очередь как битва с ограничениями машины, битва, которую нужно было выиграть хитростью. Это было систематическое использование специфических особенностей каждой машины: это был расцвет виртуозного кодирования. В течение следующих 10—15 лет процессоры стали в тысячи раз быстрее, памяти стало в тысячи раз больше, и языки программирования высокого уровня вошли в обиход. И именно в это время, с одной стороны, программирование все еще прочно ассоциировалось с тесными башмаками, в то время как с другой — чувствовалось, что башмаки жмут все меньше и меньше, и ожидалось, что
еще через пять лет технического прогресса проблемы в программировании вовсе исчезнут. Именно в это время сформировался взгляд А. В конце этого периода, на волне популярности взгляда А, был разработан Кобол с тем посылом, что он должен сделать программирование как вид деятельности профессиональных программистов ненужным, позволив «пользователю» (не в это ли время слово «пользователь» стало общеупотребимым?) записывать то, что он хочет, на «простом языке», который любой может прочесть и понять.
Все мы знаем, что эта прекрасная мечта так и осталась мечтой. Следующие пять лет принесли нам вместо исчезновения всех проблем, связанных с программированием, кризис программного обеспечения, и Кобол вместо того чтобы выжить профессиональных программистов стал грандиозным инструментом программирования для еще большего их числа; и по прошествии десяти лет мы все еще имеем машины, в которых ошибки базового программного обеспечения вызывают в среднем час простоя на каждые 15 часов работы. Очевидно, что серьезные проблемы программирования до сих пор налицо…
Забавная вещь: несмотря на полную очевидность обратного, взгляд А все еще жив. Некоторые объясняют этот странный факт, с укоризной указывая пальцем на большие организации. Также можно апеллировать к организациям, которые, привлекая специалистов, разделяющих взгляд А, из-за этого потеряли возможность свободно расстаться с ним, либо к фирмам-производителям компьютеров и образовательным институтам, которые поддерживают широко распространенный взгляд А, поскольку должны представлять его как основной для их рынка. Даже если этот упрек заслуженный, я не могу принять его как достаточное объяснение живучести взгляда А, и вынужден предположить, что подход А соответствует каким-то более глубинным потребностям человеческого сознания.
PS: смотрел буклеты в турагенстве - пляжи Хорватии и Черногории просто сногсшибательны. Все-таки красиво, там где нас нет! =))) Но мы скоро и туда доберемся.