Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт мар 29, 2024 03:43

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 195 ]  На страницу Пред.  1 ... 9, 10, 11, 12, 13
Автор Сообщение
 Заголовок сообщения: Re: WIN-FORTH ДЛЯ МИНИМАЛИСТОВ (ПРОЕКТ FOBOS)
СообщениеДобавлено: Ср фев 08, 2012 08:38 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
Хищник писал(а):
А как тогда назвать переменные Паскаля типа procedure и function? Вектора и есть.

Вам виднее. Паскаль не знаю. Я в поисковике на запрос "вектора в Паскале" получил, что-то типа "умножение вектора на матрицу и тп". Просто там на понятии вектор внимание не акцентируют как в Форте.
gudleifr писал(а):
Почему же? Тот же DOER или M: , с натягом - DOES> .

Ну, тут опять вопрос терминологии. M:, например, такое же слово(процедура) Форта.
И само определение через M: тоже слово.
gudleifr писал(а):
Это критично для программиста.

Чем критично? Тем, что нужно помнить, что когда-то надо разрешить неразрешенные имена?
Ну если программист это не сделает или сделает в неподходящее время, то Форт-система ему об этом напомнит сообщением спеллчеккера "word not found" и все.
gudleifr писал(а):
Ограничения на использование слов похожих на завершение макроса.

Это проблема аналогичная, например, такому - нельзя задать строку с символом кавычки внутри.
На самом деле проблемы нет - есть ограничение, которое надо учитывать. Ну таких ограничений много.
Главное это приоритет задачи. Задача должна быть решена в рамках имеющихся ограничений на использование
инструментария. Если нужно, то окончание макроса можно оформить по другому. Немешающих в конкретных случаях вариантов много.

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: WIN-FORTH ДЛЯ МИНИМАЛИСТОВ (ПРОЕКТ FOBOS)
СообщениеДобавлено: Ср фев 08, 2012 20:00 
Не в сети
Moderator
Moderator
Аватара пользователя

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

указатели на процедуру или функцию

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: WIN-FORTH ДЛЯ МИНИМАЛИСТОВ (ПРОЕКТ FOBOS)
СообщениеДобавлено: Ср фев 08, 2012 20:09 
mOleg писал(а):
chess писал(а):
"вектора в Паскале"
указатели на процедуру или функцию
Господа, зачем такие сложности? Векторные слова в "обычных" языках, это просто переменные, имеющие два варианта компиляции, в зависимости от контекста - адрес и значение.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: WIN-FORTH ДЛЯ МИНИМАЛИСТОВ (ПРОЕКТ FOBOS)
СообщениеДобавлено: Чт фев 09, 2012 09:35 
Не в сети

Зарегистрирован: Ср июл 05, 2006 14:44
Сообщения: 236
Благодарил (а): 0 раз.
Поблагодарили: 7 раз.
Есть еще такая техникаScattered colons, в СПФ есть реализация.

Вот здесь есть другая (dforth) реализация

тогда мы можем вначале определить

: ДЕЙСТВИЕ-1 ОБЩЕЕ-1 ... ОБЩЕЕ-2 ;
: ДЕЙСТВИЕ-2 ОБЩЕЕ-1 ... ОБЩЕЕ-2 ;

а затем по мере необходимости доопределить

..: ДЕЙСТВИЕ-1 ЧАСТНОЕ-1 ;..
..: ДЕЙСТВИЕ-2 ЧАСТНОЕ-2 ;..

но к сожалению в СПФ так не срабатывает, слово ... должно быть первым:

: ДЕЙСТВИЕ-1 ... ОБЩЕЕ-2 ;
..: ДЕЙСТВИЕ-1 ЧАСТНОЕ-1 ;..
..: ДЕЙСТВИЕ-1 ОБЩЕЕ-1 ;..


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: WIN-FORTH ДЛЯ МИНИМАЛИСТОВ (ПРОЕКТ FOBOS)
СообщениеДобавлено: Чт фев 09, 2012 11:02 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
gudleifr писал(а):
На самом деле в PC-версии Pascal есть честные завершения, позволяющие определять функции, вызываемые не в контексте определения, а в контексте исполнения.

Честные closures? :roll: В борланде нельзя вернуть функцию из функции.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: WIN-FORTH ДЛЯ МИНИМАЛИСТОВ (ПРОЕКТ FOBOS)
СообщениеДобавлено: Чт фев 09, 2012 13:33 
Alex писал(а):
Scattered colons
Спасибо.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: WIN-FORTH ДЛЯ МИНИМАЛИСТОВ (ПРОЕКТ FOBOS)
СообщениеДобавлено: Чт фев 09, 2012 13:38 
dynamic-wind писал(а):
В борланде нельзя вернуть функцию из функции.
Джефф Элджер:
Код:
В таких языках, как Паскаль, эта проблема изящно решается получением замыкания (closure) на момент получения адреса функции.
procedure p(n: integer);
  var
  procedure fn;
begin
  do_something(n);
end;
begin
  callback(@fn);
end;
В качестве аргумента процедура саllbackfn получает адрес другой процедуры. В данном примере ей передается адрес fn. При вызове fn из callbackfn первая имеет доступ к переменным, находившимся в стеке в момент получения адреса. В нашем примере fn знает значение переменной n на момент вызова саllbackfn.
Замыкания чрезвычайно полезны для обработки обратных вызовов (callback), поскольку функция обратного вызова кое-что знает о том, почему она была вызвана.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: WIN-FORTH ДЛЯ МИНИМАЛИСТОВ (ПРОЕКТ FOBOS)
СообщениеДобавлено: Чт фев 09, 2012 14:11 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
Это невозможно в борланде (вложенная функция доступна только для вызова по имени в контексте определения).
Википедия приводит пример для Дельфей-2009, но это уже не паскаль.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: WIN-FORTH ДЛЯ МИНИМАЛИСТОВ (ПРОЕКТ FOBOS)
СообщениеДобавлено: Чт фев 09, 2012 14:26 
dynamic-wind писал(а):
но это уже не паскаль.
Книга Элджера - конца 90-х, о какой версии он говорит, понятия не имею.
Мой последний опыт программирования на Pascal (Turbo) тех же времен. Помню только, что для отрисовки графики много мучился с переводом логических адресов в физические. Пытался ли работать с адресами ф-ий - не помню.
В принципе, даже Turbo это уже не Pascal - ф-ии определяются не в контексте, а в C-стиле - на глобальном уровне.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: WIN-FORTH ДЛЯ МИНИМАЛИСТОВ (ПРОЕКТ FOBOS)
СообщениеДобавлено: Пн июн 08, 2015 23:45 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
gudleifr писал(а):
Понятно, пришлось отказаться от статической подгрузки ресурсов и библиотек, поэтому некоторые варианты примеров опущены.
Вот вот. Я неделю обдумывал и дня четыре бился, чтобы реализовать более-менее красивое решение по статической компоновке в любой момент ресурсов к саморасширяемому фортовскому EXE. Наконец-то заработало !

Идея была такая. Секции PE-EXE файла оказывается могут перекрываться в EXE образе. Это в памяти они развертываются последовательно с выравниванием на Section Align. А в образе EXE они могут наслаиваться друг на друга.

Идея :
- Forth.exe от рождения имеет секцию .rsrc , которая указывает на свое смещение в EXE, совпадающее со смещением в EXE секции .text и имеет физ.длину 0 и вирт.длину Section Align. Такая секция никому не мешает. Ее как-бы и нет.
- Секция кода .text (т.е кодофайл) имеет физический размер тот, какой имеет, с выравниванием на File Align, а виртуальный в 1 мегабайт. Этот мегабайт зарезервирован под расширение Форта в процессе определения новых слов. Сразу после этого мегабайта в памяти автоматически располагается вторая секция .rsrc
- Форт сам прикомпоновывает к себе ресурсы из скомпилированных файлов .res . Делает он это так. Выравнивает HERE на File Align. Делает так, чтобы при следующем исполнении SAVE-SYSTEM был создан такой новый EXE, что начало секции .rsrc в EXE-файле указывало именно сюда. Подчитывает файл ресурсов начиная с HERE и перелопачивает его. За ALLOT-чивает русурс и он оказывается скомпилированным в кодофайл. Делает так, чтобы при следующем исполнении SAVE-SYSTEM был создан такой новый EXE, что длина секции .rsrc равнялась размеру за ALLOT-ченного ресурса.
Ну и HERE FENCE ! , чтобы ресурс нельзя было заFORGET-ить (или наоборот усложнить FORGET, чтобы можно было безболезненно FORGET-ить).

В итоге после SAVE-SYSTEM будет создан новый EXE с ресурсом. Причем ресурс при запуске такого EXE будет размещен в памяти аж дважды - как часть секции .text (т.е внутри кодофайла) и как содержимое отдельной секции ресурсов .rsrc

Короче говоря, в первом приближении такая вот феерическая шняга заработала.


Последний раз редактировалось Ethereal Пн июн 08, 2015 23:58, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: WIN-FORTH ДЛЯ МИНИМАЛИСТОВ (ПРОЕКТ FOBOS)
СообщениеДобавлено: Пн июн 08, 2015 23:52 
Ethereal писал(а):
Форт сам прикомпоновывает к себе ресурсы
Все гораздо проще: WIN-API имеет стандартные ф-ии для работы с ресурсами из памяти (с суффиксом Indirect). И если уж делать под каждый набор ресурсов новый exe, то почему не сделать это стандартно, средствами Винды?


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: WIN-FORTH ДЛЯ МИНИМАЛИСТОВ (ПРОЕКТ FOBOS)
СообщениеДобавлено: Вт июн 09, 2015 00:01 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
Идея также и в том, чтобы писать программы на Форте в точности также, как пишутся программы с ресурсами статически компонуемыми при сборке EXE.

Ну хотя бы чтоб примеры из Рихтера повторить один в один :)
Кроме завершающей строчки с
" Foo.res" RESOURCE, SAVE-SYSTEM


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: WIN-FORTH ДЛЯ МИНИМАЛИСТОВ (ПРОЕКТ FOBOS)
СообщениеДобавлено: Вт июн 09, 2015 00:16 
Ethereal писал(а):
Идея также и в том, чтобы писать программы на Форте в точности также, как пишутся программы с ресурсами статически компонуемыми при сборке EXE.
Как раз это меня и не устраивало. А "в точности" можно было бы создать ресурс в Win-редакторе и честно дописать в конец exe.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: WIN-FORTH ДЛЯ МИНИМАЛИСТОВ (ПРОЕКТ FOBOS)
СообщениеДобавлено: Вт июн 09, 2015 00:57 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
Тогда пропадет возможность подгружать ресурсы и работать с ними в интерактивном режиме без создания нового EXE, например, если текст программы просто запущен на интерпретацию. Я хотел обеспечить и ту возможность и ту одновременно. Чтобы имея полную возможность повторять Рихтера Форт оставался Фортом.
Хотя не факт, что все получится. Тут есть одна грабля. Но я кажется знаю как ее обойти. RESOURCE, потребуется еще один входной параметр TRUE/FALSE в зависимости от того ресурсы будут нужны сейчас или уже в новом EXE. Короче, идет обкатка идеи.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: WIN-FORTH ДЛЯ МИНИМАЛИСТОВ (ПРОЕКТ FOBOS)
СообщениеДобавлено: Вт июн 09, 2015 01:28 
gudleifr писал(а):
Понятно, пришлось отказаться от статической подгрузки ресурсов и библиотек, поэтому некоторые варианты примеров опущены.
Долго пытался вспомнить, что подразумевал, но, скорее всего, ресурсы тут ни при чем. Пропал пример про присобачивание dll посредством lib - 17.1.
Нет, соврал, пропал еще 8.1 - про включение меню в класс окна.


Вернуться к началу
  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 195 ]  На страницу Пред.  1 ... 9, 10, 11, 12, 13

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


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

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


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

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