Лекция
Привет, Вы узнаете о том , что такое comefrom, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое comefrom, come from, инверсия goto , настоятельно рекомендую прочитать все из категории Алгоритмизация и программирование. Структурное программирование. Язык C.
В компьютерном программировании , COMEFROM (или COME FROM ) является неясным поток управления структурой , используемой в некоторых языках программирования , изначально как шутка. COMEFROM
является инверсией GOTO
в том смысле, что он может принимать состояние выполнения из любой произвольной точки кода в COMEFROM
оператор.
Точка в коде, в которой происходит передача состояния, обычно указывается в качестве параметра для COMEFROM
. Произойдет ли передача до или после инструкции в указанной точке передачи, зависит от используемого языка. В зависимости от используемого языка несколько COMEFROM
s, ссылающихся на одну и ту же отправную точку, могут быть недействительными, недетерминированными, выполняться с определенным приоритетом или даже вызывать параллельное или иным образом параллельное выполнение, как это видно в Threaded Intercal . [ необходима цитата ]
Простым примером оператора " COMEFROM x
" является метка x
(которая не обязательно должна физически располагаться где-либо рядом с соответствующим COMEFROM
), которая действует как "люк". Когда выполнение кода достигает метки, управление передается оператору, следующему заCOMEFROM
. Это также может быть условным, передача управления только в том случае, если условие удовлетворяется, аналогично GOTO в операторе IF. Основное отличие от GOTO заключается в том, что GOTO зависит только от локальной структуры кода, в то время как COMEFROM зависит от глобальной структуры - GOTO передает управление, когда достигает строки с оператором GOTO, в то время как COMEFROM требует сканирования всей программы или области действия для посмотреть, попадают ли какие-либо операторы COMEFROM в область действия строки, а затем проверить, выполнено ли условие. Эффект от этого состоит в том, чтобы в первую очередь сделать отладку (и понимание потока управления программой) чрезвычайно трудной, поскольку рядом с рассматриваемой строкой или меткой нет никаких указаний на то, что управление таинственным образом переместится в другую точку программы - нужно изучить всю программу, чтобы увидеть, ссылаются ли какие-либо операторы COMEFROM на эту строку или метку.
Перехватчики отладчика могут использоваться для реализации оператора COMEFROM, как в юмористическом модуле goto Python ; см. Ниже . Это также можно реализовать с помощью функции gcc "asm goto", которая используется параметром конфигурации ядра Linux CONFIG_JUMP_LABEL. Положение бездействия сохраняется, и оно заменяется переходом к исполняемому фрагменту, который в конце возвращается к инструкции после бездействия.
COMEFROM
изначально был замечен в списках инструкций на ассемблере (как «CMFRM»). Об этом говорит сайт https://intellect.icu . Это было развито в статье Datamation Р. Лоуренса Кларка в 1973 году , написанной в ответ на письмо Эдсгера Дейкстры « Перейти к заявлению, признанному вредным» . В конечном итоге COMEFROM был реализован в варианте C-INTERCAL эзотерического языка программирования INTERCAL вместе с еще более неясным «вычисляемым COMEFROM
». Были также предложения Fortran для 'назначенного COME FROM
' и ' DONT
' ключевого слова (для дополнения существующего DO
цикла).
1 апреля 2004 года Ричи Хиндл опубликовал реализацию как для языка программирования Python, так GOTO
и COMEFROM
для него . Несмотря на то, что он был выпущен в День дурака и не предназначен для серьезного использования, синтаксис действителен и реализация полностью работает.
Ниже приведен пример программы на гипотетическом диалекте BASIC с " COMEFROM
" вместо " GOTO
".
Эта программа (гипотетически) работает, запрашивая у пользователя его имя, приветствуя его тем же именем и повторяя все заново. Инструкция « REM
» в строке 40 - это просто NOP (в данном случае, комментарий ) - COMEFROM
оператор « » в строке 10 вызывает возврат к этой строке, когда выполнение достигает строки 40, независимо от ее содержимого.
Полностью исполняемый пример на Python с goto
установленным модулем шутки (который использует хуки отладчика для управления выполнением программы) выглядит так:
Это реализация в Ruby оператора Intercal COME FROM.
Компилятор OS / 360 Fortran G имеет функцию отладочного пакета. Его оператор «AT» похож на COMEFROM в том, что он передает поток управления блоку отладки. Точки останова в целом похожи.
COMEFROM
Серьезные программные хитрости, включающие идеи, напоминающие COMEFROM:
Данная статья про comefrom подтверждают значимость применения современных методик для изучения данных проблем. Надеюсь, что теперь ты понял что такое comefrom, come from, инверсия goto и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Алгоритмизация и программирование. Структурное программирование. Язык C
Из статьи мы узнали кратко, но содержательно про comefrom
Комментарии
Оставить комментарий
Алгоритмизация и программирование. Структурное программирование. Язык C
Термины: Алгоритмизация и программирование. Структурное программирование. Язык C