Мультфильм – Шоссе и программы

Выбранный на этой неделе мультфильм xkcd может кого-то озадачить. Почему дороги? Простой ответ заключается в том, что для алгоритмического ума каждая программа-это путь к путешествию, и мы здесь не говорим о философии.

Одним из навыков программирования является способность объединять циклы, условные обозначения и всевозможные инструкции, чтобы вы строили пути для кода, которому может следовать машина. Возьмите палец и поместите его на начало программы. Теперь следуйте всем возможным путям программы – выполните циклы и возьмите каждую ветвь условного. Форма, которую вы отслеживаете, является графом потока управления, и она характеризует программу.

Точно так же, как дорожная карта говорит вам, как добраться от А до В, график потока управления показывает, как добраться от начала до конца программы.

Так какое же это имеет отношение к невозможным перекресткам на шоссе?

Больше мультяшного веселья в xkcd веб-комикс о романтике,сарказме, математике и языке

В старые времена поток управления был полностью бесплатным, потому что мы могли создавать программы, используя оператор Goto или Jump. В результате программисты создавали программы с очень сложным и часто неправильным потоком управления. Да, вы действительно могли бы столкнуться с неизбежным клеверлифом и обменом с нулевым выбором, если бы не вращающийся суперколлайдер.

Подобные примеры часто возникали, когда один программист изменял работу другого или когда один программист возвращался и изменял свою собственную работу. То, что должно было быть условным, случайно превратилось в поток управления по умолчанию, и то, что выглядело как выбор, стало вообще не выбором.

Сегодня мы не делаем ничего подобного, потому что в наших языках есть четкие управляющие конструкции – если…тогда … еще, пока, пока и так далее. Тем не менее, есть программисты, которые обладают тем же чувством юмора, что и дорожный инженер, и изобретают синтаксис “пока нет”, “несколько повторений” и “никогда”.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *