2010-07-08 13 views
23

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

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

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

ответ

6

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

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

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

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

Наконец, вот список онлайн вперед чтения я обнаружил:

  • Starting Forth
  • Thinking Forth
  • Forth Primer
  • Forth Language
  • Forth Tutorials
  • Pforth Tutorial
  • Gforth Manual
  • Begin Forth
  • Forth Links
  • WikiForth
  • OLPC Forth
  • Lets Build a Compiler
  • Jones Forth
  • Вы нашли какие-либо другие?

    4

    Базовая система Forth очень мала и может быть быстро реализована. Я думаю, что следующая страница будет очень полезна для вас: «A sometimes minimal Forth compiler and tutorial for Linux/i386 systems». Это линейный учебник по загрузке системы Forth!

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

    Я на самом деле не пробовал, но однажды я обосновался для bigFORTH, так как это один из немногих Forths с лицензией с открытым исходным кодом. Он также активно поддерживается; например, в этом году вышел релиз.

    Я собрал a set of annotated links about Forth за последние несколько лет. Некоторые из них трудно найти.

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

    2

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

    2

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

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

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

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

    1

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

    В дополнение к исходному коду Verilog от J1 forth существует также симулятор ПК, составленный в google go, google go, here от Serge Zaitsev.

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

    0

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

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

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

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