Автор |
Сообщение |
|
|
Заголовок сообщения: |
Re: Язык или подход к программированию? |
 |
|
KPG писал(а): аметки о Форт из блога инженера Михаила Киселёва https://www.mnlist.ru/tags/#Форт https://www.mnlist.ru/blog/2020/forth-sites Поискать русские ресурсы по Форту человек не догадался? 
[quote="KPG"]аметки о Форт из блога инженера Михаила Киселёва https://www.mnlist.ru/tags/#Форт [/quote]
https://www.mnlist.ru/blog/2020/forth-sites Поискать русские ресурсы по Форту человек не догадался? :)
|
|
|
 |
Добавлено: Сб авг 13, 2022 19:38 |
|
|
 |
|
|
Заголовок сообщения: |
Re: Язык или подход к программированию? |
 |
|
Заметки о Форт из блога инженера Михаила Киселёва https://www.mnlist.ru/tags/#Форт P.S. Уже было и известно Easy Forth (с примером игры Змейка на Форт) Forth на STM32F103C8T6 — настоящие динозавры не вымираютpost4 (Реализация Форт ядра в Си) в небольшрм количестве примеров есть игра Life в терминальном выводе. 
Заметки о Форт из блога инженера Михаила Киселёва https://www.mnlist.ru/tags/#Форт
P.S. Уже было и известно :) [url=https://skilldrick.github.io/easyforth/]Easy Forth[/url] (с примером игры Змейка на Форт)
[url=https://mysku.club/blog/misc/91392.html]Forth на STM32F103C8T6 — настоящие динозавры не вымирают[/url]
[url=https://github.com/SirWumpus/post4]post4[/url] (Реализация Форт ядра в Си) в небольшрм количестве примеров есть игра Life в терминальном выводе. :)
|
|
|
 |
Добавлено: Сб авг 13, 2022 10:29 |
|
|
 |
|
|
Заголовок сообщения: |
Re: Язык или подход к программированию? |
 |
|
Total Vacuum писал(а): Оберонщики гребни топорщат, утверждают, что ... Такое ощущение, что они сами себе дoказывают значимость своих инструментов не вдаваясь в суть аргументов другой стороны и не поинтересовавшись в том, почему же Форт до сих пор находит своих пользователей при всех ужасах при программировании на нём в их глазах. А, у страха, как известно, глаза большие.  P.S. Вот от таких непытливых глаз Форт и защищён при его непонимании.
[quote="Total Vacuum"] Оберонщики гребни топорщат, утверждают, что ...[/quote] Такое ощущение, что они сами себе дoказывают значимость своих инструментов не вдаваясь в суть аргументов другой стороны и не поинтересовавшись в том, почему же Форт до сих пор находит своих пользователей при всех ужасах при программировании на нём в их глазах. А, у страха, как известно, глаза большие. :)
P.S. Вот от таких непытливых глаз Форт и защищён при его непонимании.
|
|
|
 |
Добавлено: Чт авг 11, 2022 20:37 |
|
|
 |
|
|
Заголовок сообщения: |
Re: Язык или подход к программированию? |
 |
|
Upd: По последней ссылке позапускал игры в Linux 32 (там же и Windows не проверял) в CoeurForth в скрипте для запуска указал ./ текущий путь запуска скрипта и в оконной оболочке выбрал одним из пунктов навигации по директории методом тыка и загрузил игру и также её можно стартануть из её меню или при введении слова её запуска. P.S. Показалось, что, к примеру Тетрис тормозит, но игра по отбиванию шарика и разрушения блоков/кирпичей вполне нормально играется в рамках моего бука под Linux 32. Pacman тоже неспешно играется. Исходников Форт системы не увидел, а эмулятор PIC32 также запускается правкой в скрипте пути для текущей директориию. Скачал образ сайта утилитой: wget -m <url> Как понял, автор этого Форта, отрисовывает интерфейсы программ с помощью прямого управления OpenGL. Ради интереса прогнал в Ida 6.8 файл MicroForth бинарника из Linux и на нём не выявил невозможности реверса, что асм, что Си псевдокод отобразились с сигнатурами использованных функций.
Upd: По последней ссылке позапускал игры в Linux 32 (там же и Windows не проверял) в [url=http://jpb.forth.free.fr/anglais/coeur_forth/emulateurs.html]CoeurForth[/url] в скрипте для запуска указал [b]./[/b] текущий путь запуска скрипта и в оконной оболочке выбрал одним из пунктов навигации по директории методом тыка и загрузил игру и также её можно стартануть из её меню или при введении слова её запуска.
P.S. Показалось, что, к примеру Тетрис тормозит, но игра по отбиванию шарика и разрушения блоков/кирпичей вполне нормально играется в рамках моего бука под Linux 32. Pacman тоже неспешно играется. Исходников Форт системы не увидел, а эмулятор PIC32 также запускается правкой в скрипте пути для текущей директориию. Скачал образ сайта утилитой: wget -m <url>
Как понял, автор этого Форта, отрисовывает интерфейсы программ с помощью прямого управления OpenGL.
Ради интереса прогнал в Ida 6.8 файл MicroForth бинарника из Linux и на нём не выявил невозможности реверса, что асм, что Си псевдокод отобразились с сигнатурами использованных функций.
|
|
|
 |
Добавлено: Чт авг 11, 2022 20:02 |
|
|
 |
|
|
Заголовок сообщения: |
Re: Язык или подход к программированию? |
 |
|
Total Vacuum писал(а): А, кстати, есть нормальные игры на Форте-то?  Я особо не интересовался никогда... Как определиться с понятием нормальная? (примеры каких то игр в демо примерах той или иной Форт системы Win32Forth ... имеются, и были всякие топики и на местном форуме по поводу игр) То, что игры написанные в рамках Форт есть - это неоспоримый факт, а какие конкретно продаваемые игры, к примеру, были сделаны на Форт когда либо и под какое железо немного исследовал tru-grue Старые игры на языке ФортНа Github можно в связке Forth game тоже посмотреть вывод. P.S. GlForth (расширение gForth для игр) Grobots   Windows applications ... Для Pocket PC кто то из фортёров делал игры на DsForth (Delo Soft Forth)
[quote="Total Vacuum"]А, кстати, есть нормальные игры на Форте-то? :) Я особо не интересовался никогда...[/quote] Как определиться с понятием нормальная? (примеры каких то игр в демо примерах той или иной Форт системы Win32Forth ... имеются, и были всякие топики и на местном форуме по поводу игр) То, что игры написанные в рамках Форт есть - это неоспоримый факт, а какие конкретно продаваемые игры, к примеру, были сделаны на Форт когда либо и под какое железо немного исследовал tru-grue [url=https://www.old-games.ru/forum/blogs/starye-igry-na-jazyke-fort.2868/]Старые игры на языке Форт[/url]
На Github можно в связке [url=https://github.com/search?q=Forth+game&type=]Forth game[/url] тоже посмотреть вывод.
P.S. [url=https://www.complang.tuwien.ac.at/anton/lvas/stack-abgaben/07w/glforth/]GlForth[/url] (расширение gForth для игр) :) [img]https://www.complang.tuwien.ac.at/anton/lvas/stack-abgaben/07w/glforth/pics/ps8.png[/img]
[url=http://grobots.sourceforge.net/]Grobots[/url] [img]http://grobots.sourceforge.net/screenshots/untouchable.gif[/img]
[img]http://jpb.forth.free.fr/images/coeur_forth/tetris.gif[/img][img]http://jpb.forth.free.fr/images/coeur_forth/carte.gif[/img][img]http://jpb.forth.free.fr/images/coeur_forth/pacman.gif[/img]
[url=http://jpb.forth.free.fr/anglais/coeur_forth/logiciels.html#fenetrage]Windows applications[/url] [img]http://jpb.forth.free.fr/images/coeur_forth/mahjong.gif[/img] ... Для Pocket PC кто то из фортёров делал игры на DsForth (Delo Soft Forth)
|
|
|
 |
Добавлено: Чт авг 11, 2022 14:11 |
|
|
 |
|
|
Заголовок сообщения: |
Re: Язык или подход к программированию? |
 |
|
KPG писал(а): "Неожиданно", топик обсуждения Форт на zx-pk.ru (05.07.2022) FORTH vs компилятор бейсика vs C++/Pascal/остальноеЗабавно, пробежался по обсуждению. Оберонщики гребни топорщат, утверждают, что на Форте нормальных игр нет и быть не может, и приводят в пример с десяток игр, написанных на Обероне - без слез не взглянешь  И неожиданно много защитников Форта  А, кстати, есть нормальные игры на Форте-то?  Я особо не интересовался никогда...
[quote="KPG"]"Неожиданно", топик обсуждения Форт на zx-pk.ru (05.07.2022) [url=https://zx-pk.ru/threads/34490-forth-vs-kompilyator-bejsika-vs-c-pascal-ostalnoe.html]FORTH vs компилятор бейсика vs C++/Pascal/остальное[/url][/quote]Забавно, пробежался по обсуждению. Оберонщики гребни топорщат, утверждают, что на Форте нормальных игр нет и быть не может, и приводят в пример с десяток игр, написанных на Обероне - без слез не взглянешь :) И неожиданно много защитников Форта :)
А, кстати, есть нормальные игры на Форте-то? :) Я особо не интересовался никогда...
|
|
|
 |
Добавлено: Чт авг 11, 2022 11:56 |
|
|
 |
|
|
Заголовок сообщения: |
Re: Язык или подход к программированию? |
 |
|
Заметка о языке :Firth сделанного в рамках Lua. :Firth pre-alpha 1– a Forth-like language for DSL creation.P.S. Тут, ещё подумалось, что можно использовать отдельно библиотеку LibJit для повышения производительности Форт программ при стековом байт коде VM (может и для МК может сработать при наличии ресурсов в необходимой мере) Библиотека нормально собралась и отработала тесты под Linux 32 (правда не последняя её версия) В примере библиотеки "скриптовый" Паскаль Dpas с выполнением кода во время загрузки его с исходника. На Github есть некоторое количество отдельных языков в привязкe к этой библиотеке. С помощью библиотеки строится внутреннее представление программы в памяти, а далее при наличии поддержки бэка целевой архитектуры он выполняется, но может быть выполнен из этого представления без наличия бек-энда и с хорошей производительностью при этом. https://ru.bmstu.wiki/LibJIT... Основы программного моделирования ЭВМ.pdfИнтерпретаторы байт-кодов своими руками (из 3-ёх статей)
Заметка о языке :Firth сделанного в рамках Lua. [url=https://blog.ionoclast.com/2015/05/firth-pre-alpha-1-a-forth-like-language-for-dsl-creation/]:Firth pre-alpha 1– a Forth-like language for DSL creation.[/url]
P.S. Тут, ещё подумалось, что можно использовать отдельно библиотеку [url=https://ru.wikipedia.org/wiki/LibJIT]LibJit[/url] для повышения производительности Форт программ при стековом байт коде VM (может и для МК может сработать при наличии ресурсов в необходимой мере) Библиотека нормально собралась и отработала тесты под Linux 32 (правда не последняя её версия) В примере библиотеки "скриптовый" Паскаль Dpas с выполнением кода во время загрузки его с исходника. На Github есть некоторое количество отдельных языков в привязкe к этой библиотеке.
С помощью библиотеки строится внутреннее представление программы в памяти, а далее при наличии поддержки бэка целевой архитектуры он выполняется, но может быть выполнен из этого представления без наличия бек-энда и с хорошей производительностью при этом.
https://ru.bmstu.wiki/LibJIT ... [url=https://atakua.org/old-wp/wp-content/uploads/2014/04/simulation-lectures-2nd-edition.pdf]Основы программного моделирования ЭВМ.pdf[/url] [url=https://habr.com/ru/company/badoo/blog/425325/]Интерпретаторы байт-кодов своими руками[/url] (из 3-ёх статей)
|
|
|
 |
Добавлено: Ср авг 10, 2022 04:37 |
|
|
 |
|
|
Заголовок сообщения: |
Re: Язык или подход к программированию? |
 |
|
Думаю, очень многие ломали головы что же такое Forth, какое положение он занимает в привязанности к машинному коду и т.д. В целом, на Forth можно смотреть с разных точек зрения, поэтому можно предположить, что это скорее набор принципов. Не ясно можно ли назвать это парадигмой, ведь в Forth-системах применяется стеково-ориентированное программирование или, например, контекстно-ориентированное программирование [1]. Да что вообще можно сказать про Forth? Есть ли у него синтаксис? Ответ: нету  Весь код, кроме метаданных, состоит из названий определений. Помимо этого, Forth явных типов данных не имеет. Т.е. смысл определений и их названия определяют как и что на этом языке можно писать. Можно сказать, что Forth это подход по созданию метаязыка. А стек оказался лишь более удобным способом работы с данными в таких языках. А какой это будет язык, на чём написан и какие решения будут использованы для разработки – решать разработчикам. В итоге, получается, что многие Forth-системы, это лишь диалекты базового языка, что предлагают нам стандарты.
Думаю, очень многие ломали головы что же такое Forth, какое положение он занимает в привязанности к машинному коду и т.д. В целом, на Forth можно смотреть с разных точек зрения, поэтому можно предположить, что это скорее набор принципов. Не ясно можно ли назвать это парадигмой, ведь в Forth-системах применяется стеково-ориентированное программирование или, например, контекстно-ориентированное программирование [b][1][/b]. Да что вообще можно сказать про Forth? Есть ли у него синтаксис? Ответ: нету :) Весь код, кроме метаданных, состоит из названий определений. Помимо этого, Forth явных типов данных не имеет. Т.е. смысл определений и их названия определяют как и что на этом языке можно писать. Можно сказать, что Forth это подход по созданию метаязыка. А стек оказался лишь более удобным способом работы с данными в таких языках. А какой это будет язык, на чём написан и какие решения будут использованы для разработки – решать разработчикам. В итоге, получается, что многие Forth-системы, это лишь диалекты базового языка, что предлагают нам стандарты.
[b][list] [1] [url=http://fforum.winglion.ru/viewtopic.php?f=34&t=160]Контекстно-ориентированное программирование[/url] [/list][/b]
|
|
|
 |
Добавлено: Пн авг 08, 2022 17:24 |
|
|
 |
|
|
Заголовок сообщения: |
Re: Язык или подход к программированию? |
 |
|
На Спектруме я Форт впервые попробовал "вживую". И надо сказать, что именно на Спектруме он был действительно удобнее и быстрее других компиляторов. Встроенный Бейсик не в счет, и слишком медленный, а остальные языки, от ассемблеров, до расширений Бейсика, а также Си и Паскаля мгновенно съедали память на компилятор, а ведь нужно было еще текст набрать и скомпилированный код куда-то положить. В этом смысле спектрумовский Форт был не только практичнее, поскольку позволял набирать программу и не особо следить за ее размером, но еще и по какой-то причине быстрее. Видимо, на тот момент компиляторы особых оптимизаций и не проводили. До сих пор помню, что пробовал тогда поиск совершенных чисел. В диапазоне от 1 до 10000 Бейсика вообще было не дождаться, а вот Форт оказался быстрее, чем Си.
На Спектруме я Форт впервые попробовал "вживую". И надо сказать, что именно на Спектруме он был действительно удобнее и быстрее других компиляторов. Встроенный Бейсик не в счет, и слишком медленный, а остальные языки, от ассемблеров, до расширений Бейсика, а также Си и Паскаля мгновенно съедали память на компилятор, а ведь нужно было еще текст набрать и скомпилированный код куда-то положить. В этом смысле спектрумовский Форт был не только практичнее, поскольку позволял набирать программу и не особо следить за ее размером, но еще и по какой-то причине быстрее. Видимо, на тот момент компиляторы особых оптимизаций и не проводили. До сих пор помню, что пробовал тогда поиск совершенных чисел. В диапазоне от 1 до 10000 Бейсика вообще было не дождаться, а вот Форт оказался быстрее, чем Си.
|
|
|
 |
Добавлено: Ср авг 03, 2022 03:59 |
|
|
 |
|
|
Заголовок сообщения: |
Re: Язык или подход к программированию? |
 |
|
"Неожиданно", топик обсуждения Форт на zx-pk.ru (05.07.2022) FORTH vs компилятор бейсика vs C++/Pascal/остальноеP.S. Из развиваемых проектов Форт для Z80 M4 FORTH: A Forth compiler for the Z80 CPU and ZX Spectrumи много Z80 Форт и для ZX programandala-net
"Неожиданно", топик обсуждения Форт на zx-pk.ru (05.07.2022) [url=https://zx-pk.ru/threads/34490-forth-vs-kompilyator-bejsika-vs-c-pascal-ostalnoe.html]FORTH vs компилятор бейсика vs C++/Pascal/остальное[/url]
P.S. Из развиваемых проектов Форт для Z80 [url=https://github.com/DW0RKiN/M4_FORTH]M4 FORTH: A Forth compiler for the Z80 CPU and ZX Spectrum[/url] и много Z80 Форт и для ZX [url=https://github.com/programandala-net]programandala-net[/url]
|
|
|
 |
Добавлено: Ср авг 03, 2022 03:06 |
|
|
 |
|
|
Заголовок сообщения: |
Re: Язык или подход к программированию? |
 |
|
Стек и конкатенативная компиляция видятся как технические способы организации вот этой самой последовательности функций. Ну или можно оттолкнуться от конкатенативной компиляции ("видим токен - компилируем вызов"), тогда стек - это просто способ передачи данных между вызовами, а словарь на основе связанного списка - один из вариантов соотнесения имен и адресов.
Стек и конкатенативная компиляция видятся как технические способы организации вот этой самой последовательности функций. Ну или можно оттолкнуться от конкатенативной компиляции ("видим токен - компилируем вызов"), тогда стек - это просто способ передачи данных между вызовами, а словарь на основе связанного списка - один из вариантов соотнесения имен и адресов.
|
|
|
 |
Добавлено: Сб янв 08, 2022 01:53 |
|
|
 |
|
|
Заголовок сообщения: |
Re: Язык или подход к программированию? |
 |
|
Цитата: "используются ли фортоподобные алгоритмы при построении программного приложения?" Что тогда относить к фортоподобным алгоритмам? Конкатенативную компиляцию и поиск по словарю или последовательность простых функций (процедур?), работающих с глобальными данными? И насколько данный подход применим за пределами собственно Форта (с постфиксной записью и стеками)? Понятно, что искусственно можно реализовать приведённый пример, но применяется ли такое на практике?
[quote]"используются ли фортоподобные алгоритмы при построении программного приложения?"[/quote] Что тогда относить к фортоподобным алгоритмам? Конкатенативную компиляцию и поиск по словарю или последовательность простых функций (процедур?), работающих с глобальными данными? И насколько данный подход применим за пределами собственно Форта (с постфиксной записью и стеками)? Понятно, что искусственно можно реализовать приведённый пример, но применяется ли такое на практике?
|
|
|
 |
Добавлено: Пт янв 07, 2022 12:12 |
|
|
 |
|
|
Заголовок сообщения: |
Re: Язык или подход к программированию? |
 |
|
Может не в тему топика такой комментарийодного разработчика встраивающего Форт в свои корпоративные проекты. P.S. Автоперевод вопроса https://coderoad.ru/11745658/Как-бы-можно-было-закодировать-приложение-в-Forth-или-Factor 
Может не в тему топика [url=https://habr.com/ru/post/563250/#comment_23173306]такой комментарий[/url] одного разработчика встраивающего Форт в свои корпоративные проекты.
P.S. Автоперевод вопроса https://coderoad.ru/11745658/Как-бы-можно-было-закодировать-приложение-в-Forth-или-Factor :)
|
|
|
 |
Добавлено: Пт янв 07, 2022 05:55 |
|
|
 |
|
|
Заголовок сообщения: |
Язык или подход к программированию? |
 |
|
Еще раз посмотрим на Форт со стороны подхода к программированию. Я не пишу такие неоднозначно понимаемые термины, как "метод", "методология" (и уж тем более "парадигма" или "философия"). Это создает атмосферу чего-то возвышенного, а нужно как раз окунуться в практику. Итак, сравним два стиля кода. Код: a = f1(b, c, d); e = f2(a, f); f3(&data, e, g);
Теперь второй стиль: Код: setup_data(); // задаются начальные состояния переменных f1(); f2(); f3();
Во втором стиле нет ничего необычного. Немного настораживает, что функции работают с какими-то данными в области их видимости, т.е. явно имеют побочные эффекты. Однако же, это может быть и не так плохо, если набор функций спроектирован грамотно, и "побочные эффекты" на деле являются прогнозируемыми. Зато это дает возможность оперировать данными в том самом глобальном контексте - например, после setup_data() сделать еще какой-нибудь convert_data(), а остальные функции оставить теми же самыми. То есть в целом этот стиль годится для работы с машиной состояний, где данные имеют глобальную область видимости и доступны для модификации со стороны множества простых функций. При этом можно выстраивать иерархию функций, создавая списки обработки, включая туда структуры управления (циклы, условные вызовы и т.д.). Получился Форт. Написанный на <любимом языке>, но тем не менее внутри отражающий общие подходы к реализации Форт-машины. Что это дает? Теперь можно попробовать не рассматривать Форт как язык программирования в общепринятом смысле и, соответственно, искать у него библиотеки, IDE, пресловутую "поддержку из коробки" и прочее. Ясно же, что этого нет, а усилия по реализации в итоге приведут только к тому, что будет "как у всех". Вместо этого стоит попробовать поставить Форт в один ряд с такими понятиями, как алгоритм суммирования элементов массива, сортировки пузырьком, или программу рисования графиков. Тогда вопрос будет не "программируем ли мы на Форте?", а "используются ли фортоподобные алгоритмы при построении программного приложения?".
Еще раз посмотрим на Форт со стороны подхода к программированию. Я не пишу такие неоднозначно понимаемые термины, как "метод", "методология" (и уж тем более "парадигма" или "философия"). Это создает атмосферу чего-то возвышенного, а нужно как раз окунуться в практику.
Итак, сравним два стиля кода. [code] a = f1(b, c, d); e = f2(a, f); f3(&data, e, g); [/code] Теперь второй стиль: [code] setup_data(); // задаются начальные состояния переменных f1(); f2(); f3(); [/code]
Во втором стиле нет ничего необычного. Немного настораживает, что функции работают с какими-то данными в области их видимости, т.е. явно имеют побочные эффекты. Однако же, это может быть и не так плохо, если набор функций спроектирован грамотно, и "побочные эффекты" на деле являются прогнозируемыми. Зато это дает возможность оперировать данными в том самом глобальном контексте - например, после setup_data() сделать еще какой-нибудь convert_data(), а остальные функции оставить теми же самыми. То есть в целом этот стиль годится для работы с машиной состояний, где данные имеют глобальную область видимости и доступны для модификации со стороны множества простых функций. При этом можно выстраивать иерархию функций, создавая списки обработки, включая туда структуры управления (циклы, условные вызовы и т.д.).
Получился Форт. Написанный на <любимом языке>, но тем не менее внутри отражающий общие подходы к реализации Форт-машины.
Что это дает? Теперь можно попробовать не рассматривать Форт как язык программирования в общепринятом смысле и, соответственно, искать у него библиотеки, IDE, пресловутую "поддержку из коробки" и прочее. Ясно же, что этого нет, а усилия по реализации в итоге приведут только к тому, что будет "как у всех". Вместо этого стоит попробовать поставить Форт в один ряд с такими понятиями, как алгоритм суммирования элементов массива, сортировки пузырьком, или программу рисования графиков. Тогда вопрос будет не "программируем ли мы на Форте?", а "используются ли фортоподобные алгоритмы при построении программного приложения?".
|
|
|
 |
Добавлено: Пт янв 07, 2022 02:46 |
|
|
 |
|