Forum: Mikrocontroller und Digitale Elektronik Object Oriented Forth


von Christoph M. (mchris)


Angehängte Dateien:

Lesenswert?

Wahrscheinlich ist FORTH ein ziemlich exotisches Thema hier, aber ich 
probiere es trotzdem mal:
Für graphische Anwendungen wäre ein objektorientiertes Forth nicht 
schlecht.
Einen Grundlagenartikel zu einer Form der Objektorientierung gibt es 
hier:
https://vfxforth.com/flag/jfar/vol3/no3/article3.pdf

Die TU-Wien beschreibt die OO auch in einem kurzen Abschnitt für gforth:
https://www.complang.tuwien.ac.at/forth/gforth/Docs-html/Basic-Objects-Usage.html#Basic-Objects-Usage
Wenn man gforth auf Ubuntu installiert, kann man es mit
1
include objects.fs

laden.

Die Idee des ganzen ist, das LCD des angehängten PiPico Boards in Forth 
zu programmieren.

von Oliver S. (oliverso)


Lesenswert?

Christoph M. schrieb:
> Für graphische Anwendungen wäre ein objektorientiertes Forth nicht
> schlecht.

Ganz bestimmt ;)

Oliver

von Hannes J. (pnuebergang)


Lesenswert?

Christoph M. schrieb:
> Für graphische Anwendungen wäre ein objektorientiertes Forth nicht
> schlecht.

Und deine Frage ist jetzt?

von Christoph M. (mchris)


Lesenswert?

>Und deine Frage ist jetzt?
Es scheint so zu sein, dass es keinen Standard für ein objekorientiertes 
Forth gibt. Der Syntax im geposteten Artikel-Link oben und im Link zur 
Uni-Wien ist unterschiedlich.

Ich will ein einfache Möglichkeit, Objekte schnell zu definieren und 
darzustellen, wie z.B.
1
     50 circle heap-new constant my-circle
2
     100 100 my-circle draw

aus
https://www.complang.tuwien.ac.at/forth/gforth/Docs-html/Basic-Objects-Usage.html#Basic-Objects-Usage

Wobei mir die Zeile
1
     50 circle heap-new constant my-circle

nicht ganz klar ist und umständlich erscheint (was soll die 50 auf 
"heap-new constant" würde ich auch gerne verzichten.

von Thorsten S. (thosch)


Lesenswert?

Diese Stack-Orientierung mit UPN muß man aber wirklich mögen und 
wollen...

Ich hielt Forth immer für ein Relikt aus den Anfängen der Computerei, 
aus der Not der Ressourcenknappheit auf den damaligen Systemen heraus 
geboren.
Hätte nicht gedacht, daß sich heute noch Jemand damit beschäftigt.

: Bearbeitet durch User
von Thomas W. (datenreisender)


Lesenswert?

Das war damals (1983) schon sehr progressiv, denk auch an Smalltalk (die 
beruehmte Implementierung Smalltalk-80) oder auch Lisp (Emacs, auch ca. 
1980). Die RPN (reverse polish notation) fand ich schon damals 
antiquiert, aber viele Ingenieure schworen darauf (der Uebergang vom 
Rechenschieber zum Taschenrechner war wohl traumatisch fuer sie).

Heute ist es natuerlich schoen, dass Du fuer sehr wenig Geld (und 
elektrische Leistung) Rechenleistung und Speicherplatz bekommst von 
denen man damals noch nicht einmal Traeumen konnte.

Weisst Du ob es ein Entwicklungssystem fuer Forth gibt?

von Norbert (der_norbert)


Lesenswert?

Thomas W. schrieb:
> Das war damals (1983) schon sehr progressiv,

Müsste schon irgendwann in den Siebzigern gewesen sein. Ich habe hier 
noch ein deutsches Forth Handbuch von 1982 liegen (E.Floegel).
Auch damals lagen wir schon ein Jahrzehnt mit solchen Dingen zurück.

Im Übrigen würde ich sagen, Forth ist das Entwicklungssystem.
Und so kann man's bekommen:
1
apt install gforth

von Thomas W. (datenreisender)


Lesenswert?

Christoph M. schrieb:
>>Und deine Frage ist jetzt?
> Es scheint so zu sein, dass es keinen Standard für ein objekorientiertes
> Forth gibt. Der Syntax im geposteten Artikel-Link oben und im Link zur
> Uni-Wien ist unterschiedlich.

Es gibt kein Forth Standard. Es gibt ein paar Standard-Token, aber schon 
die Ausgabe ist implementierungsabhaengig. Und dann kannst Du eigene 
Dictionaries definieren. It's the beauty of it.

von Harald K. (kirnbichler)


Lesenswert?

Christoph M. schrieb:
> Wahrscheinlich ist FORTH ein ziemlich exotisches Thema hier, aber ich
> probiere es trotzdem mal:

Mein erster Computer* wurde in Forth programmiert. Ein 
graphikorientiertes Forth hab' ich dann auch noch auf einem anderen 
Computer ausprobiert ... und das hat mir als Begegnung mit dieser 
Write-Only-Sprache völlig gereicht.

Wenn man mit einem HP-Taschenrechner sozialisiert wird, also die 
Gehirnwindungen früh genug entsprechend verbogen werden, kommt man mit 
stackorientierten Programmiersprachen sicherlich bestens zurecht und 
kann beispielsweise auch in PostScript tolle Dinge anstellen.

Wenn aber nicht ...

<Pedanterie> Syntax ist weiblich. </Pedanterie>


*) Jupiter ACE. Z80, 3 kB RAM, davon grob 900 Byte für Programme und 
Daten nutzbar. Forth-Interpreter in 8 kB ROM, der Quelltext gleich in 
Tokens übersetzte (und damit mit 900 Byte doch etwas mehr möglich machte 
als ein simples "hello world").

von Thomas W. (datenreisender)


Lesenswert?

Norbert schrieb:

> Im Übrigen würde ich sagen, Forth ist das Entwicklungssystem.
> Und so kann man's bekommen:
>
1
apt install gforth

Ja, und LSE ist Standard auf OpenVMS/VAX, die seit 2000 nicht mehr 
weiter entwickelt wird.

Ich meinte etwas Neues, z.B. VSCode- oder Eclipse-basiert?

von Oliver S. (oliverso)


Lesenswert?

Christoph M. schrieb:
> Wobei mir die Zeile1     50 circle heap-new constant my-circle
>
> nicht ganz klar ist und umständlich erscheint (was soll die 50 auf
> "heap-new constant" würde ich auch gerne verzichten.

Ich habe ja nun wirklich keine Ahnung von Forth, aber das, was die da 
schreiben, klingt ziemlich sinnvoll:
1
 Now we can create a circle on the heap (i.e., allocated memory) with:
2
3
      50 circle heap-new constant my-circle
4
heap-new invokes construct, thus initializing the field circle-radius with 50. We can draw this new circle at (100,100) with:
5
6
     100 100 my-circle draw

Oliver

von Vanye R. (vanye_rijan)


Lesenswert?

> Für graphische Anwendungen wäre ein objektorientiertes Forth nicht
> schlecht.

Darueber kann man natuerlich geteilter Meinung sein, aber ich meine doch 
das HP das vor 30Jahren fuer den HP48SX erfunden hat.

Vanye

von Christoph M. (mchris)


Lesenswert?

Oliver S. (oliverso)
30.10.2025 09:45
>Ich habe ja nun wirklich keine Ahnung von Forth, aber das, was die da
>schreiben, klingt ziemlich sinnvoll:
> Now we can create a circle on the heap (i.e., allocated memory) with:

Ah, jetzt ist es klarer.
Ich hätte gerne so einen Syntax:
1
20 10 "mytext" textoutput 
2
"hallo" mytext
3
10 delay
4
"nix" mytext

Das soll ein Text-Output Object an der Position 20,10 kreieren und dann 
erst "hallo" und danach "nix" dahin schreiben. Was haltet ihr von diesem 
Syntax?

von Norbert (der_norbert)


Lesenswert?

Thomas W. schrieb:
> Ich meinte etwas Neues, z.B. VSCode- oder Eclipse-basiert?

Ich weiß auch nicht wie's passieren konnte,
aber gerade fiel mir sofort Ardu-Forth ein,
unmittelbar gefolgt von Forthuino.

von Hannes J. (pnuebergang)


Lesenswert?

Christoph M. schrieb:
> Was haltet ihr von diesem
> Syntax?

Deine Entscheidung. Wenn die Forth Syntax und Semantik deines Forth es 
her geben bau es dir genau so. Du bist dein eigener König in deinem 
eigenen Forth-Königreich.

Das war in Forth schon immer so. Zuerst baut man sich eine DSL, mit der 
DSL löst man sein Problem.

: Bearbeitet durch User
von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Hannes J. schrieb:
> Das war in Forth schon immer so. Zuerst baut man sich eine DSL, mit der
> DSL löst man sein Problem.
Das ist für viele, die in Forth reinschnuppern anfangs recht verstörend, 
ebenso wie die UPN.

Einer meiner Ausbilder sagte mal recht salopp:
In anderen Sprachen (er meinte in Hauptsache C und Pascal) muss man das 
"Problem" solange modifizieren und beschneiden, bis man es in der 
Sprache abfassen kann.
In Forth verändert man die Sprache solange, bis sie die Problemstellung 
vollständig widerspiegelt.

: Bearbeitet durch User
von Johann L. (gjlayde) Benutzerseite


Lesenswert?

In anderen Sprachen fügt man einfach eine neue Funktion hinzu, zum 
Beispiel zum Zeichen eines Kreises. Wenn das in Forth bereits als 
Spracherweiterung gilt, dann sieht man daran die "Höhe" dieser 
Hochsprache.

von Christoph M. (mchris)


Lesenswert?

Hannes J. (pnuebergang)
30.10.2025 10:12
>Deine Entscheidung. Wenn die Forth Syntax und Semantik deines Forth es
>her geben bau es dir genau so. Du bist dein eigener König in deinem
>eigenen Forth-Königreich.

Ich denke, du liegst falsch. Schau dir den Syntax meines Beispiels noch 
mal genau an.

von Hannes J. (pnuebergang)


Lesenswert?

Christoph M. schrieb:
> Hannes J. (pnuebergang)
> 30.10.2025 10:12
>>Deine Entscheidung. Wenn die Forth Syntax und Semantik deines Forth es
>>her geben bau es dir genau so. Du bist dein eigener König in deinem
>>eigenen Forth-Königreich.
>
> Ich denke, du liegst falsch. Schau dir den Syntax meines Beispiels noch
> mal genau an.

Wie? Ich liege falsch dass das deine Entscheidung ist? Na dann, wessen 
Entscheidung soll es denn sein? Ach egal, wenn du nicht machen willst 
was du selber willst dann lass es halt.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Johann L. schrieb:
> In anderen Sprachen fügt man einfach eine neue Funktion hinzu, zum
> Beispiel zum Zeichen eines Kreises.

In den anderen Sprachen ist exakt definiert, wie eine Funktion aufgebaut 
wird, wie Anweisungen auszusehen haben.
C hat irgendwas um Hundert Schlüsselworte.
Rigide Syntaxregeln.

Forth hat nichts davon.
Forth kennt nur Worte.
Diese Worte werden (meist) durch Whitespaces voneinander getrennt.
Das war es schon an Syntaxregeln.

Jedes Wort ist jederzeit redefinierbar, also auch mitten im laufendem 
Betrieb.

Also, ja, es wird die Sprache selber verändert. Das ist das normale 
Vorgehen wenn man mit einem Forth System arbeitet. z.B. das hinzufügen 
von spezialisierten Compilern und Interpretern.

Der Streit ob Forth nun eine Hochsprache ist, wird seit Jahrzehnten 
geführt.
Ich sage:
Der Punkt ist falsch, die Frage ist falsch, der Gedanke ist falsch, die 
Annahme ist falsch.
Forth ist eher eine Philosophie, als eine Sprache.
Forth ist eher ein System, als eine Sprache.

: Bearbeitet durch User
von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Arduino F. schrieb:
> Forth ist eher eine Philosophie, als eine Sprache.

Ja, ich habe den Link auf das Forth-Manifesto im Transputer Thread 
gesehen.

300+ Seiten, die man sich erst mal reinziehen muss, um die Hirnwindungen 
forthkompatibel zu bekommen.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Johann L. schrieb:
> um die Hirnwindungen
> forthkompatibel zu bekommen

Ja!
Das ist ein Projekt.
Glaube auch nicht, dass das es jeder bis in die Komfortzone schafft.
Vorbildung in anderen Sprachen dürfte da eher hinderlich, als hilfreich, 
sein

von Oliver S. (oliverso)


Lesenswert?

Arduino F. schrieb:
> Glaube auch nicht, dass das es jeder bis in die Komfortzone schafft.

Nachdem die Sprache im Pleistozän der Programmiersprachen ersonnen 
wurde, und seit dem ein scheintotes Dasein fristet, wirds wohl überhaupt 
niemand überhaupt versuchen.

Oliver

von Christoph M. (mchris)


Lesenswert?

Hat jemand von euch das obige Pico2_LCD_096 Board schon mal ausprobiert? 
Welche Programmiersprache nutzt ihr?

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.