Comments 26
Отечественный и достаточно активный форум по Forth-у: https://fforum.winglion.ru/index.php
Вот здесь много интересных людей общается: https://github.com/ForthHub/discussion/discussions
Ох, книги Броуди, "какая боль". Комикс для чайников, и материал поданный задом наперед. А главное в форт-системе это же не синтаксис, а организация динамической памяти структурой словаря. И синтаксис - это системное средство для работы со словарем.
Если рискнете читать Броуди, то держите постоянно в голове: написано по старому стандарту Forth-83, и есть серьезные отличия от ANSI Forth-95 (современный неофициальный Forth уже не ломает ANSI-95, а только дополняет).
Ох, книги Броуди, "какая боль". Комикс для чайников, и материал поданный задом наперед.
яростно поддержу :) мне он всегда казался излишне вербозным - и да, то что в общем-то самое интересное там лишь очень кратко затронуто где-то в главе "under the hood"
к сожалению на русском видел ещё только одну (Келли, Спайс) и прямо скажем тоже не готов её порекомендовать - там и Forth-79 с Forth-83 спорит постоянно и много материала который сейчас уж точно даже историческую ценность едва ли представляет.
было бы интересно полистать хорошую книжку как раз о реализации языка, точнее о вариантах реализации даже. но такой я не видел и на английском.
А что именно Вы смотрели? Есть книга Баранова и Ноздрунова "Язык Форт и его реализации", есть Семенов "Программирование на языке Форт" (даже исходники на ассемблере приложены). Книги старые, конечно, но информация там вполне корректная и вполне может служить в качестве руководства, как мне кацца )))
Книги Броуди, imho, и не предназначались для детального технического раскрытия того, как именно функционируют Форт-системы. Да, рассказано "по верхам", но для начинающих и это, по-большому счету, не самая нужная информация. Научить делать самые фундаментальные вещи - и этого вполне достаточно. А уж потом, когда появится навык программирования, можно сделать попытку "слепить" свою реализацию. Тут, конечно, уже нужно рыть глубже. Но точно не начинающим.
>>По совокупности обстоятельств FORTH скорее уже история.
Наверное, так. Но ещё жив форум nnCron (движка, который выполняет FORTH-скрипты в Windows) и я тоже иногда туда заглядываю: https://nncron.ru/forums/viewforum.php?f=5&sid=c05059a63997d440bb7350c27f9348ac
Ну и сделал на его базе вполне работающий, как теперь принято говорить, пет-проект, скачанный десятки тысяч раз: https://optimum.asksoft.net
Думаю пока есть люди, которые пишут свои форт системы, списывать форт в утиль преждевременно.
Я не имею в виду списывать его в утиль (и в общем-то думаю точно так же - за счет того что форт сравнительно легко воплотить любому энтузиасту - всегда будут оставаться энтузиасты воплощающие его для собственных проектов). Речь только о том что пик популярности его явно был во времена когда компьютеры были стеснены в ресурсах, а людям хотелось писать быстрые программы но всё-таки не на ассемблере. Сейчас диспозиция поменялась - компьютеры быстрые а программисты совсем обленились :)
Форт на БК 0001 вроде бы вторым языком работал. Дальше его сомнительно, что применяли.
Его применяли и применяют время от времени - но обычно это ситуация когда какой-нибудь энтузиаст создаёт собственный ФОРТ для собственных целей (благодаря тому что это язык который сравнительно легко воплотить). Из довольно поздних таких "отпрысков" я помню например язык Factor созданный в начале 2000х для разработки игры.
Причём я о нём узнал т.к. мне показал его кто-то из посетителей решающих задачки на моём сайте - т.е. спустя 10-15 лет... Из чего делаю вывод что даже такие "боковые ветви" оставляют след в истории.
Другое дело что он точно ушёл из "мэйнстрима" и даже в эмбеддед-разработке не закрепился (тут думаю есть проблема в архитектуре с разделённой ROM/RAM памятью которая мешает прочувствовать пользу форта).
На БК-0010 исторически первым языком программирования был ФОКАЛ, который к ФОРТУ не имел никакого отношения. А единственным домашним компьютером с зашитым в ПЗУ Forth ЕМНИП был британский Jupiter ACE от создателей ZX Spectrum.
сам рядом не стоял но похоже пзу с фортом бля бк0010 были - но точно неясно, любительская ли это разработка или в недрах какого то из заводов рожденная, хотя, возможно, тоже по инициативе энтузиастов
а про Jupiter ACE точно! хотя пишут что он не завоевал популярности, в том числе из-за форта.
сам рядом не стоял но похоже пзу с фортом бля бк0010 были - но точно неясно, любительская ли это разработка или в недрах какого то из заводов рожденная, хотя, возможно, тоже по инициативе энтузиастов
Так на PDP-11 была не одна реализация Forth, создать ещё одну, с учетом особенностей БК-001х, было вопросом усидчивости. Была-ли она реализована в виде ПЗУ/картриджа? Этот вопрос лучше адресовать энтузиастам БК, я к примеру ничего подобного не слышал, но я могу и ошибаться.
а про Jupiter ACE точно! хотя пишут что он не завоевал популярности, в том числе из-за форта.
Домашний компьютер без поддержки графики, пусть даже монохромной, в 1982? Вот это и было основной причиной его провала, покупать ZX80/81 на стероидах уже никто не хотел.
Не случайно Николай Дуров назвал язык виртуальной машины телеграм-блокчейна Fift.
Во‑первых сравнение с современными ему интерпретаторами на машинах со схожими скромными возможностями. Мы теперь понимаем почему так — он не парсит строки исходного текста по мере исполнения а готовит довольно оптимизированный код (интерпретируемый или нативный) заранее.
Не совсем так. Практически все интерпретаторы Basic, тех времен, ради экономии памяти токенизировали текст программы превращая команды бейсика в последовательность байтов, при исполнении которых интерпретатору не приходилось парсить код при исполнении. текста программы.
А когда мы делали просмотр текста программы командой LIST, то интерпретатор вынужденно делал обратную операцию, превращая токенезированый поток в текст для человека. Вот тут пример реализации команды LIST для MSX BASIC на Си
Побочным эффектом токенизации, кроме экономии памяти, было ускорение исполнения программы.
Более того, Вильнюсский Basic (ДВК, БК, УКНЦ) не интерпретировал текст программы, а компилировал его прямо в шитый код.
Из любопытного, вот тут показана реализация Qbasic на JavaScript, и объясняется принцип работы P-Code VM в который транслируется программа на Basic
Это верно, даже если вспомнить реализацию в ZX-спектрум, там ведь на самом деле даже прямо токены и вводились и эти токены (типа PRINT
) были в кодовой таблице. Так что пожалуй этот пассаж я недостаточно вдумчиво написал, не раскрывает различия. В идеале нужно брать пару реализаций с одной платформы и их сравнивать подробно. Ну и да, знатоки напомнят что изначально бейсик вообще компилируемым был создан :)
В биткойне и тоне фортовые языки, да и вообще, в блокчейнах стековые скрипт-машины в основном.
Первый Спутник, язык FORTH и немного о JIT-компиляции