Ուղակի ինտելեկտուալ օրգազմ ապրեցի Դեյկստրայի «Խոնարհ ծրագրավորողը» հոդվածը կարդալիս: Ահա կոնսպեկտը … Որոշ մասեր հետաքրքիր կլինեն նաև ոչ ծրագրավորողների համար:
Թե ինչպես ֆիզիկոսը դարձավ ծրագրավորող
В результате долгой цепочки случайностей первым весенним утром 1952 года я официально стал программистом, и
насколько я могу судить, я был первым голландцем, выбравшим эту стезю. Помнится, самой забавной вещью была та
неторопливость, с которой, по крайней мере в той части мира, где я жил, появлялась профессия программиста,
неторопливость, в которую теперь даже поверить трудно.
После того, как я прозанимался программированием около трех лет, у меня состоялась беседа с А. Ван Вейнгаарденом,
который был в то время моим боссом в Математическом центре Амстердама, беседа, за которую я буду благодарен ему
до конца моих дней. Дело в том, что предполагалось, что я буду параллельно изучать теоретическую физику в
Лейденском университете, и так как мне становилось все труднее и труднее совмещать два этих занятия, я должен был
определиться: либо бросить программирование и стать почтенным физиком-теоретиком, либо кое-как доучиться физике до формального выпуска с минимальными усилиями, и затем стать…, а кем, кстати? Программистом? Но является ли
это достойной профессией? В конце концов, что это такое – программирование? Где та солидная теоретическая основа,
которая должна поддерживать его как уважаемую интеллектуальную дисциплину? Я довольно отчетливо помню, как я завидовал своим коллегам, которые работали с оборудованием: когда у них спрашивали об их профессиональных навыках, они по крайней мере могли сказать, что знают все о вакуумных лампах, усилителях и тому подобных вещах, тогда как я чувствовал, что, когда столкнусь с этим вопросом, мне останется только лишь развести руками. Полный опасений, я постучал в дверь Ван Вейнгаардена, спросив, могу ли я “поговорить с ним минутку”; несколько часов спустя я покинул его офис другим человеком. Внимательно выслушав мои проблемы, он согласился, что до сих пор наука
программирования не так уж развита, но затем принялся неторопливо объяснять, что автоматические компьютеры – это
надолго, что мы находимся в самом начале, и почему бы мне не стать одним из тех, кто призван сделать программирование уважаемой дисциплиной? Это стало поворотной точкой в моей жизни, и я формально закончил изучение физики так быстро, как только мог. Мораль этой истории – в том, что, конечно, мы должны быть очень осторожны,давая советы молодежи: иногда они следуют им!
Թե ինչպես էին լարում ծրագրավորողներին հոլանդացիք
Еще два года спустя, в 1957, я женился, и голландский обряд регистрации брака требовал указать профессию; я указал “программист”. Но городские власти Амстердама не приняли документы на том основании, что такой профессии не существует. Хотите – верьте, хотите – нет, но в графе “профессия” моего свидетельства о браке значится забавная
запись “физик-теоретик”! Стоит ли говорить о том, как медленно профессия программиста пробивала себе путь в моей стране. С тех пор я немало повидал во всем мире, и мое общее впечатление таково, что в других странах, если не считать возможного сдвига дат, ее продвижение в целом было таким же.
Երկու կարծիք ծրագրավորողների արած գործի մասին
В те времена сложилось два мнения о программировании. … Одно мнение – действительно компетентный программист должен обладать парадоксальным мышлением и обожать заумные трюки; второе – программирование представляет собой не более чем оптимизацию эффективности вычислительного процесса в том или ином направлении.
Փիլիսոփայության հիմնական հարցը(կեցության-գիտակցության) ծրագրավորման մեջ
один из важнейших аспектов любого вычислительного инструмента – это его влияние на образ мыслей тех, кто пытается его использовать, а также в том, что у меня есть причины считать, что это влияние во много раз сильнее, чем принято думать
…он относится к влиянию инструментов, которые мы пытаемся использовать, на наш образ мышления. Я наблюдаю культурную традицию, которая, по всей вероятности, уходит корнями в эпоху Возрождения: игнорировать это влияние и рассматривать человеческую мысль как первичную и главенствующую над тем, что ей создано. Но когда я начинаю анализировать свои собственные мыслительные привычки и привычки моих друзей, я прихожу, нравится мне это или нет, к совершенно иному заключению, а именно: инструменты, которые мы пытаемся использовать, и язык и обозначения, которые мы используем для выражения или записи наших мыслей, являются основным фактором, который определяет, о чем мы вообще можем мыслить и что можем выразить!
Մի քիչ պատմություն
Ենթածրագրերի գրադարաններ
Вначале был EDSAC в Кембридже, Англия, и я нахожу весьма впечатляющим, что с самого начала понятие библиотеки подпрограмм играло центральную роль при проектировании этой машины и способа ее использования. Прошло почти 25 лет, и обстановка в компьютерном мире радикально изменилась, но понятие базового программного обеспечения до сих пор с нами, и понятие замкнутой подпрограммы остается одной из ключевых концепций программирования. Мы должны признать замкнутые подпрограммы одним из величайших изобретений в программировании; оно пережило три поколения компьютеров и будет жить еще значительно дольше, поскольку представляет основу для реализации наших базовых механизмов абстракции
FORTRAN
Вторым большим шагом является рождение FORTRAN’а.
LISP
Третий проект, который не хотелось бы оставить в забвении, – это LISP, очаровательный проект совершенно иной природы. Имея в своей основе так мало базовых принципов, он продемонстрировал замечательную стабильность. Кроме этого, LISP послужил основой для значительного числа в некотором роде наших наиболее изощренных компьютерных приложений. LISP был шутливо охарактеризован как “наиболее интеллектуальный способ использования компьютера не
по назначению”. Я считаю эту характеристику лестным комплиментом, поскольку она в полной мере передает дух освобождения (разума): он помог многим нашим наиболее одаренным коллегам в обдумывании идей,
доселе немыслимых.
ALGOL 60
“Отчет об алгоритмическом языке ALGOL 60” – это продукт усилий по продвижению абстракции на один жизненно важный шаг дальше и по определению языка программирования способом, независимым от реализации.
Հեղափոխությունների մասին
(ճշմարիտ է նաև հասարակական ու քաղաքական հեղափոխությունների համար)
Но мы знаем, что революции все же происходят время от времени! ….
Похоже, должны выполниться три основных условия.
Во-первых, во всем мире должны признать необходимость перемен;
во-вторых, для них должны быть достаточно сильны экономические потребности;
и в-третьих, перемены должны быть осуществимы технически
Ծրագրերի ինտելեկտուալ կառավարելիության մասին
Изучение структуры программ выявило, что программы – даже альтернативные варианты, которые решают те же самые задачи и оперируют теми же математическими константами – могут разительно отличаться по своей интеллектуальной управляемости. Было открыто несколько правил, нарушение которых либо существенно ослабляет, либо вовсе разрушает интеллектуальную управляемость программы. Эти правила делятся на два вида. Правила первого вида накладываются автоматически выбором адекватного языка программирования. Примеры – исключения операторов goto и процедур с более чем одним выходным параметром. Для правил второго вида я по меньшей мере – возможно, из-за недостаточной компетентности с моей стороны – не вижу способа механического применения, потому что, мне кажется, для этого потребуется некий автомат для доказательства теорем, для которого я не располагаю доказательством существования. Поэтому сейчас (и возможно, навсегда) правила второго вида представляют собой элементы
дисциплины, требуемой от программиста. Некоторые из этих правил, которые я держу в голове, настолько ясны, что им можно обучить и что никогда не потребуется спорить, нарушает ли их данная программа или нет. Примеры: требования к циклам, которые не должны записываться без приведения доказательства их завершения, а также без установки
соотношений, инвариантность которых не нарушается при циклическом выполнении оператора.
Խոնարհության մասին
Компетентный программист хорошо знает о том, что объем его черепной коробки крайне ограничен; поэтому он подходит к задаче программирования с предельным смирением, и помимо прочего он избегает заумных трюков как чумы
Հիերարխիկ համակարգերի մասին ընդանհրապես
Похоже, что иерархические системы обладают тем свойством, что нечто, рассматриваемое как неделимое целое на одном уровне, рассматривается как составной объект на следующем, более низком уровне с большей детализацией; в результате дискретность пространства или времени, применимая на каждом уровне, уменьшается а порядок величины при переходе от одного уровня к другому, следующему за ним более низкому.
Հիերարխիկ համակարգերի մասին մասնաորապես
В результате количество уровней, которые могут быть осмысленно выделены в иерархической системе, в некотором роде пропорционально логарифму отношения между наибольшим и наименьшим дискретами, и поэтому, если только это соотношение не чрезмерно велико, мы можем ожидать появления не слишком большого числа уровней. В области компьютерного программирования наш базовый строительный блок имеет дискретность времени менее микросекунды, но наша программа может потребовать несколько часов вычислений. Я не знаю никакой другой технологии, перекрывающей отношение 1010 и более: компьютер, благодаря его фантастической скорости, кажется, впервые предоставил нам среду, в которой артефакты с высокой степенью иерархичности одновременно и возможны, и необходимы
Ու թե ինչ կապ ունի դա մեզ հետ
Этот вызов …. столь уникален, что новый опыт может
рассказать нам очень много нового о нас самих. Он может углубить наше понимание процессов разработки и созидания, он может дать нам лучший контроль над организацией нашего мышления. Если бы он не сделал этого, на мой взгляд, мы вообще не заслуживаем компьютеров!
Բրավո Դեյկստրա, բրավո !!!
Դեյկստրա “Խոնարհ ծրագրավորողը” ևս մի քանի միտք
Շնորհակալություն!
Ձեզ էլ 🙂