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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 223 ]  На страницу Пред.  1 ... 11, 12, 13, 14, 15  След.
Автор Сообщение
 Заголовок сообщения: Re: ef \ esoteric forth \
СообщениеДобавлено: Пн авг 29, 2022 11:43 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 463
Откуда: Москва
Благодарил (а): 57 раз.
Поблагодарили: 22 раз.
:) Обещанное:
http://totalvacuum.ru/EF/efw32.zip
http://totalvacuum.ru/EF/efw64.zip

Насчет "десятка" подключаемых include'ов я, конечно, погорячился: там всего штук 5 :)
И еще раз спасибо за оптимизацию, по самым скромным прикидкам в районе 10 байт экономия: уже растиражировано на другие близкородственные проекты :)
Забавно, что трюк `call хвост` `хвост:` я и сам частенько использую (взять хотя бы 2drop, который в ядре), но здесь уже глаз замылился :) Вот что значит свежий и непредвзятый взгляд со стороны :)

Кстати, пропасть между esoteric forth и обычным Фортом не такая уж гигантская, как может показаться на первый взгляд. Небольшой пример:
http://totalvacuum.ru/EF/efforth.zip
Делаем косметические правки в core и stdio от esoteric forth, добавляем с десяток слов, обслуживающих словарь, а также наполняем сам словарь - на выходе получаем простенький Форт, который весит меньше 2K, но умеет в т.ч. immediate create does>, а также бродилку в текстовом режиме рисовать :) Форта на esoteric forth еще не было, кстати :)

upd. Перекомпилировал и обновил ссылки


Последний раз редактировалось Total Vacuum Вт сен 27, 2022 15:51, всего редактировалось 1 раз.


За это сообщение автора Total Vacuum поблагодарил: tsdima
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ef \ esoteric forth \
СообщениеДобавлено: Пн авг 29, 2022 15:38 
Не в сети

Зарегистрирован: Вс авг 21, 2022 14:56
Сообщения: 37
Благодарил (а): 2 раз.
Поблагодарили: 4 раз.
По поводу передачи аргументов командной строки:
- может всё-таки утвердить стандартное использование переменной f, то есть при запуске f4+ содержит адрес имени программы, f8+ первый параметр итд? Саму переменную можно ещё использовать в качестве argc. То есть вынести это в системно-зависимый файл s (или include в моём примере).
- в твоём варианте
Код:
# `invoke argv` t ( `inc eax` # , ' ' > ) t ( `inc eax` # , ' ' = )
будет ошибка, если путь к программе содержит пробел(ы).

А в целом, есть неплохие идеи в версиях для win:
- использование одного сегмента (код,данные,таблица импорта), не думал, что таблицу импорта можно в другом сегменте делать
- использование printf для вывода символа
Учту на будущее.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ef \ esoteric forth \
СообщениеДобавлено: Пн авг 29, 2022 15:41 
Не в сети

Зарегистрирован: Вс авг 21, 2022 14:56
Сообщения: 37
Благодарил (а): 2 раз.
Поблагодарили: 4 раз.
Кстати, спросить хотел: большие буквы тоже можно использовать или они зарезервированы на будущее? Типа для двух-буквенных токенов?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ef \ esoteric forth \
СообщениеДобавлено: Вт авг 30, 2022 12:49 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 463
Откуда: Москва
Благодарил (а): 57 раз.
Поблагодарили: 22 раз.
Так забавно слышать про "стандартизацию" и "будущее" применительно к esoteric forth :)

Фрагмент интервью с создателем языка ef \ esoteric forth \ Total Vacuum в 2050 г.

- Чем Вы можете объяснить бешеную популярность языка в мелкобританском эмирате и на территории стран бывшего Евросоюза?
- Причина на поверхности: esoteric forth - единственный из допущенных к использованию на данной территории языков, чей стандарт не только не запрещает, но даже приветствует использование символов z и v. Курс на самовырождение, объявленный бывшим руководством не менее бывшего Евросоюза, привел к тому, что разрозненные жители этих территорий практически лишены возможности использования в устной речи и письме некоторых символов алфавита. Когда-то эта часть света пестрела языковым многообразием, но сегодня языки человеческого общения практически атрофированы, выражать свои мысли жителям дозволено лишь при помощи невнятного мычания и бормотания. Та же участь постигла языки программирования. И лишь esoteric forth дает людям хоть какую-то возможность для самовыражения. И вторая причина: в этом году запланирован традиционный ежегодный энергетический кризис в Европе. Дорогое электричество вынуждает программистов писать короткие и лаконичные программы, компилировать и сразу же выключать компьютер. esoteric forth подходит для этих целей как нельзя лучше.
- Комитет по стандартизации языка собирается ежегодно, но в стандарт языка ни разу не вносилось никаких изменений. Ждать ли чего-то революционного от предстоящего заседания комитета?
- Сгоняем на Волгу, порыбачим, раков половим. Песни у костра под гитару погорланим. Будет весело и интересно.
- Каким Вы видите будущее esoteric forth? Каков он, esoteric forth завтрашнего дня?
- Если описывать одним словом, то однобуквенное. Да, пожалуй, так. У esoteric forth однобуквенное будущее. Идентификаторы в языке были и останутся однобуквенными, это я могу Вам обещать...

:D :D :D


Последний раз редактировалось Total Vacuum Вт авг 30, 2022 14:21, всего редактировалось 2 раз(а).


За это сообщение автора Total Vacuum поблагодарили - 2: 4myke, Sotnik
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ef \ esoteric forth \
СообщениеДобавлено: Вт авг 30, 2022 13:54 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 463
Откуда: Москва
Благодарил (а): 57 раз.
Поблагодарили: 22 раз.
tsdima писал(а):
По поводу передачи аргументов командной строки:
- может всё-таки утвердить стандартное использование переменной f, то есть при запуске f4+ содержит адрес имени программы, f8+ первый параметр итд? Саму переменную можно ещё использовать в качестве argc. То есть вынести это в системно-зависимый файл s (или include в моём примере).
- в твоём варианте
Код:
# `invoke argv` t ( `inc eax` # , ' ' > ) t ( `inc eax` # , ' ' = )
будет ошибка, если путь к программе содержит пробел(ы).
По командной строке такие мысли: получение параметров командной строки надо оформлять в виде отдельной подпрограммы, переписывать на asm и убирать в библиотеку, может даже в нескольких вариантах. Но неправильно делать это в core, т.е. в качестве обязательного обвеса для всех компилируемых программ. Хочется, чтобы в скомпилированной программе не оставалось ничего лишнего, а сейчас даже hello, world под 200 байт весит :) Где-то параметры командной строки вообще не нужны (hello, world, допустим), а где-то, например, удобнее из файлов настройки/параметры брать, а не из командной строки. Кроме того, имеются двух- и более- проходные трансляторы, где после каждого прохода приходится заново обращаться к параметрам командной строки. Опять же не совсем правильно связывать на старте командную строку с какой-то конкретной переменной - вдруг где-то имя f окажется более подходящим для каких-то других целей. Т.е. подпрограмма, возвращающая параметры командной строки, должна возвращать результат через стек, а уж в какую переменную это потом определить, должен решать программист. Ну и, наконец, в текущей версии транслятора переменная f - это по смыслу дескриптор текущего "читаемого" файла, так пусть она и используется именно в этом качестве в течение всего времени работы транслятора. Как-то так... :) Но это именно мои мысли и соображения, но ни в коем случае не руководство к действию, поэтому надо делать так, как проще и удобнее :)
Насчет ошибки посмотрю. Правда у меня запуск по расширению из текущего каталога, т.е. длинный полный путь к файлу никак не вредит. Получается, что в моем случае это не очень актуально - на первом месте простота :)

tsdima писал(а):
Кстати, спросить хотел: большие буквы тоже можно использовать или они зарезервированы на будущее? Типа для двух-буквенных токенов
Большие буквы можно использовать. Можно даже ядро переписать, чтобы необъявленные, но используемые в коде большие буквы трактовались, как переменные/массивы. Но нужно тогда формулу вычисления адресов переписать.
Двухбуквенные идентификаторы не планируются: для этих целей имеются другие трансляторы с нормальными длинными именами слов, нормальными числами, явным объявлением переменных/массивов и другими фишками. :) Скажу по секрету, я в большинстве случаев именно такими трансляторами и пользуюсь: инфраструктуру для работы со словарями требуется добавлять ну оооочень редко.
Выглядят программы на старшем брате esoteric forth примерно так: http://totalvacuum.ru/256x176.htm


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ef \ esoteric forth \
СообщениеДобавлено: Вт авг 30, 2022 16:47 
Не в сети

Зарегистрирован: Вс авг 21, 2022 14:56
Сообщения: 37
Благодарил (а): 2 раз.
Поблагодарили: 4 раз.
Total Vacuum писал(а):
оформлять в виде отдельной подпрограммы, переписывать на asm и убирать в библиотеку

Согласен.

Total Vacuum писал(а):
в текущей версии транслятора переменная f - это по смыслу дескриптор текущего "читаемого" файла, так пусть она и используется именно в этом качестве в течение всего времени работы транслятора

В текущей версии транслятора переменные это огромные куски памяти. Переменная f может означать одно, а f8+ другое. Но в целом, я ни на чём не настаиваю.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ef \ esoteric forth \
СообщениеДобавлено: Чт сен 01, 2022 12:17 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 463
Откуда: Москва
Благодарил (а): 57 раз.
Поблагодарили: 22 раз.
tsdima писал(а):
- использование одного сегмента (код,данные,таблица импорта), не думал, что таблицу импорта можно в другом сегменте делать

В linux, кстати, можно сделать
Код:
# `lea esi,[esp+4]` `lodsd` `lodsd`
, в результате на вершине стека (в eax) окажется указатель на первый параметр командной строки.
И в один сегмент также можно без проблем код+данные трамбовать, если мне не изменяет склероз.
Проверить пока не могу, т.к. моя ubuntu studio протухла. :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ef \ esoteric forth \
СообщениеДобавлено: Чт сен 01, 2022 15:02 
Не в сети

Зарегистрирован: Вс авг 21, 2022 14:56
Сообщения: 37
Благодарил (а): 2 раз.
Поблагодарили: 4 раз.
Да, у меня собственно все параметры копируются в переменную f (со смещением 4, у меня переменные по 256 байт, адрес получается 6604h)
Код:
   mov ecx,[esp]
   lea esi,[esp+4]
   lea edi,[dataseg+6604h]
   inc ecx
   cld
   rep movsd


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ef \ esoteric forth \
СообщениеДобавлено: Чт сен 01, 2022 21:44 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
url=https://spectrum.ieee.org/top-programming-languages-2022
Форт (Forth), всё же, ещё находится в этом рейтинге. :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ef \ esoteric forth \
СообщениеДобавлено: Пт сен 02, 2022 11:12 
Не в сети

Зарегистрирован: Пн янв 28, 2019 03:10
Сообщения: 174
Благодарил (а): 20 раз.
Поблагодарили: 13 раз.
KPG писал(а):
url=https://spectrum.ieee.org/top-programming-languages-2022
Форт (Forth), всё же, ещё находится в этом рейтинге. :)

Фух, тогда можно продолжать им пользоваться :lol:
Там, кстати, довольно специфический рейтинг (о чём авторы сами и пишут): с HTML, HDL и каким-то абстрактным ассемблером. Опять-таки, какой Форт подразумевается, непонятно. В целом, как мне кажется, такие рейтинги:
- сродни метрике "средняя температура по больнице включая морг", то есть для разных предметных областей и стран могут значительно отличаться;
- по смыслу похожи на заявления вида "популярность молотка плавно снижается, зато болгарка показывает уверенный рост", то есть, если нужно написать драйвер или прошивку для МК, то ни Python, ни SQL не помогут.
В итоге потешить самолюбие тем, что "язык, который я знаю, в топе рейтинга" можно, но не более


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ef \ esoteric forth \
СообщениеДобавлено: Вт сен 06, 2022 14:47 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 463
Откуда: Москва
Благодарил (а): 57 раз.
Поблагодарили: 22 раз.
:D По тонкому льду ходим, друзья. Каждый год вздрагиваю, открывая ссылку на очередной рейтинг. Что там? Забвение или надежда все-таки еще есть? :)
А если серьезно, то Форту забвение вряд ли грозит. По большому счету, это едва ли не единственный язык программирования, который может быть реализован практически любым программистом. И многие не отказывают себе в удовольствии иметь свой собственный карманный язык программирования. Соответственно, пока есть программисты, будут и Форты во всем их многообразии :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ef \ esoteric forth \
СообщениеДобавлено: Чт сен 08, 2022 03:14 
Не в сети
Administrator
Administrator
Аватара пользователя

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

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

Total Vacuum писал(а):
По большому счету, это едва ли не единственный язык программирования, который может быть реализован практически любым программистом.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ef \ esoteric forth \
СообщениеДобавлено: Чт сен 08, 2022 10:49 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 463
Откуда: Москва
Благодарил (а): 57 раз.
Поблагодарили: 22 раз.
Hishnik писал(а):
Пью чай, вкусный, покупаю недалеко от дома. Вот ни разу не было желания узнать рейтинг этого сорта чая.
:D Вот и я не заглядывал в рейтинги, пил себе примерно один и тот же цейлонский чай. А потом у них началось "экологичное сельское хозяйство", "organic", "Долой удобрения, г-но - наше всё!" и вот это вот всё... :) И Шри-Ланка мгновенно ворвалась в чарты экоактивистов экоэкстремистов из Гринпис, персональный топ какой-нибудь Греты Тунберг и т.д. и т.п. Но вот урожаи почему-то упали, ведь чтобы заместить удобрения, нужно поля чуть ли не метровым слоем известной субстанции покрыть, а где ж столько взять? :) Чем это все закончилось, можно в интернете почитать: майдан, отстранение местного руководства, дефолт и прочие удовольствия. С тех пор того самого чая в магазине не видел. А следил бы а рейтингом Греты Тунберг - знал бы, что пора менять вкусовые привычки, т.к. Шри-Ланка растет в рейтинге, а это не к добру :) Благо, я не большой ценитель чая, так что с переходом на новый чай в пакетиках проблем не будет :D

Кстати, тогда же заинтересовался этой темой и наткнулся на статьи про земледелие по Овсинскому. Вроде даже у нас в стране где-то такое практикуется. Не берусь судить, насколько такой способ эффективен, ведь я в сельском хозяйстве полный ноль: на даче у меня из сельского хозяйства только газон и ягоды :)
https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BD%D1%83%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8_%D0%BF%D0%BE%D1%87%D0%B2%D1%8B


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ef \ esoteric forth \
СообщениеДобавлено: Пт сен 09, 2022 18:45 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Кстати, а как в рамках обсуждаемого топика смотрится и система команд B16 CPU?
B16 Processor
Имеет ли смысл, в особенности вводить регистр А - верхушки стека возвратов (по примеру именования TOS для стека данных) и дополнять систему команд процессора для оперирования с ним.

P.S MicroCore в некотором смысле другая реализация идеи Форт процессоров.
Изображение


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ef \ esoteric forth \
СообщениеДобавлено: Вс сен 11, 2022 20:24 
Не в сети
Administrator
Administrator
Аватара пользователя

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

Из общих соображений - как может смотреться процессор 20-летней давности? Это надо, чтобы:
1. За 20 лет не было никаких значимых изменений в архитектуре ПЛИС и вообще микроэлектронике.
2. За 20 лет так и не удалось разобраться, что там напроектировали Просвещенные Европы. А уж тем более сделать лучше.

Система команд странная. С микроархитектурой связана слабо. Масса условных переходов, которых в Форте нет. Вообще код написан "как написал бы программист".

Цитата:
4.4 Further Possible Optimizations It would be possible to overlap memory accesses and operations on the stack, since there are separate pointer registers.

Вот тут до человека начало отдаленно доходить, что он рисует схему, а не пишет программу. Проектирование в стиле аппаратных транзакций - отдельное искусство. Но это надо, к примеру, мою выложенную презентацию посмотреть. Это далеко не объяснение тонкостей искусства, а просто очерчивание круга задач.

KPG писал(а):
Имеет ли смысл, в особенности вводить регистр А - верхушки стека возвратов (по примеру именования TOS для стека данных) и дополнять систему команд процессора для оперирования с ним.

Ответ основывается на простом показателе - насколько интенсивно используется стек возвратов? Если процент команд (и соответствующее ускорение) больше, чем снижение характеристик (частота, размер), можно вводить. Если нет - нет. Если примерно одинаково - не вводим по принципу бритвы Оккама (потому что лень + верификация + риск от пропущенных сценариев верификации).


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

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


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

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


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

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