Forth http://fforum.winglion.ru/ |
|
Сермяжная правда, или флейм о вечном http://fforum.winglion.ru/viewtopic.php?f=12&t=2811 |
Страница 1 из 15 |
Автор: | gudleifr [ Вс фев 19, 2012 22:49 ] |
Заголовок сообщения: | Сермяжная правда, или флейм о вечном |
"В начале было Слово. И было в Слове два байта". Начала формализмов: Изначален код. Код бывает настроенный (уже находящийся в нужном месте и привязанный ссылками к остальной программе) и настраиваемый, который надо где-то разместить и "прилинковать". Пример первого - результат выполнения конструкции CODE, дающей готовый кусок, пригодный для немедленного исполнения, поэтому его так и назовем code. Пример второго - заготовки кусков кода, содержащиеся в словах CREATE или VARIABLE при использовании прямого шитого кода, которые будут скопированы и прилинкованы в слова, ими порождаемые. Такой код назовем l-code. Для общности добавим еще q-code - псевдо-код на человеческом языке, для пока не формализованных фрагментов. Code можно еще немного специфицировать, в зависимости от того, куда он собирается передать управление по окончании работы: a-code, в котором адрес возврата прошит непосредственно; n-code, который берет адрес возврата из известного ему места, например, расположенного в памяти сразу за ним или специального регистра; и r-code, берущего адрес возврата "оттуда же, откуда и все", например, из стека возвратов. Всю программу в целом будем считать a-code, т.к. ее конец явно обозначен вызовом exit(), устройство которой нам безразлично. Зачем это надо? Чтобы формально описывать, например, вид шитого кода. Так, для прямого шитого кода слово CODE будет плодить n-сode, а "двоеточие" - r-code. |
Автор: | WingLion [ Пн фев 20, 2012 04:39 ] |
Заголовок сообщения: | Re: Форт - словарик |
"В начале было слово. И оно было нецензурное. Потому что цензуры еще не было" (с)... |
Автор: | chess [ Пн фев 20, 2012 15:37 ] |
Заголовок сообщения: | Re: Форт - словарик |
gudleifr писал(а): Код бывает... Еще бывает временый код, который создается на лету(то есть генерится в каком-то количестве и в каком-то достаточно свободном для этого месте), затем исполняется и уничтожается. |
Автор: | gudleifr [ Пн фев 20, 2012 15:43 ] |
Заголовок сообщения: | Re: Форт - словарик |
chess писал(а): Еще бывает временый код... Любой код - временный, ибо все преходяще... А каждая программа, выполнившись, из памяти удаляется...
|
Автор: | chess [ Пн фев 20, 2012 15:47 ] |
Заголовок сообщения: | Re: Форт - словарик |
gudleifr писал(а): Любой код - временный, ибо все преходяще... Если сохранить по SAVE программу, то все останется, а этот код, нет. |
Автор: | gudleifr [ Пн фев 20, 2012 15:52 ] |
Заголовок сообщения: | Re: Форт - словарик |
chess писал(а): Если сохранить по SAVE программу, то все останется, а этот код, нет. Не следует плодить сущности без потребности. Я знаю много вещей, которые не сохраняются, сохраняются избыточно, вообще, не создаются, но сейчас я говорю о видах кода, а не о границах Вашей эрудиции.
|
Автор: | chess [ Пн фев 20, 2012 16:01 ] |
Заголовок сообщения: | Re: Форт - словарик |
gudleifr писал(а): Не следует плодить сущности без потребности. Почему без потребности? Временный код исполняет полезную работу на определенном участке программы, а затем уничтожается за дальнейшей ненадобностью. Например, подгрузили ассемблер во временный словарь, создали на нем кучу слов в основном словаре и удалили временный словарь с кодом ассемблера. Вполне обычное дело. |
Автор: | gudleifr [ Пн фев 20, 2012 16:06 ] |
Заголовок сообщения: | Re: Форт - словарик |
chess писал(а): Почему без потребности? Потому, что с точки зрения введенных мной определений временность кода безразлична. И l- и q-, и a-, и n-, и r-code могут быть временными. Как я уже писал выше, "постоянность" кода - понятие очень условное, способное к существованию крайне ограниченно.
|
Автор: | chess [ Пн фев 20, 2012 16:49 ] |
Заголовок сообщения: | Re: Форт - словарик |
gudleifr писал(а): Потому, что с точки зрения введенных мной определений временность кода безразлична. Только не по отношению к исходной форт-системе. Для нее весь ее код - постоянный. Кроме того, r-code для подпрограммного кода может не иметь смысла, так как в некоторых архитектурах нет стека возврата. |
Автор: | gudleifr [ Пн фев 20, 2012 17:10 ] |
Заголовок сообщения: | Re: Форт - словарик |
chess писал(а): gudleifr писал(а): ... временность кода безразлична. Для нее весь ее код - постоянный.chess писал(а): Кроме того, r-code для подпрограммного кода может не иметь смысла, так как в некоторых архитектурах нет стека возврата. Т.о. различение этого вида кода - важнейшая часть различения архитектур.
|
Автор: | dynamic-wind [ Пн фев 20, 2012 17:23 ] |
Заголовок сообщения: | Re: Форт - словарик |
chess писал(а): Кроме того, r-code для подпрограммного кода может не иметь смысла, так как в некоторых архитектурах нет стека возврата. Это просто код, который возвращается "как все" (полагается на стандартную последовательность вызова). "Адрес возврата на стеке"--вариант стандартного вызова. |
Автор: | gudleifr [ Пн фев 20, 2012 17:29 ] |
Заголовок сообщения: | Re: Форт - словарик |
Конечно, хочется останоновиться со всем этим малопонятным "кодом" и попрбовать с другой стороны - от данных. Это позволит вместо мутной функциональной классификации перейти к чему-то более стрктурно-объектному. Как учитит великий и могучий Вирт, вумность данных неуклонно ведет к построению вумных программ. Огорчу. Работает только процессор (ну, еще пара-другая контроллеров), и понимает он только команды (код), а данные - это только довесок к командам. Все эти абстракции, помнящие, как именно с ним обращаться, это лишь абстракция. А, еще точнее, обфускация, т.е. преднаиеренное запутывание существа программистского дела. Как только возникает потребность в анализе или компиляции, вся эта шелуха счищается. Другая неприятность, поджидающая нас на пути морфологии данных, это тот факт, что интересуют нас обычно сложные данные, а разложение их на кирпичики - приводит к россыпи ничего не значащих банальностей. Или, даже, хуже к ляпам, вроде описания типа переменной в отрыве от ее инициализации. Взять, хотя бы, такую сущность как заголовок Forth-слова. Что нам от него надо, вполне описывается словами, имеющими с ним дело (т.е. кодом), но попробуйте перечислить все варианты хранения в памяти всех его "кирпичиков". И, более того, когда мы доразбираем заголовок до кирпичика "адрес", то придется вспомнить, что адрес может храниться не только в поле заголовка, но и в регистре, команде, стеке... Нужны нам все эти разносолы? Потому вернемся к коду. |
Автор: | `Kopa [ Пн фев 20, 2012 18:35 ] |
Заголовок сообщения: | Re: Форт - словарик |
gudleifr писал(а): Конечно, хочется останоновиться со всем этим малопонятным "кодом" и попрбовать с другой стороны - от данных. ... К чему все эти мутности? Можно ещё добавить х-код, который настраивает по уставкам (переменным окружения, настройки программы, да просто однозначный контекст ...) а-сод. P.S. Отталкиваясь от данных приходит к структуре программы управляемой данными (например автоматы), что тоже является неплохим вариантом.:) |
Автор: | gudleifr [ Пн фев 20, 2012 18:54 ] |
Заголовок сообщения: | Re: Форт - словарик |
`Kopa писал(а): Можно ещё добавить х-код, который настраивает по уставкам Если он настраивает, то это его функция, до обсуждения которой мы еще не дошли, если настраивается, то это l-code. Но если имелось в виду, что он действует строго по Уставу...
|
Автор: | вопрос [ Пн фев 20, 2012 19:01 ] |
Заголовок сообщения: | Re: Форт - словарик |
gudleifr писал(а): Если он настраивает, то это его функция, до обсуждения которой мы еще не дошли, если настраивается, то это l-code. Но если имелось в виду, что он действует строго по Уставу... Если классификация полна, то её нужно использовать далее, если неполна - это проявится только во время использования |
Страница 1 из 15 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |