Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пн окт 14, 2019 22:00

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 158 ]  На страницу 1, 2, 3, 4, 5 ... 11  След.
Автор Сообщение
 Заголовок сообщения: Новый стандарт или чего бы хотелось
СообщениеДобавлено: Вс июл 09, 2006 03:11 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4997
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 19 раз.
Поблагодарили: 58 раз.
Сразу несколько вопросов.
Первое, вроде уже давно была начата работа по созданию нового (нашего) стандарта. Но в этом направлении я знаю только одну завершенную работу - парсер Андрея Черезова, который сейчас используется в СПФ. И все ?(

Второе, что народу хотелось бы от нового стандарта вообще?
Лично мне кажется, что новый стандарт должен описывать гораздо меньше слов и по другому принципу их классифицировать. Чуточку больше уделить места словарям и методики работы с ними. Отделить интерпретатор от форт-ВМ. А так же выкинуть вредные слова типа ?DUP POSTPONE TUCK ROLL и прочих.

Может дать кто-нибудь ссылки на последние результаты работы в этом направлении. Все, что я смог найти - старовато 8(


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июл 09, 2006 12:51 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6800
Благодарил (а): 16 раз.
Поблагодарили: 110 раз.
У меня сразу такой вопрос: а где находится основная часть фортеров, которым это было бы интересно? И не проще ли окажется собрать их здесь?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июл 09, 2006 12:59 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Что хотелось бы от нового стандарта:
    1 Возможность делать обычные ехе-шники с оптимизированным кодом, не пользоваться же конечному юзеру интерпретатором ...
    2 Для этого - оптимизация работы со стеком (реально - что полезного делает dup ? :dmad; )
    3 Стандартизация связи с другими языками (в частности, неограниченный встроенный ассемблер)
Ещё куча когда изучу как слодует.

[/list]


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июл 09, 2006 13:21 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
вопрос писал(а):
1 Возможность делать обычные ехе-шники с оптимизированным кодом, не пользоваться же конечному юзеру интерпретатором ...


Вообще говоря, привязывать стандарт языка к ОСи компьютера как-то неправильно. А exe-шники - это чисто осевые заморочки. Forth должен уметь их делать, но для каждой оси - свои. Стандартизировать сие дело (когда не известно, каков будет формат того же exe-шника через 5-10 лет) мне кажется несколько странно.

вопрос писал(а):
2 Для этого - оптимизация работы со стеком (реально - что полезного делает dup ? :dmad; )


DUP - это операция копирования
(по аналогии с ОСью - что полезного делает команда copy? :)) )

вопрос писал(а):
3 Стандартизация связи с другими языками (в частности, неограниченный встроенный ассемблер)


A это, опять же, вопрос реализации, а не стандарта (imho).

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июл 09, 2006 15:02 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Цитата:
A это, опять же, вопрос реализации, а не стандарта (imho).

В том смысле, в котором это есть в СИ, переносимость , исполняемые файлы для к-ой ОСи (elf, coff, a.out) не помню сейчас, что касается пользы команды DUP, так если мне нужно дважды работать с одной переменной, в ассемблере (или СИ) она лежит себе тихонько в регистре (register a), затем суммирую её с другими регистрами, вычитаю, перемещаю, делаю индексом, а она себе всё лежит, никуда я её не копирую ...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июл 09, 2006 15:15 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
вопрос писал(а):
В том смысле, в котором это есть в СИ, переносимость , исполняемые файлы для к-ой ОСи (elf, coff, a.out) не помню сейчас, что касается пользы команды DUP, так если мне нужно дважды работать с одной переменной, в ассемблере (или СИ) она лежит себе тихонько в регистре (register a), затем суммирую её с другими регистрами, вычитаю, перемещаю, делаю индексом, а она себе всё лежит, никуда я её не копирую ...


A мне вдруг понадобился register a для вызова некой функции, а там переменная лежит и мешает -- без копирования не обойтись, потому что после отработки вызванной функции мне эта переменная снова понадобится!

В Форте - стек - по сути есть "магазин регистров", которые используются по правилу "первым тот, что сверху", поэтому и нужны операции типа dup, drop и т.д. Чтобы "место освободить" для "рабочего регистра". А делать адресацию с командами, типа "сложить 7-й и 5-й элементы стека" -- это уже не Форт получится, а что-то монстрообразное...

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июл 09, 2006 15:32 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6800
Благодарил (а): 16 раз.
Поблагодарили: 110 раз.
вопрос писал(а):
что касается пользы команды DUP, так если мне нужно дважды работать с одной переменной, в ассемблере (или СИ) она лежит себе тихонько в регистре (register a), затем суммирую её с другими регистрами, вычитаю, перемещаю, делаю индексом, а она себе всё лежит, никуда я её не копирую ...

Это вопросы оптимизации, они слабо связаны с грамматикой самого языка. Программисту может быть удобно поставить dup (или наоборот, с точки зрения разбора исходного текста может быть удобно специфицировать такое слово). После получения списка операций лишний dup вполне может быть сокращен.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июл 09, 2006 21:23 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4997
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 19 раз.
Поблагодарили: 58 раз.
Хищник писал(а):
У меня сразу такой вопрос: а где находится основная часть фортеров, которым это было бы интересно? И не проще ли окажется собрать их здесь?


Аппетит приходит во время еды :)
Начинать можно где угодно - главное, чтобы все было последовательно и логично.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июл 09, 2006 21:30 
Не в сети
Moderator
Moderator
Аватара пользователя

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

1 Возможность делать обычные ехе-шники с оптимизированным кодом, не пользоваться же конечному юзеру интерпретатором ...
2 Для этого - оптимизация работы со стеком (реально - что полезного делает dup ? )
3 Стандартизация связи с другими языками (в частности, неограниченный встроенный ассемблер)


Ещё куча когда изучу как слодует.


Вот какраз этого всего делать и на надо :)
Насчет ?DUP - так это слово какраз делает вредную вещь, а не полезную. По крайней мере в плане быстродействия программы, а так же стабильности ее работы. В любом случае этим словом стоит пользоваться осторожно.

Насчет ассемблера -это точно совсем лишнее. Так как асм-это посторонний язык, который принято использовать в рамках различных форт-систем. Но не более того.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 10, 2006 01:47 
Не в сети
Аватара пользователя

Зарегистрирован: Пт май 12, 2006 00:52
Сообщения: 88
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Цитата:
Насчет ?DUP - так это слово какраз делает вредную вещь, а не полезную. По крайней мере в плане быстродействия программы


Удивительно, но ?DUP вводится именно для ускорения работы.

...

А потом удивляемся, что нормальные фортеры на этом форуме не собираются :)

_________________
... чтобы понять рекурсию, нужно сперва понять рекурсию ...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 10, 2006 08:36 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Balancer писал(а):
Цитата:
Насчет ?DUP - так это слово какраз делает вредную вещь, а не полезную. По крайней мере в плане быстродействия программы


Удивительно, но ?DUP вводится именно для ускорения работы.
...
А потом удивляемся, что нормальные фортеры на этом форуме не собираются :)


Вообще необходимость употреблять копирование так часто - замедление работы (сколько раз копируется переменная, если нужно сравнить её с несколькими другими?).

... чтобы скопировать переменную, нужно сначала скопировать переменную ... :D :dmad;


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 10, 2006 08:54 
Balancer писал(а):
Цитата:
Насчет ?DUP - так это слово какраз делает вредную вещь, а не полезную. По крайней мере в плане быстродействия программы


Удивительно, но ?DUP вводится именно для ускорения работы.
...
А потом удивляемся, что нормальные фортеры на этом форуме не собираются :)


DUP, DROP, SWAP, OVER т.е. слова работающие со стеком зачастую выглядят
как зло в форт программе, но чем более эффективным заменить не известно!!!


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 10, 2006 11:23 
Не в сети

Зарегистрирован: Чт май 04, 2006 18:18
Сообщения: 456
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Что-то я ничего не понимаю... Чем вам не нравится ?DUP и тем более DUP ?!
Про DUP и говорить нечего - без него никуда. Или вы предлагаете хранить _всё_ в именованных переменных? Нтак это можно сделать и сейчас - locals и globals есть...
?DUP выкинуть то можно, а смысл? Это же элемент факторизации.
Код:
: a1 ?DUP IF bla-bla THEN ;
: a2 DUP IF bla-bla ELSE DROP THEN ;

Если его не будет - я его определю и буду использовать.

_________________
http://forth.org.ru/~ygrek


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

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
oleg писал(а):
Лично мне кажется, что новый стандарт должен описывать гораздо меньше слов и по другому принципу их классифицировать. Чуточку больше уделить места словарям и методики работы с ними. Отделить интерпретатор от форт-ВМ. А так же выкинуть вредные слова типа ?DUP POSTPONE TUCK ROLL и прочих.


Одной из базовых идей форт-технологии является то, что потенциал
форт-продукта перекрывает замысел автора.
Генеральной задачей форт-стандарта является обеспечить максимальную
платформонезависимость при неограниченных возможностях для
пользователя (в том числе, возможность создания удобных для себя
синтаксиса и семантики).
Любую манипуляцию со стеком можно выразить через ROLL PICK DROP
Об эффективности следует думать в последнюю очередь,
но я бы заменил ROLL на слово меняющее второй элемент
стека и элемент на глубине заданным первым элементом (язык сломаешь).

POSTPONE , по отношению к старым [COMPILE] COMPILE ,
позволяет незадумываться о наличие признака IMMEDIATE
у слов следующих за ними.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 10, 2006 13:59 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6800
Благодарил (а): 16 раз.
Поблагодарили: 110 раз.
Mihail писал(а):
Любую манипуляцию со стеком можно выразить через ROLL PICK DROP

Ой, не надо ROLL. Да и PICK не очень-то надо, но ROLL не надо совсем. Конечно, если мы имеем глубокий-глубокий оптимизатор, тогда да. Но активные перетряхивания стека очень плохо отражаются на производительности любого железа. Причем когда мы работаем с верхними ячейками, это еще ничего, наоборот, асимметричная архитектура сильно облегчает трассировку. Но требование наличия прямого доступа ко всему стеку для PICK, а тем более блочные перестановки на нем для ROLL - очень и очень плохо.


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

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


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

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


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

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