Дейкстра уничтожил goto
Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті
Дейкстра тот, кто заложил основы структурного программирования. Так что когда будете в следующий раз писать if, else, while, то вспомните этого героя. В этой статье расскажу о нем и его подвиге по уничтожению goto.
Родился Дейкстра в Роттердаме в 1930 году. Детство у него было не легкое. Сначала пережил бомбардировку Роттердама во время Второй мировой войны, потом оккупацию Нидерландов Германией.
В 1948 он окончил среднюю школу с лучшими отметками по физике, биологии, химии и математике. А уже в возрасте 21 года его взяли на работу в Математический центр Амстердама и там он стал первым программистом в Нидерландах.
Интересно, что в 1957 году, когда он хотел жениться на Марии Дебет, то для вступающих в брак нужно было указывать свою профессию. И когда он показал в документе, что он программист, то власть с него посмеялась, ведь никогда не слышала о такой профессии. Поэтому пришлось указать в документе профессию «физики-теоретик».
Его очень задело, что в то время никто не воспринимал программирование, как что-то серьезное. И его руководитель Адрианом, сказал, что он может быть основателем профессии и превратить программирование в науку. Так он и поступил...
Хоть Дейкстра и жил в эпоху ламповой электроники, двоичного кода, примитивного ассемблера, перфолент и перфокарт, это не помешало ему сделать величайшие открытия в программирование.
Так в марте 1968 года была опубликована статья «О вреде оператора Go To» в журнале CACM и у мира программирования жопа запылала. Если тогда был бы интернет, то его бы закидали злобными сообщениями и мимасами))
За то людишки 10 лет закидывали гневными сообщениями редакторов многих на то время популярных журналов. В итоге в этой войне победил Дейкстра. Языки развивались и goto сдавал свою позицию, так что не дивно, что в современных языках нет goto, а все юзают парадигму структурного программирования.
Дейкстра за многие годы работы убедился, что инструкций goto вредна для структуры программы. Как бы фигово, что можно взять и в любой момент перескочить из одной части программы в другую. И поэтому он и предложил заменить goto конструкциями if//else и do/while/
Он рассуждал логично. Ведь какая бы не была программа, в ней всегда много деталей, с которыми наш мозг не может справиться без посторонней помощи. Провтычь одну крохотную деталь и вся программа может превратиться в кромешный ад. А с goto начинается такой беспорядок, что мама не горюй.
А вот его замечание из статьи:
«Мое второе замечание — то, что наши интеллектуальные силы в большей степени связаны со статическими отношениями, и что наши способности представлять процессы, развивающиеся во времени, развиты относительно плохо. Исходя из этого, мы должны делать (как мудрые программисты, осознающие свои ограничения) все возможное, чтобы сократить концептуальную пропасть между статической программой и динамическим процессом, чтобы сделать соответствие между программой (разворачивающейся в пространстве текста) и процессом (разворачивающимся во времени) настолько очевидным, насколько это возможно.»
Что еще хочу добавить. Парадигма — это способ программирования, не зависящий от конкретного языка. На сегодня есть только три парадигмы программирования: структурное, функциональное и объектно-ориентированное. Поэтому Дейкстра красавчик, ведь он заложил основы и продвигал структурное программирование.
Спасибо Дейкстра, что дал нам возможность if-кать и else-ть.
Залетайте в мой Telegram канал, в котором уже 1400 подписчиков — t.me/javascript_vue
519 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів