С какого Форта начать портирование?

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

Я в основном ищу достоинства / недостатки конкретных Фортов по сравнению друг с другом. Я прочитал исходный текст JonesFORTH, а также похвалу и критику в его адрес. , и обсуждение ANS, и, к сожалению, остались довольно запутанными. Судя по тому, что я могу сказать, сообщество Forth, кажется, довольно сильно разделено по вопросу соответствия стандартам, и оба лагеря приводят очень веские аргументы относительно того, почему стандарт является одновременно и хорошей, и ужасной вещью. Однако я не могу найти хороший практический совет о том, что именно изменяет стандарт, кроме общего смысла, что он делает вещи более сложными и раздутыми, чем они, возможно, должны быть.

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


person Tyr    schedule 08.07.2010    source источник


Ответы (7)


Я как бы там, где ты сейчас. Я некоторое время случайно читал о Forth и также думаю, что у него есть большой потенциал - может быть, и для написания сценариев. Впрочем, я далеко не авторитет, но вот мои мысли.

Во-первых, Форт кажется совершенным программируемым языком программирования — даже больше, чем Лисп. С этой целью я не уверен, сколько кода на C или ассемблере вам потребуется. Я больше склонялся к развитию словарей в самом Форте. Ведь именно так его и нужно использовать.

Во-вторых, из опробованных мной реализаций мне больше всего нравятся Gforth и Pforth.

Какие из них вы используете?

Finally, here is a list of online forth reading I've discovered:

  • Начнем дальше
  • Думаем дальше
  • Учебник Forth
  • Язык Forth
  • Учебники Forth
  • Учебное пособие по Pforth
  • Руководство по Gforth
  • Начать дальше
  • WikiForth
  • OLPC Forth
  • Давайте создадим компилятор
  • Вы нашли другие?

    person clay    schedule 15.07.2010

    Базовая система Forth очень мала и может быть быстро реализована. Я думаю, что следующая страница будет очень полезна для вас: "иногда минимальный компилятор Forth и учебник для систем Linux/i386". Это линейное руководство по начальной загрузке Форт-системы!

    Обязательно реализуйте определяющие слова (слова, выполняемые во время компиляции). Вот откуда берется сила Форта; делает его действительно расширяемым.

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

    За последние несколько лет я собрал набор аннотированных ссылок о Forth. Некоторые вещи трудно найти.

    Что касается разговоров о стандартах: это дискуссия 20-летней давности. Я думаю, что важнее действительно что-то делать, а не болтать: внедрять программное обеспечение, предоставлять потрясающие примеры, писать документацию, приглашать других к участию и т. д. С тех пор Чарльз Мур пошел дальше и сделал чипы Forth, machineForth и ColorFORTH. Если вы будете искать "machineForth" и "ColorFORTH" в аннотированном списке ссылок, то сможете найти несколько интересных статей и утверждений. У Чарльза Мура теперь также есть блог.

    person Peter Mortensen    schedule 20.07.2010

    В качестве первого шага вы, возможно, захотите попробовать написать интерпретатор Forth на каком-нибудь языке более высокого уровня, таком как Java, C++, Python и т. д. В нем будут отсутствовать основные преимущества Forth машинного уровня: скорость и компактность, но Написав свою собственную виртуальную машину, вы получите представление о различных типах потоков и т. д., используемых в различных разновидностях Forth.

    Большинство новых реализаций Forth в основном начинают с рассмотрения ЦП как виртуальной машины в любом случае, поэтому создание явной виртуальной машины не является пустой тратой знаний, когда приходит время перейти от интерпретируемой версии к версии машинного кода. Кроме того, у вас будет план вашего собственного кода для перекрестных ссылок при создании машинной версии.

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

    Что касается стандартов, я бы выбрал какой-то стандарт, но для начала остался бы минимальным. Если вам нужно выйти за рамки стандарта с точки зрения вещей, отличных от определяемых пользователем слов, вы всегда можете двигаться к этому — стандартному или нестандартному — в зависимости от потребностей реализации. Одна из самых крутых особенностей Forth заключается в том, что он настолько прост, что переписать весь компилятор проще, чем переписать часть кода Forth, который вы будете на нем запускать, лол.

    person TechNeilogy    schedule 28.07.2010

    Я рекомендую поискать eForth, — написал Тинг. Эдакий современный фиг в некотором роде. У него есть ядро, написанное на C, но ядра/системы eForth уже портированы на многие платформы/процессоры, большинство из которых имеют сборочные ядра/ядра. Тем не менее, есть такая крутая штука под названием Factor. Все началось как «только для игр», а закончилось диким и веселым уголком мира языков программирования.

    person jsl4tv    schedule 21.07.2010

    Gameduino, платформа для разработки игр на основе Arduino, имеет минимальный четвертый процессор (J1 четвертый), работающий внутри. .

    В дополнение к исходному коду J1 на языке Verilog существует также симулятор для ПК. , компилятор, написанный на google go, здесь Сергея Зайцева.

    J1 уже реализован в Xilinx FPGA. Также возможно «имитировать» ЦП J1 на любом современном микроконтроллере.

    person Zhe Hu    schedule 19.10.2013

    Что касается совместимости с ANSI, если вы используете Forth для своего собственного приложения, вы можете опустить все, что вам не нужно, или даже изменить то, что вам не нравится. Форты с непрямым потоком являются одними из самых компактных на 16-битных процессорах (не больше на 64-битных). Так что это, вероятно, путь.

    Семейство Фортов с непрямой резьбой, называемых FIG-Forth, по-прежнему является учебным материалом. jonesforth — пример Форта, который действует в том же духе. Я сам являюсь автором ciforth, который был одним из источников вдохновения для jonesforth и yourforth, который, вероятно, стоит вашего внимания, потому что он пытается объяснить причины создания вещей такими, какие они есть. Eforth Тинга (повсеместно) и Camelforth также являются хорошими примерами. gforth с его обходом через c и его массой менее ценны для вас.

    Один общий совет, если вам нужно кодовое слово (закодированное на ассемблере, а не на Форте, самый низкий уровень) лучше его украсть, чем переделать. Код, скажем, 32-битного на 16-битное деление на всех процессорах, кроме самых малоизвестных, обязательно где-нибудь можно найти. Так что соберите несколько Фортов, реализованных на используемом вами процессоре.

    Вы должны выбрать процессор, и это в значительной степени заблокирует вас. Затем вы можете просто использовать один из Camelforth (потому что он есть для большинства популярных процессоров) и начать с вашего приложения. Если вы не совсем довольны, вы можете изменить его, чтобы он стал вашим собственным Фортом. Если у вас процессор 6809 или Renesas, или 16-битный i86, вы можете использовать мой ciforth в качестве отправной точки.

    person Albert van der Horst    schedule 09.02.2015

    Я знаю, что это старый вопрос, но для протокола, еще один замечательный четвертый, с которого можно начать, - это «ff» (Феликс четвертый).

    Версия сборки, написанная на x86 (NASM) и ARM (gas) здесь.

    А более свежие версии написаны на ассемблере, созданном в самом четвертом от создателей собственная страница.

    person Kyuvi    schedule 18.01.2019