KPG
> На Github при вводе поиска по словосочетанию "Forth Python" отображается
> некоторое число проектов c Forth использованием.
Не знаю, с моей точки зрения это какое-то извращение, интеллектуальная мастурбация. Если есть возможность использовать Питон - то вот абсолютно никакой надобности в Форте уже нет.
Хотя, может быть можно (можно ли?) понадеяться, что Форт-часть сможет дать заметно большее быстродействие, чем сам Питон, за счет "шитого кода". Но для частных случаев и так уже есть всякие numpy и tensorflow.
Dmitry_Milk
> Это да. Скажем, если система на каком-то очень слабеньком микроконтроллере,
> куда никакой Питон не впихнешь, то "пощупать" особенности периферии Форт
> наверное будет самым удобным инструментом.
Достоинства и недостатки Форт именно в том, что он использует возможности и "потокового" программирования добавляя ещё один слой непонятности для привыкших к Питон. :)
(как в примере выше) отсюда и синтаксис ориентированный на это и использование двух стэков.
и оставляет слой "низкоуровнего" работы с памятью как сегменту кода/данных.
P.S. А, само построение управляющих конструкций не так экзотично в сравнении с ассемблерами
хотя привыкшим к Си восприятию может корёжить мозг не по детски. :)
(но, например, близкая ассоциация с билингвами, то для них всё нормально понимается)
+ ещё СЛОВА из малого количества букв тоже могут оттолкнуть от изучения "абракадабры" Forth.
Короче, куда ни посмотри в Форт, то сразу видны "грабли", а почему не сделано "нормально" :)
Но, за свою историю существования Форт как языка он мало отошёл от начального своего варианта,
(даже с принятием стандартов для него) в отличии от многих других языков и не потерял актуальность использования.
Не это ли тогда характеризует Forth как нормальный язык лучше всего?
Dmitry_Milk
> Не знаю, с моей точки зрения это какое-то извращение, интеллектуальная
> мастурбация. Если есть возможность использовать Питон - то вот абсолютно
> никакой надобности в Форте уже нет.
"Форт" использование можно найти в разных ипостасях - в отладчике для Radare2
ESIL
Коль уж заговорили о разных языках, приведу здесь ещё более экзотические языки.
Brainfuck: http://progopedia.ru/language/brainfuck/
Отечественная пардия брэйнфака - Lux: http://progopedia.ru/language/lux/
Интересный диалект Brainfuck - интерперетация в цветах: http://progopedia.ru/dialect/brainloller/
Ну и в заключение - Piet: http://progopedia.ru/language/piet/
Последний заинтересовал своей необычностью визуализировать код в цветах: https://www.dangermouse.net/esoteric/piet/samples.html
Вот пример какого-то генератора чисел:
Насколько данные языки мощные? Ечсть ли у них будущее? Какова серьёзность их применения?
Или это всё не более, чем утехи программистов и компиляторо-писателей?
Gradius
> Насколько данные языки мощные? Ечсть ли у них будущее? Какова серьёзность их
> применения?
>
> Или это всё не более, чем утехи программистов и компиляторо-писателей?
А, откуда такие вопросы по эзотерическим языкам?
Неужели и Форт так воспринимается?
Или навеяно этой заметкой и обсуждений к ней: Пол Грэм: Странные языки программирования https://habr.com/ru/company/itelma/blog/575128/
Максимально серьёзность их применения, если в их вычислительную модель, например, максимально уложить алгоритм и сравнить с выводами, что из этого интересно к использованию. :)
(типа адресных переходов в 2-ух мерном пространстве Befunge)
P.S. Форт, отчасти, можно "считать" Лиспом, но без скобок если если ещё задействовать в нём Лисп методики. :)
Factor, PostScript - вероятно более Лисповые в своём наполнении.
Gradius
> экзотические языки
Форт не экзотический язык. Это баланс удобства, быстродействия и минимализма по требованиям к памяти, вот, например:
https://ru.wikipedia.org/wiki/Open_Firmware
Dmitry_Milk
> https://ru.wikipedia.org/wiki/Open_Firmware
Вот этот стандарт IEEE
открытых загрузчиков
ANS Forth стандарт 94г. (перевод)
Ну вот, подытоживая, большее, чем системный софт на Форте никто ничего не пишет.
А если мыслить шире, то можно прийти к выводу: "если знаешь С, этот Форт становится нафиг не нужен".
Ибо аппаратных привилегий Форт в отличие от Си - не имеет.
Банально. запись в ячейку памяти на Си:
*(volatile int*)register_address = value;
Форт вообще изолирован от всего и вся. Некий конь в вакууме. И без расширителя он не нужен. А расширитель - пишется на Си или асме. Но тогда Форт не нужен, если есть Си - так пиши на нём всё.
Аналогичная ситуация с Питоном и Lua. Это для дибилов, которые не знают, как просмотреть содержимое регистров микроконтроллера.
Gradius
> Форт вообще изолирован от всего и вся. Некий конь в вакууме. И без расширителя
> он не нужен. А расширитель - пишется на Си или асме. Но тогда Форт не нужен,
> если есть Си - так пиши на нём всё.
Забавно, назвать ассемблер, Си расширителем Форт :)
P.S. Форт самодостаточен, что бы после его "раскрутки" больше ничем не пользоваться, но т.к. "его" возможностей (разработчика) может не хватать, то не возбраняется, при необходимости его "расширять" и кодом на Си.
При встраивании Форт в FPGA или использовании на родной стэковой архитетуре с его поддержкой в системе команд кристалла, то и Си не поможет его расширению. :)
Gradius, ну представь, что у тебя необходимость сделать что-то с железкой, где у тебя память для кода исчисляется сотнями байт, ну, скажем, какой-нибудь микроконтроллер 90-х годов. О каком Си там может идти речь? Только ассемблер, только хардкор! (ну или все же форт-машина :) )
Gradius
> Аналогичная ситуация с Питоном и Lua. Это для дибилов, которые не знают, как
> просмотреть содержимое регистров микроконтроллера.
Чтоб сделать это на Си или на Асме, тебе нужно:
- написать программу
- откомпилировать ее
- залить бинарник в контроллер
- запустить бинарник
И только после этого твоя твоя программа, если она без ошибок написана, сможет сделать обращения к регистрам. А если есть какие-то ошибки/опечатки - тебе придется все вышеперечисленные шаги делать заново.
А в случае с Python или Фортом тебе не надо писать никаких программ. Тебе надо только один раз залить среду языка в контроллер и запустить ее. А потом просто общаться с этой средой. При этом форт-машина у тебя влезет даже в крошечную память древних контроллеров.
Dmitry_Milk
> О каком Си там может идти речь? Только ассемблер, только хардкор! (ну или все
> же форт-машина :) )
Алпатов Г.Р. Применение PIC-контроллеров в измерительной технике (Ростов-на-Дону: ЮФУ, 2008.)
P.S. Ну вот нравится кому то программировать и такие контроллеры на Forth, а свой, к тому же, сделанный инструментарий он же и душу греет. :)
Разместить FORTH в 512 байтах (боот сектора x86)
Нет, определённо, сталкивающиеся с Forth после "тяжких" трудов С, С++ программирования
возникает непонимание, как это в современности программировать на языке похожем на ассемблер и зачем и кто его при его заявленной саморасширяемости, всё же расширяет чем, зачем, как и почему это стоит того.
Dmitry_Milk
> А потом просто общаться с этой средой. При этом форт-машина у тебя влезет даже
> в крошечную память древних контроллеров.
Там что, интерпретатор? Или жит-компиляция?
1 frag / 2 deaths
Интерпретатор - самая простая реализация.
Но модно делать шитый код когда каждое слово это машинное call something что можно сравнить с компиляцией, но легко может перейти к интерпретации если надо.
Gradius
> Я вот тут озадачился языком Forth. Краем уха слышал, что это простой и гибкий
> язык, в котором есть поддержка изменяющегося синтаксиса.
>
> Поиск литературы в интеренете приводит к скучным ветхозаветным книгам советских
> времён, или мутным статьям на хабре.
>
> Я не втыкаю, зачем нужен Forth? Что на нём можно сделать?
>
> Можно ли на нём писать игры? Управлять регистрами аппаратуры на нём можно?
> Как управлять спрайтами на Форте?
>
> В интернете куча упоминаний: "Форт летал в космос", "На Форте писались игры для
> Atari".
Это довольно сложный вопрос. На него лучше отвечать несколько издалека. Вот есть такой, кгхм, язык программирования - лисп. На нём тоже куча упоминаний "на лиспе написано..." Их даже для удобства на какой-то сайт собрали, специально посвящённый историям успеха на лиспе (а то упоминаний-то - куча, но все настолько маргинальные, что поди найди, не зная, чего искать). Один любитель лиспа тут с этим сайтом всё время носился... Что такое лисп, если описать в двух словах? Это рафинированная деградация в некотором направлении, доведённая до той точки, когда деградировать дальше некуда, после чего возведённая в ранг центральной концепции языка.
Ну так вот, форт - это то же самое, что лисп, только деградировавший в другую сторону.
Можно ли на нём что-то писать? Как и на лиспе - разве что для боли и трудностей, прохождение которых ведёт к раздутию ЧСВ. Для получения результатов с более практичным соотношением боль/профит и менее экзотическим наполнением понятия "профит" - лучше писать всё-таки на чём-то более мейнстримном.