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/