LINUX.ORG.RU

Gforth 1.0

 , ,


1

2

После длительного периода разработки вышел Gforth 1.0

Gforth – это реализация языка Форт в рамках проекта GNU.

По сравнению с предыдущим стабильным релизом 0.7.3 от 2014 г.:

  • заявлена полная поддержка стандарта Forth 2012;
  • улучшен компилятор, утверждается что сгенерированный код не уступает по скорости SwiftForth;
  • улучшена работа с C- и C++-библиотеками, добавлена поддержка callback-функций;
  • улучшена поддержка многопоточных приложений, добавлены замыкания (closures);
  • улучшены средства отладки и IDE.

Gforth написан на Си и собирается GCC, за счёт чего поддерживает самые разнообразные платформы.

>>> Подробности

anonymous

Проверено: cetjs2 ()
Последнее исправление: cetjs2 (всего исправлений: 2)

Джва года ждал. Даже книжку бумажную по Форту почти решил купить. И вот он вышел. Беру! Скачиваю!

Infra_HDC ★★★★★
()

Ради любопытства решил почитать в wikipedia что за ЯП такой. Читаю:

Размер кода Форта для 16-разрядных систем, при грамотном написании программы, иногда в 10-20 раз меньше кода, скомпилированного из программы на Си. Для 32-разрядных систем этот разрыв ещё больше. В операционных системах общий выигрыш может составлять уже сотни, а то и тысячи крат. Причина очень простая — готовая задача на Форте имеет размер несколько байт, все вспомогательные подпрограммы реализованы в виде определений, доступных всем. Система на Форте вместится в процессор, в который другие системы влезть в принципе не способны.

Is it true?

mak8kammerer
()
Ответ на: комментарий от mak8kammerer

Да, это верно. По высокоуровневости этот язык прямо над ассемблером, и гораздо ниже Си. Для новых архитектур, системные программисты пишут компилятор Форта (или писали раньше, или переносят с других архитектур) как только будет готов Ассемблер.

Infra_HDC ★★★★★
()
Ответ на: комментарий от yars068

Но это значит, что он даже более опасный, чем Си? :)

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

зато можно перепрошивать спутники за пределами солнечной системы

MKuznetsov ★★★★★
()

Balancer на нем интеллект NPC писал в lineage 2, прикольная фришара была.

steemandlinux ★★★★★
()
Ответ на: комментарий от mak8kammerer

Ну насчет тысяч крат сомнительно, остальное - правда. Он же стековый, что пишешь - то и получаешь.

TI_Eugene ★★★
()
Ответ на: комментарий от Infra_HDC

Даже книжку бумажную по Форту почти решил купить. И вот он вышел. Беру! Скачиваю!

Бумажную? :)

pihter ★★★★★
()
Ответ на: комментарий от Infra_HDC

По высокоуровневости этот язык прямо над ассемблером, и гораздо ниже Си

Интригует: си - это ж и есть практически ассемблер с макросами..

А есть для микроконтроллеров? Вроде напрашивается

pihter ★★★★★
()
Ответ на: комментарий от MKuznetsov

спутники за пределами солнечной системы

Спутники… За пределами солнечной системы… Спутники центра масс галактики? :)

pihter ★★★★★
()
Ответ на: комментарий от mak8kammerer

курни пару-тройку статей про шитые коды - их активно абюзили при дефиците(реальном а не рыночном) памяти - когда вместо истиных адрессов используються их «хэши» тогда можно портянку вызовов заменить описью хэшей - фактически это наворачивания своего микроинтерпретатора к форту оно имеет отношение только потому что остальные от этого сразу отказались как память «перестала» лимитировать

прост следует различать асм как построчник и изыски ныряющие в битовые представления конкретного набора команд - если арбузить последнее то там можно очень забавные «нуль-пространственные» переходы обнаруживать

многостековость полезная бирюлька для становления годным программистом

qulinxao3 ★☆
()

Единственное применение (для «кочевников», ой … «инфобомжей»))) по сути – это брать FPGA дешевый и рисовать в нем MISC (J1 на lattice ice40 за 4$ 80-100 mips + 10-20 наносекунд на прерывание )))) но 16 бит только.

Для дорогих проектов как «гарантия от ошибок аппаратных» и постоянного апдейта.

psv1967 ★★★★★
()

Почитал про него - прикольный, только выглядит будто компилятор для этого можно за вечерок написать, хотя, наверное, я не углубился ещё просто достаточно

pihter ★★★★★
()

Пришлось недавно самую малость в него погрузиться из-за Open Firmware в Sun SPARC и PowerPC маков.

a1ba ★★★★
()
Ответ на: комментарий от Infra_HDC

У Форта нет уровня. Есть начальный уровень, да, чуть повыше ассемблера, а дальше — какой напишешь, такой и будет. Видел компилятор Паскаля на Форте — двадцать страниц убористого текста, и Форт превращается в обогащённый Паскаль.

fat-II ★
()
Ответ на: комментарий от fat-II

Если PostgreSQL написан на Ц, означает ли это что Ц является декларативным языком программирования?

sin_a ★★★★★
()
Ответ на: комментарий от mak8kammerer

Форт - это как язык ассемблера, абстрагирующий ручное управление регистрами и переходами.

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

Вообще от Форта ощущение, как у какого-нибудь Азимова описывают написание программ. Очень изящное объединение уровней от системного языка до командной оболочки.

По размеру - легко верится. Строительный блок там - слово, слово - это запись в словаре (главная структура данных Форта вместе со стеками аргументов и возврата) с указателями на данные и шитый код. Роль стека возврата играет стек указателей на следующее слово. Стек аргументов явный.

То есть - толкнуть данные в стек, вызвать слово. Никакого AST в программе, просто последовательность токенов. Т.е. проще, чем лисп.

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

lealxe ★
()
Ответ на: комментарий от yars068

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

lealxe ★
()
Ответ на: комментарий от pihter

Ага, минимальный ни на что не полезный Форт, особенно с руками не как у меня, можно написать за вечерок.

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

lealxe ★
()
Ответ на: комментарий от lealxe

Я правильно понимаю, что нужен он для легаси, написанного за прошлые годы, а в целом, народ «пока не понял, как на этом можно написать полезную программу»?

tiinn ★★★★★
()
Ответ на: комментарий от mak8kammerer

Отчасти. Программа действительно довольно короткая, а вот словари уже не всегда.

gns ★★★★★
()
Ответ на: комментарий от tiinn

Ну для принтеров же пишут. PostScript называется.

gns ★★★★★
()
Последнее исправление: gns (всего исправлений: 1)
Ответ на: комментарий от pihter

Ну так и делают. Обычно пишут стековую виртуальную машину в 20 команд, а потом компилируют код в нее.

gns ★★★★★
()
Ответ на: комментарий от mak8kammerer

иногда в 10-20 раз меньше кода

а иногад в 10-20 раз больше)) Всё зависит от того как писать на том или этом языке

KSergeyP
()
Ответ на: комментарий от MKuznetsov

Да погоди, еще даже до облака Оорта не долетели... :)

gns ★★★★★
()
Ответ на: комментарий от tiinn

У форта в функциях нет аргументов в явном виде, Он же стековый. Типа «возьми со стека два элемента, сложи, положи результат туда же».

gns ★★★★★
()
Ответ на: комментарий от lealxe

Ну вот это и пугает :) Это уже куда угодно не встроешь.

gns ★★★★★
()
Ответ на: комментарий от gns

Ну, вот, когда для результата надо произвести операции над четырьмя операндами, я уже начинаю путаться, в какой последовательности пихать их в стек ;) Например, (а+b)*(c+d)

tiinn ★★★★★
()
Последнее исправление: tiinn (всего исправлений: 1)
Ответ на: комментарий от tiinn

Карринг!... Карринг и частичные функции таки ВАм помогут :)

gns ★★★★★
()
Ответ на: комментарий от ogion

Я знаю, я не могу это запомнить. Мне всегда нужна бумажка и ручка, а с бумажкой и ручкой мне и каклькулятор-то не нужен ;)

tiinn ★★★★★
()
Ответ на: комментарий от tiinn
: CALCULATE-R ( a b c d -- result )
    + >r      \ 1. Складываем c и d, отправляем результат (c+d) на стек возвратов
    +         \ 2. Складываем оставшиеся на основном стеке a и b
    r>        \ 3. Возвращаем (c+d) со стека возвратов на основной стек
    * ;       \ 4. Перемножаем (a+b) и (c+d)

\ Проверка: (2 + 3) * (4 + 5)
2 3 4 5 CALCULATE-R .  \ Выведет 45

Есть специальный стек возвратов - который удобно для хранения временных результатов использовать. Ну и в современных версиях Forth доступны обычные переменные.

necromant ★★★
()
Последнее исправление: necromant (всего исправлений: 1)
Ответ на: комментарий от mumpster

всё так! он ещё и очень быстрый. но мозг сломаешь.)))

там не только мозг заденет, но и речь: порядке обратном в говорить начнёшь. :))

necromant ★★★
()

После калькулятора МК61 форт мне бодро зашел. Только ничего путного я не написал :(

Alphaer ★★★
()
Ответ на: комментарий от gns

Зачем так далеко ходить, в СССР были Б3-21, Б3-34, МК-52 и МК-61, тоже с обратной польской записью, причём в отличие от стандартного Форта (*), там числа с плавающей точкой были из коробки, памяти, правда, маловато. Под последние три модели написали «Посадку на Луну» и прочий ТМ-овский цикл (на Б3-21 не шла, у него система команд была чуть другая, да и память ещё меньше).


(*) Многомудрые по Форту книжек авторы объясняли, что оно и НЕНУЖНО (задолго до появления ЛОРа, замечу), поскольку в реальных задачах дробные числа всегда можно обрабатывать с фиксированной запятой, контролируя порядок самостоятельно (кажется, у Ю.Семёнова я такое читал). Тем не менее, в каких-то фортовских расширениях плавающая точка всё-таки появлялась…

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 3)
Ответ на: комментарий от mak8kammerer

сложно сказать. Я с ним игрался на PDP-11 под RT-11. Система форт крошечная, запускал ее как JOB или Foreground Job, и он там висел. Сам в background занимаешься в системе, клавишами переключил - и ты уже в форте. ctrl-B - и ты опять в ОС или какой-нибудь программе. Занимало буквально несколько килослов.

Alphaer ★★★
()
Ответ на: комментарий от Alphaer

Я тоже с МК-61. На Форте для «Партнёра» написал декомпилятор шитого кода в фортовский исходник. К сожалению, не сохранился.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от necromant

Йоды магистра речи тайна раскрыта недавно — на Форте программист старый он просто.

(Баян, да.)

hobbit ★★★★★
()
Ответ на: комментарий от pihter

А есть для микроконтроллеров? Вроде напрашивается

Ну на вики пишут что есть такой процессор Harris RTX 2000 который Форт хардварно исполняет, его очень любит НАСА на разные космические миссии пихать.

https://www.forth.com/resources/space-applications/

YogSagot ★★☆
()
Ответ на: комментарий от tiinn

Нет, я не понял. Про народ ничего не знаю, но вроде под Амигу очень много гуевых программ было написано на JForth. Так интернеты говорят.

lealxe ★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.