2010-07-08 10 views
23

Ich bin auf der Suche nach einem neuen System , das die Spieleentwicklung auf einer oder mehreren Retro-Konsolenplattformen erleichtern soll. Ich bin so etwas wie ein Forth-Anfänger und brauche deine Hilfe, um zu entscheiden, von welcher Forth-Codebasis aus portiert werden soll.Welche Forth Portierung von?

Ich bin grundsätzlich auf der Suche nach den Vor-und Nachteile der einzelnen Forths gegeneinander. Ich habe die Quelle zu JonesFORTH ebenso gelesen wie Lob und Kritik dazu, und Diskussionen über ANS her, und habe mich leider ziemlich verwirrt zurückgelassen. Die Forth-Community scheint nach dem, was ich sagen kann, ziemlich brutal in der Frage der Einhaltung von Standards aufgeteilt zu sein, mit sehr guten Argumenten beider Lager, warum der Standard sowohl ein gutes als auch ein schreckliches Ding ist. Ich kann jedoch keinen guten praktischen Ratschlag darüber finden, was genau der Standard ändert, abgesehen von dem allgemeinen Gefühl, dass es die Dinge komplizierter und schwächer macht, als sie vielleicht sein müssen.

Ich hoffe, die Entwicklung für Programmierer und Hobbyisten, die derzeit durch die Aussicht auf Entwicklung in Assembly oder C erschreckt sind, zu erleichtern, also lehne ich mich einem einfacheren Forth zu, aber ich weiß wirklich nicht genug über Forth noch eine fundierte Entscheidung zu treffen.

Antwort

6

Ich bin ein bisschen wo du gerade bist. Ich habe eine Weile auf Forth gelesen und denke auch, dass es viel Potenzial hat - vielleicht auch für das Scripting. Ich bin jedoch nirgends in der Nähe einer Autorität, aber hier sind meine Gedanken.

Zunächst scheint Forth die ultimative programmierbare Programmiersprache zu sein - sogar mehr als Lispeln. Zu diesem Zweck bin ich mir nicht sicher, wie viel C oder Assembler Sie programmieren müssen. Ich habe mich mehr auf die Entwicklung von Vokabularen in Forth selbst konzentriert. Schließlich soll es so verwendet werden.

Zweitens, von den Implementierungen, die ich versucht habe, mag ich Gforth und Pforth die besten.

Welche verwenden Sie?

Schließlich ist hier eine Liste von Online-her Lesen ich entdeckt habe:

  • 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
  • Haben auch Sie irgendwelche anderen?

    4

    Ein grundlegendes Forth-System ist sehr klein und kann schnell implementiert werden. Ich denke, die folgende Seite wird für Sie sehr nützlich sein: "". Es ist ein lineares Tutorial zum Bootstrapping eines Forth-Systems!

    Stellen Sie sicher, dass Sie die definierenden Wörter (Wörter, die zur Kompilierzeit ausgeführt werden) implementieren.Hier kommt die Kraft von Forth her; macht es wirklich erweiterbar.

    Ich habe es nicht wirklich versucht, aber ich habe mich einmal für bigFORTH entschieden, da es eines der wenigen Forths mit einer Open-Source-Lizenz ist. Es wird auch aktiv gepflegt; Zum Beispiel gab es Anfang dieses Jahres eine Veröffentlichung.

    Ich habe a set of annotated links about Forth in den letzten Jahren gesammelt. Einige davon sind schwer zu finden.

    In Bezug auf die Normen sprechen: Das ist ein 20 Jahre ist alt Diskussion. Ich denke, dass es wichtiger ist, etwas statt zu reden, um tatsächlich zu tun: implementieren Software, bietet Killer Beispiele, Dokumentation schreiben, lädt andere zur Teilnahme usw. Charles Moore auf, da bewegt hat und Forth chips, machineForth und ColorFORTH getan. Wenn Sie in der kommentierten Linkliste nach "machineForth" und "ColorFORTH" suchen, können Sie interessante Artikel und Statements finden. Charles Moore hat jetzt auch eine blog.

    2

    Ich empfehle die Jagd auf eForth, die ein Ting schrieb. Art einer modernen Figur in gewisser Hinsicht. Er hat einen Kernel in C geschrieben, aber eForth Kernel/Systeme wurden bereits auf viele Plattformen portiert/cpus haben meist Assembly Kernel/Cores. Aber da ist dieses coole Kind namens Factor. Es begann als "nur für Spiele" und landete in einer wilden und lustigen Ecke der Programmiersprache Welt

    2

    Eine Sache, die Sie vielleicht als einen ersten Schritt versuchen möchten, ist ein Forth-Interpreter in einer höheren Sprache wie schreiben Java, C++, Python usw. Es fehlen die Hauptvorteile eines Forth auf Maschinenebene: Geschwindigkeit und Kompaktheit, aber wenn Sie Ihre eigene virtuelle Maschine schreiben, werden Sie die verschiedenen Arten von Threading usw. kennenlernen in verschiedenen Geschmacksrichtungen von Forth.

    Die meisten neuen Forth-Implementierungen werden grundsätzlich gestartet, indem man sich die CPU als virtuelle Maschine ansieht - eine explizite virtuelle Maschine also nicht zu verschwenden, wenn es darum geht, von einer interpretierten Version in eine Maschinencodeversion zu wechseln. Außerdem haben Sie einen Blueprint Ihres eigenen Codes zum Querverweis beim Erstellen der Maschinenversion.

    Wenn Sie jedoch wirklich, wirklich, mit Maschinencode zufrieden sind, können Sie wahrscheinlich den obigen Schritt überspringen und nur einen der Standards direkt portieren.

    Soweit Normen, würde ich einige Standard wählen, aber bleiben minimal, mit zu beginnen. Wenn Sie über einen Standard hinausgehen müssen, wenn es um andere Dinge als benutzerdefinierte Wörter geht, können Sie immer dazu kommen - entweder Standard oder Nicht-Standard -, wie es die Implementierung erfordert. Eines der coolsten Dinge an Forth ist, dass es so einfach ist, dass man den gesamten Compiler einfacher neu schreiben kann, als man etwas von dem Forth-Code, auf dem man läuft, umschreiben kann, lol.

    1

    Gameduino, eine Spielentwicklungsplattform auf Arduino, hat eine minimale vierte CPU (J1 her) innen ausgeführt.

    Zusätzlich zu dem Verilog Quellcode von J1 forth gibt es auch einen PC-Simulator, einen Compiler geschrieben in google go, here von Serge Zaitsev.

    J1 ist bereits in Xilinx FPGA implementiert. Es ist auch möglich, die J1-CPU an jeder modernen MCU zu "simulieren".

    0

    In Bezug auf ANSI-Kompatibilität können Sie, wenn Sie Forth für Ihre eigene Anwendung verwenden, alles auslassen, was Sie nicht brauchen, oder sogar Dinge ändern, die Sie nicht mögen. Indirekte Threaded-Threads gehören zu den kompaktesten auf 16-Bit-Prozessoren (nicht mehr auf 64-Bit-Prozessoren). Das ist wahrscheinlich der richtige Weg.

    Die Familie der indirekten Threaded Forth genannt FIG-Forth sind immer noch erzieherisches Material. jonesforth ist ein Beispiel für Forth's, die in der gleichen Richtung weitergehen. Ich selbst bin der Autor von ciforth, das eine der Inspirationen für jonesforth und yourforth war, das ist wahrscheinlich die Zeit wert, weil es versucht, die Gründe dafür zu erklären, Dinge so zu gestalten, wie sie sind. Ting's Eforth (überall) und Camelforth sind auch gute Beispiele. Gforth mit seinem Umweg über c und seine Masse ist weniger wertvoll für Sie.

    Ein allgemeiner Hinweis, wenn Sie ein Codewort (in Assembler, nicht Forth, die unterste Ebene codiert) benötigen, sind Sie besser dran, es zu stehlen, dann wieder zu implementieren. Code für ein sagen 32 Bit von 16 Bit teilen auf allen außer den meisten obskuren Prozessoren wird irgendwo gefunden werden. Sammle also ein paar Forths ein, die auf dem Prozessor implementiert sind, den du benutzt.

    Sie müssen einen Prozessor auswählen und das wird Sie ziemlich einsperren Dann können Sie nur einen der Camelforth verwenden (weil es für die meisten gängigen Prozessoren da ist) und starten Sie mit Ihrer Anwendung. Wenn Sie nicht ganz glücklich sind, können Sie es ändern, um Ihr eigenes Forth zu werden. Wenn Sie auf dem 6809 oder dem Renesas-Prozessor oder einem 16-Bit-i86 arbeiten, können Sie mein ciform als Ausgangspunkt verwenden.