Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пн июн 01, 2020 06:04

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: История LITARAL
СообщениеДобавлено: Пн май 18, 2020 10:13 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 973
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
Как вообще додумались до этого слова?
Оно же для форта черезчур умное.
Ведь чтобы получить его функциональность надо использовать различные костыли.

Например, чтобы скомпилировать число в режиме интерпретации надо менять значение STATE.
Или вот из-за флага IMMEDIATE слово можно скомпилировать только с пом. ['] или [COMPILE]

Как вообще додумались до этого черезчур уж умного и специфичного слова?

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: История LITARAL
СообщениеДобавлено: Пн май 18, 2020 14:12 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 1181
Благодарил (а): 3 раз.
Поблагодарили: 44 раз.
А, что c LITERAL не так
Код:
: LITERAL STATE @ IF COMPILE LIT , THEN ; IMMEDIATE

или так для 94-стандарта
Код:
: LITERAL STATE @ IF POSTPONE LIT , THEN ; IMMEDIATE


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: История LITARAL
СообщениеДобавлено: Пн май 18, 2020 14:39 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 973
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
KPG писал(а):
...

Оно слишком умное.
Я все выше расписал.
И я знаю, как его выразить.
Мне непонятно зачем вообще.

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: История LITARAL
СообщениеДобавлено: Пн май 18, 2020 14:48 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5003
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 20 раз.
Поблагодарили: 58 раз.
Victor__v писал(а):
И я знаю, как его выразить.
Мне непонятно зачем вообще.

1. чтобы компилировать внутри кода константы.
2. чтобы вообще компилировать код.

Куда забавнее слово POSTPONE - очень рекомендую (не использовать никогда). Ж8))

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: История LITARAL
СообщениеДобавлено: Пн май 18, 2020 15:09 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 973
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
mOleg писал(а):
1. чтобы компилировать внутри кода константы.
2. чтобы вообще компилировать код.

Есть замечательное слово LIT, которое не учитывает режим исполнения и не имеет флага IMMEDIATE

Цитата:
Куда забавнее слово POSTPONE - очень рекомендую (не использовать никогда). Ж8))


В Нове это слово компилирует компиляцию слова с последующим учетом флага.

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: История LITARAL
СообщениеДобавлено: Пн май 18, 2020 19:30 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6918
Благодарил (а): 17 раз.
Поблагодарили: 112 раз.
История создания действительно интересно. И слово в самом деле создает легкий вкус недоработанности языка. Мур все же не то чтобы суперпрофессионал в компиляторостроении. Да та же форматная печать или "точка - разделитель чисел двойной длины" показывают, что в Форте в исходном виде многовато заплаток, сделанных по причине острой необходимости иметь в этом месте хоть что-то.

Хотя, если разобраться, именно LITERAL, поскольку пишется один раз, не создает особых проблем.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: История LITARAL
СообщениеДобавлено: Вт май 19, 2020 13:13 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 973
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
Hishnik писал(а):
Хотя, если разобраться, именно LITERAL, поскольку пишется один раз, не создает особых проблем.


Эм? Можете развернуть эту часть высказывания? А то что-то я не понял

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: История LITARAL
СообщениеДобавлено: Вт май 19, 2020 14:21 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6918
Благодарил (а): 17 раз.
Поблагодарили: 112 раз.
Victor__v писал(а):
Эм? Можете развернуть эту часть высказывания? А то что-то я не понял

Если мы постоянно пишем конструкции типа <condition> IF <operators> THEN, то нам, конечно, не все равно, как именно это пишется. А внутренности LITERAL переписываются или никогда, или 1-2 раза: 1) написать 2) обновить/отредактировать (и то далеко не обязательно). Похожая ситуация с печатью - конечно, красиво выглядит строка <# # # # # #>, но вопрос-то в том, что такая красота радует глаз разработчику Форта 1-2 раза, а потом это все теряется в недрах транслятора, потому что печать идет в подавляющем большинстве через точку. Поэтому я и хочу обратить внимание на то, что глубоко спрятанные служебные слова вовсе не обязаны проявлять те качества, которые программист ждет от тех слов Форта, которыми пользуется постоянно.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: История LITARAL
СообщениеДобавлено: Вт май 19, 2020 15:02 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5003
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 20 раз.
Поблагодарили: 58 раз.
Victor__v писал(а):
Есть замечательное слово LIT, которое не учитывает режим исполнения и не имеет флага IMMEDIATE

вообще, LITERAL писался явно для косвенного ШК, где он достаточно понятен, а ваш LIT, для подпрограммного ШК

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: История LITARAL
СообщениеДобавлено: Пт май 29, 2020 19:04 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 590
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 23 раз.
Victor__v писал(а):
Например, чтобы скомпилировать число в режиме интерпретации надо менять значение STATE.
В режиме интерпретации слово LITERAL вообще ничего не делает, потому и переключать ничего не надо. Да и то его ничего не делающая семантика режима интерпретации сделана для общности. Потому-что на практике слово LITERAL всегда исполняется в режиме компиляции.
Victor__v писал(а):
Как вообще додумались до этого слова?
Оно же для форта черезчур умное.
Да оно естественное. Как в Форте использовать вычисляемые константы, чтобы их вычисление не компилировалось ? Т.е. чтобы константа которую можно вычислить сейчас вычислялась сейчас, а не каждый раз потом ?
И еще как переключать внутри определения слова текущую систему счисления ? Ну константы должны быть говорящие, поэтому иногда их для того чтобы они сами о себе говорили приходится в десятичном виде писать, а иногда в шестнадцатеричном, и все это в одном определении.

LITERAL нужно просто для оформления вычисляемой или не в текущей системе счисления константы в режиме интерпретации, чтобы потом результат применить к режиму компиляции. Оно естественным образом из такой потребности возникает.
Hishnik писал(а):
И слово в самом деле создает легкий вкус недоработанности языка.
Это слово минимальным образом дает требуемую возможность. Любой другой подход даст то-же не минимальным образом, когда придется усложнять ядро больше чем
: LITERAL STATE @ IF COMPILE LIT , THEN ; IMMEDIATE
. Так-что как раз проработанности языка. Потому-что проработанность проявляет себя в лаконизме.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB