FORTH

Тема в разделе "WASM.HEAP", создана пользователем Green_DiCk, 27 авг 2008.

  1. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    Он пока хотя бы не поливает нас говном и не предлагает пересесть на форт :)
     
  2. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.330
    Да. Но сейчас на васме для полного кайфа не хватает адепта Лиспа и адепта какого-нить красноглазого Линукса (типа Генту).
     
  3. KPG

    KPG Member

    Публикаций:
    0
    Регистрация:
    13 янв 2021
    Сообщения:
    121
    Это не сложно даже при простейших макро-оптимизациях, что и продемонстрировано в SPF4.
    а, вообще желательно поддержка стэковой вычислительной модели применённой в Java, C# и других VM в разных языках программирования, чтобы вопросы оптимизации такого кода на регистровую архитектуру нивелировать.

    Никак не возбраняется эту или похожие темы админами форум отправить в трэш.
    (честно сказать, переживать не буду, уже отпереживался :)
    --- Сообщение объединено, 16 янв 2021 ---
    Мне в чём то кого то убеждать и гнобить нет никакого смысла :)
    (как развиваются эволющионные процессы - по спирали или по "экспоненте" у философов, на это, свои точки зрения)
     
  4. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.330
    Ну и сколько факторов времени исполнения он показывает в сравнении с сишечкой (x10?) на современном немаргинальном железе?
     
  5. KPG

    KPG Member

    Публикаций:
    0
    Регистрация:
    13 янв 2021
    Сообщения:
    121
    Достаточно, что бы по этому поводу не переживать.
    На форуме по форт есть соответствующие темы разных бенчмарков и в сравнении с Си,

    P.S. но, меня например, не разу не напрягло, что тупой Форт скрипт по дизассемблированию Форт-системы (около 800Кб файл) отработал около 5-ти минут при запуске, и при этом выполнял кучу передублирующихся действий. (дольше было понять что в нём дальше изменять после текущего прогона)

    но, Форт, используют в своей практике, зачастую вне самых быстрых вычислений т.к. он вне майнстрим интересов корпораций,
    а поддерживается интересом со стороны конечных пользователей его. :)

    К сведению, делал на базе LCC и трансляцию Си в Форт, если кто подумал, что Форт отрицает понимание Си.
    (есть и чисто проекты на Форт по компиляции Си)
     
  6. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.330
    Ну знаешь, С#/F# и Java/Kotlin/итд тоже компилятся в стековую ВМ без каких-либо проблем.
     
  7. q2e74

    q2e74 Active Member

    Публикаций:
    0
    Регистрация:
    18 окт 2018
    Сообщения:
    999
    поди что-нить подобное уже реизобрели? https://riywo.medium.com/llforth-experimental-implementation-of-forth-in-llvm-2298c76ec3ac
     
  8. cddee3

    cddee3 Member

    Публикаций:
    0
    Регистрация:
    15 ноя 2020
    Сообщения:
    55
    прочитал вики про Forth так и подумал - похож на .net assembler
     
  9. KPG

    KPG Member

    Публикаций:
    0
    Регистрация:
    13 янв 2021
    Сообщения:
    121
    На использование вычислений на стеке почти всё и заканчивается. :)

    P.S. Важнее чем отличается в Форт, выводящие его в отдельный класс уникальных языков и как изменяется какое то решение с применением его возможностей.

    Интересно рассматривать такие варианты решений на http://rosettacode.org/

    И на этом ресурсе, есть ещё некоторое число языков построенных под влиянием Форт - oForth, 8th, Cat, Factor, ...
    --- Сообщение объединено, 17 янв 2021 ---
    Есть и такой проект с синтаксисов сделанным под влиянием Форт. :)
    Проект MPL на Github https://github.com/Matway MPL (Programmiersprache)

    P.S. Тема обсуждения на gamegev.ru - учаcтника этого проекта
    https://gamedev.ru/flame/forum/?id=253602
    (сейчас он, вроде, уже покинул этот проект)
    --- Сообщение объединено, 17 янв 2021 ---
    Одна из основных, но не часто используемой, фишек Форта - возможность загружать расширения в Форт-систему меняющие синтаксис и семантику для понимания в дальнейшем такого кода без перекомпиляции ядра Форт-системы.
     
    Последнее редактирование: 17 янв 2021
  10. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    Так это и в лиспах возможно. Правда, не во всех.
     
  11. KPG

    KPG Member

    Публикаций:
    0
    Регистрация:
    13 янв 2021
    Сообщения:
    121
    Форт и Лисп сближает простота их внутреннего строения, но как указано в статье на Луркморе в одном засилье скобок, а в другом их патoлогически мало из этого следует, что свойства языков программирования определяется количеством скобок в них. :)
    Ну и например отношением к переменным - Форт старается избавится от связывания переменной с именем пропуская её безымянно (локально) через стек, а Лисп их не хранить, а наново генерировать и актуализировать по мере необходимости (делать видимыми), если не путаю т.к. с Лисп "почти" не знаком, но читал книгу Лаврова по Лисп.
    При этом Форт "переставляет" элементы стека, а Лисп записи (атомы) в списке.

    P.S. Как Форт, так и Лисп можно выразить средствами друг друга, но Форт изначально императивный, а Лисп стремится к функциональному самовыражению.
    На этом стыке появляются и разные "гибридные" языки.
    --- Сообщение объединено, 18 янв 2021 ---
    lurkmore - Лисп,

    lurkmore - Форт
     
    Последнее редактирование: 18 янв 2021
  12. KPG

    KPG Member

    Публикаций:
    0
    Регистрация:
    13 янв 2021
    Сообщения:
    121
    Некоторая "затравка" для размышления в тему вполне рабочего Форт кода.
    (работоспособность проверяется, например, в каком нибудь gForth online)
    Код (Text):
    1. VARIABLE aDump
    2. VARIABLE Length
    3. : >DI
    4.         0. BL WORD COUNT >NUMBER 2DROP D>S ( DUP . BL EMIT )
    5. ;
    6. : dump-read? HERE aDump ! BASE @
    7.     CR HEX 0x401000
    8.     BEGIN
    9.                REFILL
    10.     WHILE
    11.              >DI OVER - ?DUP IF DUP ALLOT + ( DUP . KEY DROP ) THEN \ PLACE
    12.              >DI C, >DI C, >DI C, >DI C, >DI C, >DI C, >DI C, >DI C,
    13.              >DI C, >DI C, >DI C, >DI C, >DI C, >DI C, >DI C, >DI C,
    14.            BL WORD DROP ( COUNT TYPE CR )
    15.         0x10 +
    16.     REPEAT
    17.     ." length ="  0x401000 - .
    18.     HERE aDump @  - DUP .  Length !
    19.     BASE !
    20.     aDump @ Length @ DUMP
    21. ;
    22. HEX
    23. dump-read?
    24. 00401000  28 10 00 00 00 00 00 00  00 00 00 00 48 10 00 00  (...........H...
    25. 00401010  38 10 00 00 00 00 00 00  00 00 00 00 00 00 00 00  8...............
    26. 00401020  00 00 00 00 00 00 00 00  5C 10 00 00 6C 10 00 00  ........\...l...

    P.S.
    к базовому коду в этом же Форт файле добавлен HEX код из файлa для считывания его в память Форт-системы
     
    Последнее редактирование: 20 янв 2021
  13. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Примеры будут в виде бинарей, что бы отладчиком взять и посмотреть. Скрипты стековые вирты и прочее дерьмо не интересно, нужен конечный выхлоп в виде бинаря. Причём что бы без костылей там было, иначе порубит это всё авер и прочая защита. По билду станет сразу всё ясно. Или может это для каких то спец контроллеров только предназначено где стека пару кб.. Гугл не знает про семплы под нт.
     
  14. KPG

    KPG Member

    Публикаций:
    0
    Регистрация:
    13 янв 2021
    Сообщения:
    121
    Извиняюсь, а об каких бинарях идёт речь? Скомпилированных Форт программ?
    так они получаются на выхлопе конкретной Форт-системы (в том числе и для контроллеров) И, Форт это не скриптовый язык, в большей степени своего использования и не виртуальной VM но, в общем случае, следует заложенным в него канонам, но и отходит от них не так уж редко.

    P.S. Например Win32Forth

    SPF4 gForth
    ...
    а, так как Форт-системы, зачастую, раскручиваются с помощью включения Форт-кода, то он тоже проходит трансляцию средствами системы при её построении.
    Забавно, что на Win32Forth антивирусы бывают ругаются и это, например, указано здесь https://sites.google.com/view/forthwin/
    (правда, почему то, разработка с закрытой частью исходников для скачивания с Github Exe файла)
    Форт-систем для ПК достаточно много существует, затруднительно их все перечислить.
     
    Последнее редактирование: 20 янв 2021
  15. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    KPG,

    Для начала похоже на малварь https://www.virustotal.com/gui/file...a572e36f21debdd9dbdbc24d70e5565f4f0/detection

    - generic детекты, у некоторых(Cyren) норм вирта впрочем посморим вручную. В импорте два адреса, там крипта. Статик модуль криптован, на EP функция декрипта. Кого же ты тут обмануть хочешь, я могу по динамике весь с него лог вытянуть полностью автоматикой разобрав. За такое тебя следует вообще забанить, вот это да, привёл пример просто ппц.
     
  16. KPG

    KPG Member

    Публикаций:
    0
    Регистрация:
    13 янв 2021
    Сообщения:
    121
    В том то и проблема, что типичный Форт (не самый быстрый) сносит голову таким вот горе антивирусам - пользуюсь Win32Forth и ещё ни разу не возникли сомнения в его вирусности (хотелось бы их услышать, если это так аргументированно и если это так, то как оно туда попало и живёт десятилетиями на sourceforge, пересобираю Win32Forth, бывает, из исходников при доработке для себя)

    P.S. SwiftForth как?
    VFX Forth?
     
    Последнее редактирование: 20 янв 2021
  17. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    KPG,

    Почему там слой крипты и распаковка на EP ?

    Есть онлайн вирты, ну что бы по простому не заморачиваться с компилером глянуть активность сервисную.
     
  18. KPG

    KPG Member

    Публикаций:
    0
    Регистрация:
    13 янв 2021
    Сообщения:
    121
    Не разбирался как с уровня системы строится исполняемый файл целевого дистрибутива Win32Forth (вроде в исходниках указан скрипт одного из каких то популярных инсталяторов)
    А, для пересборки самого Win32Forth из исходников уже запускается батник.
     
  19. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    KPG,

    Но я вижу криптор а не сборку, которая не определяется штатными инструментами.
     
  20. KPG

    KPG Member

    Публикаций:
    0
    Регистрация:
    13 янв 2021
    Сообщения:
    121
    Не знаю как разработчики и какими средствами создавали дистрибутив.
    Здесь есть бинарники сделанные с помощью Win32Forth http://home.planet.nl/~josv/


    P.S. Интересно, а эти файлы похожего проекта как детектятся https://github.com/PeterForth/ForthWin-Download
    но, в них, ядро системы уже по другому устроено.
    --- Сообщение объединено, 20 янв 2021 ---
    Вот ещё здесь есть программа Cweed, сделанная на Win32Forth, но более давнишнего его варианта
    Кто то и здесь пишет свою программу на Win32Forth и вроде тоже своего "ответвления" системы