Автор |
Сообщение |
|
|
Заголовок сообщения: |
Re: Есть ли в SP-Forth |
|
|
посмотрите в либы, использующие TEMP-WORDLIST , например в LOCALS.F где-то был пример и того, как можно его удалить, только есть одно на, на слова во временном словаре не должно быть ссылок из слов, определенных в статических словарях.
посмотрите в либы, использующие TEMP-WORDLIST , например в LOCALS.F где-то был пример и того, как можно его удалить, только есть одно на, на слова во временном словаре не должно быть ссылок из слов, определенных в статических словарях.
|
|
|
|
Добавлено: Пт авг 06, 2010 16:18 |
|
|
|
|
|
Заголовок сообщения: |
Re: Есть ли в SP-Forth |
|
|
Как тогда создать динамический словарь?
Как тогда создать динамический словарь?
|
|
|
|
Добавлено: Пт авг 06, 2010 16:13 |
|
|
|
|
|
Заголовок сообщения: |
Re: Есть ли в SP-Forth |
|
|
пардон, забыл, что тема про СПФ тогда утчню вопрос, откуда словарь удалить (из памяти системы или из контекста?) если из памяти, то статические нельзя удалять, только динамические.
пардон, забыл, что тема про СПФ 8)
тогда утчню вопрос, откуда словарь удалить (из памяти системы или из контекста?) если из памяти, то статические нельзя удалять, только динамические.
|
|
|
|
Добавлено: Пт авг 06, 2010 16:10 |
|
|
|
|
|
Заголовок сообщения: |
Re: Есть ли в SP-Forth |
|
|
Antender писал(а): А как удалить словарь? какой словарь, откуда?
[quote="Antender"]А как удалить словарь?[/quote] какой словарь, откуда?
|
|
|
|
Добавлено: Пт авг 06, 2010 15:34 |
|
|
|
|
|
Заголовок сообщения: |
Re: Есть ли в SP-Forth |
|
|
А как удалить словарь?
А как удалить словарь?
|
|
|
|
Добавлено: Пт авг 06, 2010 15:30 |
|
|
|
|
|
Заголовок сообщения: |
Re: Есть ли в SP-Forth |
|
|
Тема про многомерные массивы выделена сюда: viewtopic.php?f=18&t=2627&start=0
Тема про многомерные массивы выделена сюда: http://fforum.winglion.ru/viewtopic.php?f=18&t=2627&start=0
|
|
|
|
Добавлено: Сб июл 31, 2010 10:50 |
|
|
|
|
|
Заголовок сообщения: |
Re: Есть ли в SP-Forth |
|
|
Antender писал(а): Пользователь не знает, что использует форт-систему, думает что использует программу работающаю в диалоговом режиме с вводом команд. Ну вы сами и ответили - должна работатать не форт-система, а программа, разработанная с помощью форт-системы, с учетом требований к программе. Форт-система предназначена для другого - для разработки программ.
[quote="Antender"]Пользователь не знает, что использует форт-систему, думает что использует программу работающаю в диалоговом режиме с вводом команд.[/quote] Ну вы сами и ответили - должна работатать не форт-система, а программа, разработанная с помощью форт-системы, с учетом требований к программе. Форт-система предназначена для другого - для разработки программ.
|
|
|
|
Добавлено: Сб июн 19, 2010 21:21 |
|
|
|
|
|
Заголовок сообщения: |
Re: Есть ли в SP-Forth |
|
|
Antender писал(а): Допустим, форт-система расширяется на несколько взаимодействующих через стек слов вместе являющихся программой. Пользователь не знает, что использует форт-систему, думает что использует программу работающаю в диалоговом режиме с вводом команд. Программа не должна сбрасывать результат работы одной своих частей находящийся в стеке, а должна выдавать что-то вроде "Команда не найдена", либо вообще не делать ничего. дело в том, что данные на стеке после возникновения ошибки невалидны обычно. Т.е. выигрыша от несброса параметров нет, а проигрыш очень даже может быть, более того, невосстановление стека может привести к краху системы. Если хочется получить систему с похожим поведением, надо предусмотреть сохранение стека перед выполнением каждой команды с последующим восстановлением содержимого, каким оно было перед выполнением команды. Собственно, подобный механизм в Форте есть: CATCH THROW ; только он не сохраняет данные со стека, а значит если в результате ошибки данные под вершиной стека будут искажены. Вобщем, сделать это можно, достаточно написать свой цикл QUIT или ABORT (зависит от того, как это сделано в конкретной системе) и в нем работать.
[quote="Antender"]Допустим, форт-система расширяется на несколько взаимодействующих через стек слов вместе являющихся программой. Пользователь не знает, что использует форт-систему, думает что использует программу работающаю в диалоговом режиме с вводом команд. Программа не должна сбрасывать результат работы одной своих частей находящийся в стеке, а должна выдавать что-то вроде "Команда не найдена", либо вообще не делать ничего.[/quote] дело в том, что данные на стеке после возникновения ошибки невалидны обычно. Т.е. выигрыша от несброса параметров нет, а проигрыш очень даже может быть, более того, невосстановление стека может привести к краху системы. Если хочется получить систему с похожим поведением, надо предусмотреть сохранение стека перед выполнением каждой команды с последующим восстановлением содержимого, каким оно было перед выполнением команды. Собственно, подобный механизм в Форте есть: CATCH THROW ; только он не сохраняет данные со стека, а значит если в результате ошибки данные под вершиной стека будут искажены. Вобщем, сделать это можно, достаточно написать свой цикл QUIT или ABORT (зависит от того, как это сделано в конкретной системе) и в нем работать.
|
|
|
|
Добавлено: Сб июн 19, 2010 20:38 |
|
|
|
|
|
Заголовок сообщения: |
Re: Есть ли в SP-Forth |
|
|
Antender писал(а): Программа не должна сбрасывать результат работы одной своих частей находящийся в стеке, а должна выдавать что-то вроде "Команда не найдена", либо вообще не делать ничего. Защиту от дурака надо делать в таком случае. Писать свою реализацию ввода и исполнения команд (нечто похожее на слово INTERPRET), его и подставлять пользователю, а не давать возможность делать все что угодно, а то так какой-нибудь хакер вам и винт отформатирует с помощью программы на форте.
[quote="Antender"]Программа не должна сбрасывать результат работы одной своих частей находящийся в стеке, а должна выдавать что-то вроде "Команда не найдена", либо вообще не делать ничего.[/quote]
[b]Защиту от дурака[/b] надо делать в таком случае. Писать свою реализацию ввода и исполнения команд (нечто похожее на слово [b]INTERPRET[/b]), его и подставлять пользователю, а не давать возможность делать все что угодно, а то так какой-нибудь хакер вам и винт отформатирует с помощью программы на форте.
|
|
|
|
Добавлено: Сб июн 19, 2010 18:49 |
|
|
|
|
|
Заголовок сообщения: |
Re: Есть ли в SP-Forth |
|
|
Допустим, форт-система расширяется на несколько взаимодействующих через стек слов вместе являющихся программой. Пользователь не знает, что использует форт-систему, думает что использует программу работающаю в диалоговом режиме с вводом команд. Программа не должна сбрасывать результат работы одной своих частей находящийся в стеке, а должна выдавать что-то вроде "Команда не найдена", либо вообще не делать ничего.
Допустим, форт-система расширяется на несколько взаимодействующих через стек слов вместе являющихся программой. Пользователь не знает, что использует форт-систему, думает что использует программу работающаю в диалоговом режиме с вводом команд. Программа не должна сбрасывать результат работы одной своих частей находящийся в стеке, а должна выдавать что-то вроде "Команда не найдена", либо вообще не делать ничего.
|
|
|
|
Добавлено: Сб июн 19, 2010 17:14 |
|
|
|
|
|
Заголовок сообщения: |
Re: Есть ли в SP-Forth |
|
|
Antender писал(а): Возможность отключить сброс стека при вводе неправильного слова? А смысл?
[quote="Antender"]Возможность отключить сброс стека при вводе неправильного слова?[/quote] А смысл?
|
|
|
|
Добавлено: Ср июн 16, 2010 14:22 |
|
|
|
|
|
Заголовок сообщения: |
Re: Есть ли в SP-Forth |
|
|
Ответ скорее всего будет нет, так как в большинстве ФОРТ-систем стандартная процедура проверки правильности ввода содержит вызов слова ABORT
Ответ скорее всего будет нет, так как в большинстве ФОРТ-систем стандартная процедура проверки правильности ввода содержит вызов слова ABORT
|
|
|
|
Добавлено: Ср июн 16, 2010 11:02 |
|
|
|
|
|
Заголовок сообщения: |
Re: Есть ли в SP-Forth |
|
|
Возможность отключить сброс стека при вводе неправильного слова?
Возможность отключить сброс стека при вводе неправильного слова?
|
|
|
|
Добавлено: Вт июн 15, 2010 19:36 |
|
|
|
|
|
Заголовок сообщения: |
Re: Есть ли в SP-Forth |
|
|
квадратный корень для чисел с плавающей точкой - FSQRT Для целых - надо писать самому вычисление. Что-то наподобие: : SQRT ( А -- Sqrt{A} ) 1 32 0 DO 2DUP / + 2 / LOOP ; Что соответствует стандартному алгоритму Ньютона
Sn = (Sn-1+ A/Sn-1)/2
Где A - число, из которого корень берется, Sn - n-тое приближение. Формально считать надо до тех пор, пока |Sn - Sn-1| не станет меньше требуемой точности вычисления корня. Для целых чисел эта точность ~1, и число итераций примерно равно количеству значащих разрядов в числе A.
квадратный корень для чисел с плавающей точкой - [b]FSQRT[/b] Для целых - надо писать самому вычисление. Что-то наподобие: [b]: SQRT ( А -- Sqrt{A} ) 1 32 0 DO 2DUP / + 2 / LOOP ;[/b] Что соответствует стандартному алгоритму Ньютона
S[sub]n[/sub] = (S[sub]n-1[/sub]+ A/S[sub]n-1[/sub])/2
Где A - число, из которого корень берется, S[sub]n[/sub] - n-тое приближение. Формально считать надо до тех пор, пока |S[sub]n[/sub] - S[sub]n-1[/sub]| не станет меньше требуемой точности вычисления корня. Для целых чисел эта точность ~1, и число итераций примерно равно количеству значащих разрядов в числе A.
|
|
|
|
Добавлено: Вт май 18, 2010 22:14 |
|
|
|
|
|
Заголовок сообщения: |
Есть ли в SP-Forth |
|
|
Есть ли в SP-Forth функция для вычисления квадратного корня?
Есть ли в SP-Forth функция для вычисления квадратного корня?
|
|
|
|
Добавлено: Вт май 18, 2010 21:10 |
|
|
|
|