Forum: Compiler & IDEs forth auf Python3.x


von Rainer V. (a_zip)


Lesenswert?

Hallo, ich will unter Py auf Ubuntu einen Forth-Compiler für diverse 
AVR-Controller aufsetzen. Hatte zuerst den Compiler von G.Henrichs 
gefunden, der aber nicht das macht, was mir vorschwebt. Zumal man den 
Source-Code nur erahnen kann und es eine Window-Applikation ist. Bevor 
ich alle Räder neu erfinde, frage ich mal, ob jemand sowas schon mal 
versucht hat. Ich bin mir darüber im Klaren, das dies nicht das Forum 
der ersten Wahl für mein Anliegen ist, aber dennoch...
Danke und Gruß Rainer

von Olaf (Gast)


Lesenswert?

> Bevor ich alle Räder neu erfinde, frage ich mal, ob jemand sowas schon
> mal versucht hat.

In den Elrads von 1983/84 war ein Forth-Compiler in Basic drin. Den 
kannst du vielleicht adaptieren. Das scheint mir damals aehnlich 
sinnvoll gewesen zu sein wie dein aktuelles Vorhaben. :-)

Ansonsten waere noch zu erwaehnen das ich vor vielen Jahren einen 
solchen Compiler fuer die ST6 geschrieben habe der direkt Assembler 
geliefert hat. Das hatte damals noch eine geringe Berechtigung, aus 
heutiger Sicht wuerde ich das aber auch nicht mehr anstreben weil 
Projekte heute zu gross und umfangreich geworden sind um in Forth noch 
verstaendlich umsetzbar zu sein, und den eigentlichen Vorteil von Forth, 
auf der Zielhardware zu entwickeln, willst du ja dediziert nicht und ist 
heute dank moderner Debugger und schnellen Compiler auch nicht mehr 
notwendig.

Olaf

von c-hater (Gast)


Lesenswert?

Rainer V. schrieb:

> Hallo, ich will unter Py auf Ubuntu einen Forth-Compiler für diverse
> AVR-Controller aufsetzen.

Was soll das denn für einen Sinn haben? AVR als Zielsystem ist wegen 
sein Hardard-Architektur denkbar ungeeignet für Forth. Und: der einzige 
nennenswerte Vorteil von Forth ist die Enwicklung direkt auf dem 
Zielsystem, aber gerade das willst du nicht, sondern einen Crosscompiler 
bauen. Und das auch noch mit einer Scriptsprache...

> Hatte zuerst den Compiler von G.Henrichs
> gefunden, der aber nicht das macht, was mir vorschwebt. Zumal man den
> Source-Code nur erahnen kann und es eine Window-Applikation ist.

Aha. Du willst also garnix selber machen, sondern einfach nur den 
nutzlosen Schwachsinn, der dir vorschwebt, fertig vorgesetzt bekommen. 
Damit wäre der letzte denkbare Sinn dieses Projekts (der Lerneffekt des 
Selbermachens, der dich dann zwingend zu o.g. Einschätzungen führen 
würde) auch noch den Bach runter...

von Theor (Gast)


Lesenswert?

Da neben Python auch Basic als Compilersprache gefordert bzw. empfohlen 
wurde, werfe ich mal FORTH selbst in den Ring. Stichwort: 
Meta-Compilation. Also ein FORTH-Compiler in FORTH selbst.

Da gibts so ein paar Treffer, meine ich, von Charles Moore selbst, aber 
auch von anderen bekannten Autoren. (Falls Du nicht fündig wirst, schaue 
ich mal bei mir nach).

von Theor (Gast)


Lesenswert?

Noch eine Bemerkung zu Olafs Aussage:

> "... weil Projekte heute zu gross und umfangreich geworden sind um in Forth noch 
verstaendlich umsetzbar zu sein ..."

Ich will nicht grundsätzlich abstreiten, dass große Projekte in FORTH 
möglicherweise ein Problem darstellen. Allerdings hängt es meiner 
Meinung nach vom Stil, von der Denkweise ab, in welchem Grad das der 
Fall ist. Interessant scheint mir das Buch "Thinking FORTH" zu dem 
Thema.

von Theor (Gast)


Lesenswert?

Ups. Da habe ich "Py" gelesen und "Python" verstanden. Sorry. Ich hoffe 
das macht nichts.

von Theor (Gast)


Lesenswert?

Doppel-Oooops und Doppel-Entschuldigung. Da steht ja Python in der 
Überschrift. Meine Güte. :-)

von Rainer V. (a_zip)


Lesenswert?

Hallo, danke für die vielen Antworten. Ich bitte jetzt erst mal um 
Entschuldigung, da es sich hier um eine Stammtisch-, also eine echte 
Schnaps-Idee handelt. Trotzdem habe ich ein wenig gesucht und allerhand 
interessante Sachen entdeckt.

Olaf schrieb:
> Olaf

Ja, Olaf, ungefähr in dieser Zeit hatte ich erste Berührung mit Forth 
auf meinem Atari. War natürlich nicht sehr tief...also eher 
Spielerei...ich liebe aber Spielerein.

Theor schrieb:
> Doppel-Oooops und Doppel-Entschuldigung. Da steht ja Python in der
> Überschrift. Meine Güte. :-)

Und ja, Theor, vielleicht nicht ganz so hektisch :-) Kenne Forth 
leidlich, habe aber nie wirklich was damit machen können! Wurde 
zumindest in meinem "professionellen" Umfeld immer als exotisch und 
unbrauchbar abgelehnt.
Ich weiß, dass es diverse Metacompiler für diverse Platformen gibt und 
zumindest der Sage nach macht man in Forth ja alles problemlos in Forth 
selbst.
Also dachten wir uns, in Python ein Forth zu implementieren, mit dem man 
dann Code für "beliebige" Controller erzeugen kann. Habe mittlerweile 
einige Forth-Grundstrukturen in Python gefunden und denke, dass ich auf 
der Basis mal ein Forth-System hochziehen werde. Die fertigen 
Forth-Systeme reizen mich da weniger...selbst machen ist angesagt...
Und natürlich sind wir ein Rentnerverein, der sonst fast nichts zu tun 
hat.
Gruß Rainer

von Thomas H. (flaretom)


Lesenswert?

Hi,

@Rainer V.
Deine Anfrage klingt, als suchts Du einen Crosscompiler. Das ist bei 
Forth aber absolut unnötig. Normalerweise reicht ein minimaler Kernel in 
C, der Rest ist in Forth selbst geschrieben. Gerade für kleine µC super 
einzusetzen. Allerdings ist Forth so anders als andere Sprachen, dass 
dauert ne Weile bis man in der "Forth-Denke" zu Hause ist.
Auch das Bottom-Up Programmieren ist nicht so verbreitet.
Forth macht aber Spaß!

Google "forth c"
http://www.softsynth.com/pforth
https://gist.github.com/lbruder/10007431

BG, Tom

von Rainer V. (a_zip)


Lesenswert?

Thomas H. schrieb:
> BG, Tom

Hi Tom, ja, das trifft es im großen und ganzen, aber erstens mag ich 
kein "C" und will mich da nimmermals auch nur einen Zentimeter 
einarbeiten. Sorry...
Und wenn mann erst mal eine Forth-Engine laufen hat, dann geht ja alles 
wie von selbst :-)
PForth habe ich mir auch schon angeschaut...ist mir aber zu bombastisch. 
Ein kleines System mit "Quit" und ein paar "primitiven" Worten unter 
Python schwebt mir vor. Und dann das Dictionary aufbauen. Und das 
"forthische" Denken habe ich schon irgenwie....Besitze übrigens den 
Zech...falls das irgend jemand was sagt..
Gruß Rainer

von Theor (Gast)


Lesenswert?

Rainer V. schrieb:
> [...]
> Theor schrieb:
>> Doppel-Oooops und Doppel-Entschuldigung. Da steht ja Python in der
>> Überschrift. Meine Güte. :-)
>
> Und ja, Theor, vielleicht nicht ganz so hektisch :-)
Versprochen! :-)

> Kenne Forth
> leidlich, habe aber nie wirklich was damit machen können! Wurde
> zumindest in meinem "professionellen" Umfeld immer als exotisch und
> unbrauchbar abgelehnt.
Gerüchteweise wird es immer noch verwendet - auch für grosse Projekte.

> Ich weiß, dass es diverse Metacompiler für diverse Platformen gibt und
> zumindest der Sage nach macht man in Forth ja alles problemlos in Forth
> selbst.
> Also dachten wir uns, in Python ein Forth zu implementieren, mit dem man
> dann Code für "beliebige" Controller erzeugen kann. Habe mittlerweile
> einige Forth-Grundstrukturen in Python gefunden ...

Ah. Magst Du da mal die Links posten? Finde ich interessant.


Rainer V. schrieb:
> Thomas H. schrieb:
>> BG, Tom
>
> [...]

> PForth habe ich mir auch schon angeschaut...ist mir aber zu bombastisch.
> Ein kleines System mit "Quit" und ein paar "primitiven" Worten unter
> Python schwebt mir vor. Und dann das Dictionary aufbauen. Und das
> "forthische" Denken habe ich schon irgenwie....Besitze übrigens den
> Zech...falls das irgend jemand was sagt..
> Gruß Rainer

Ronald Zech, ja, sagt mir was und habe ich. Leo Brodie gibts online.
Für Neuimplementierungen mag 
http://www.bradrodriguez.com/papers/moving1.htm interessant sein. 
Rodriguez ist ja auch ein bekannter Name in dem Feld.
(Ich vermute, dass Du schon das Netz abgegrast hast und Sachen wie 
forth.org auch bekannt sind).

von Vincent H. (vinci)


Lesenswert?

Ich checks nicht. Wie soll ein Forth System in Python Code für 
"beliebige" Controller erzeugen?

von Theor (Gast)


Lesenswert?

Vincent H. schrieb:
> Ich checks nicht. Wie soll ein Forth System in Python Code für
> "beliebige" Controller erzeugen?

Naja. Lach. Genau genommen ist das eine verkürzte Ausdrucksweise. Das 
darf man nicht wörtlich nehmen.
Natürlich wäre es reine Magie, wenn eine Software ohne Informationen 
über den Zielprozessor Code dafür erzeugen könnte.
Und da jeder Prozessor anders ist, Information also bei neuen 
Prozessoren hinzugefügt werden muss, kann ein bestimmter Stand dieser SW 
nur für einen begrenzten Satz an Prozessoren Code erzeugen.

Was gemeint ist, ist (denke ich) dass die Struktur der SW so abstrahiert 
ist, dass sich Information und spezifische Hilfsfunktionen über und für 
neue Prozessoren einfach und in einer vereinheitlichten Form hinzufügen 
lassen.

Eine ähnliche Aussage könnte man in Bezug auf C-Compiler machen. Und sie 
ist ebenso wenig wörtlich zu nehmen. "Ein C-Compiler der Code für 
beliebige Prozessoren erzeugen kann" ist aus den o.a. Gründen nicht 
möglich. Allerdings wird mittlerweile das Parsen, der Aufbau des 
Syntaxbaumes etc. von dem sogenannten "Front-End", dass den 
Maschinencode erzeugt, organisatorisch getrennt. Es muss also das 
Front-End "nur" erweitert resp. ausgetauscht werden.

So ist das zu verstehen.

von Markus F. (mfro)


Lesenswert?

Ich versteh' nicht, warum Python hier eine Rolle spielt.

Wenn's fertig ausgebrütet ist, ist's doch egal, wer ursprünglich das Ei 
gelegt hat - der erste Forth-Compiler wird dann in Forth neu gebaut.

Und da gibt's durchaus Fertiges für µC. Hier, z.B.: 
https://github.com/larsbrinkhoff/lbForth

von Rainer V. (a_zip)


Lesenswert?

Theor schrieb:
> (Ich vermute, dass Du schon das Netz abgegrast hast und Sachen wie
> forth.org auch bekannt sind).

Ja, sind bekannt...und gegen den Zech ist L.Brodie für mich keine 
Option, obwohl er Anfängern immer noch sehr zu empfehlen ist! ...aber 
egal...

Theor schrieb:
>> Ich checks nicht. Wie soll ein Forth System in Python Code für
>> "beliebige" Controller erzeugen?

Wie Theor schon richtig geschrieben hat, will ich die Forth-Maschine in 
Pyton aufsetzen und dort wird dann "beliebiger Code für beliebige 
Prozessoren" erzeugt. Stelle mir das augenblicklich noch so vor, dass es 
diverse Assembler-Vokabulare gibt, mit denen dann ein virtuelles System 
des Zielprozessors gebaut wird. Ob da dann wiederum ein Forth läuft oder 
nur lauffähiger Code erzeugt wird, hängt natürlich vom Zielprozessor ab. 
Noch AMForth auf Atmegas läßt kaum noch Raum für eigene Wörter, obwohl 
man wegen des modularen Aufbaus des Systems natürlich einiges Optimieren 
kann!
Python unter Linux habe ich erst vor einigen Monaten begonnen zu lernen 
und ich suche  halt "sinnvolle" Programmieraufgaben, um weiter in Py zu 
lernen/üben.
Ich kenne auch Zimmers Forth und das Visual-Forth...leider alles unter 
Windows und leider als "Visual" zwar beeindruckend, aber doch sehr 
bescheiden. Da sind die graphischen Möglichkeiten mit Py doch um einiges 
besser.
Danke für das Interesse an einer jecken Idee!
Gruß Rainer

Theor schrieb:
> Ah. Magst Du da mal die Links posten? Finde ich interessant.

...such einfach mal "Python" und "Forth"...ist wirklich interessant!

von mmacs (Gast)


Lesenswert?

Python ist schon insofern nah am Forth-ansatz, dass es eine virtuelle 
Stack-Maschine ist. Koennte interessant sein, aus Forth Python-Bytecode 
zu machen. Andersrum wäre es allerdings noch interessanter.

von Rainer V. (a_zip)


Lesenswert?

Hallo, habe gerade noch mal in der Th. reingeschaut, weil er noch nicht 
von der ersten Seite verschwunden ist und wundere mich, dass so viele 
für mich anregende Beiträge mit einem "-1" bewertet werden! Die eher 
interessanten Beiträge aber gar nicht. Wie kann man das verstehen??
Danke und Gruß Rainer
PS: habe mich jetzt erst mal wieder mit einer graphischen Oberfläche 
fürs Programm herumgeschlagen. Läuft aber mittlerweile und ich bin an 
der virtuellen Forth-Maschine.

von Leonard G. (leonardg)


Lesenswert?

Thomas H. schrieb:
> Hi,
>
> @Rainer V.
> Deine Anfrage klingt, als suchts Du einen Crosscompiler. Das ist bei
> Forth aber absolut unnötig. Normalerweise reicht ein minimaler Kernel in
> C, der Rest ist in Forth selbst geschrieben. Gerade für kleine µC super
> einzusetzen. Allerdings ist Forth so anders als andere Sprachen, dass
> dauert ne Weile bis man in der "Forth-Denke" zu Hause ist.
> Auch das Bottom-Up Programmieren ist nicht so verbreitet.
> Forth macht aber Spaß!
>
> Google "forth c"
> http://www.softsynth.com/pforth
> https://gist.github.com/lbruder/10007431
>
> BG, Tom


Wenn du Forth gut kannst und eventuell etwas Zeit hast kannst du im 
Telegram kanal der Skycoin mal schauen ob das was für dich ist, dort 
suchen sie fähige Leute.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.