Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 18:08

...
Google Search
Forth-FAQ Spy Grafic

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




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

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

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

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

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


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

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
А, что 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
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
KPG писал(а):
...

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

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


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

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

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

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

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


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

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

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

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


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

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


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

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

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


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

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


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

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


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
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
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Victor__v писал(а):
Есть замечательное слово LIT, которое не учитывает режим исполнения и не имеет флага IMMEDIATE

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

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


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

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

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



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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Это слово черезчур умное.
Из-за чего оно работает в очень редких случаях.
Смысл?

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


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

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

оно достаточно полезное, более того, я ввел в дополнение к LITERAL еще и
: REGULAR ( xt --> ) state IF COMPILE, ;THEN EXECUTE ;
которое удобно использовать, например так:
: TO ( n / name --> ) ' TOKEN + REGULAR ; IMMEDIATE

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


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
mOleg писал(а):
: TO ( n / name --> ) ' TOKEN + REGULAR ; IMMEDIATE

Это же тоже из серии "пишем один раз за время жизни этого транслятора".


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Hishnik писал(а):
Это же тоже из серии "пишем один раз за время жизни этого транслятора".

Безусловно можно все делать на "подпорках", можно включать в код "магические числа", но код становится менее читабелен.
Мне хотелось, чтобы внутри система была непротиворечива и понятна, чтобы она содержала минимум трюков и магических вещей.
поэтому магический POSTPONE я исключил (из ядра по крайней мере), а понятный и имеющий собственный смысл REGULAR включил в код.

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


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
mOleg писал(а):
Безусловно можно все делать на "подпорках", можно включать в код "магические числа", но код становится менее читабелен.

Реализация на исходном языке (ассемблер, Си...) явно не относится к реализации "на подпорках". Одна строка на Форте, которая в таком составе пишется один раз, имеет хорошие перспективы попасть в ядро - кода меньше, накладные расходы на стековые операции уберутся компилятором. Если с какого-то момента слова можно описывать на Форте, это не означает, что только на Форте их и нужно описывать.


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

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


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

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


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

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