Diskussion:Forth (Programmiersprache)

Letzter Kommentar: vor 4 Jahren von Johannnes89 in Abschnitt Vortrag

Der Inhalt einer früheren Version dieses Artikels wurde aus einem anderen Artikel hierher kopiert, siehe Versionsgeschichte und kopierte Version.


Oberon Bearbeiten

Ist Oberon nicht auch so eine All-In-One Lösung mit Betriebssystem? Also ist Forth in der Hinsicht doch nicht einzigartig.


Hab ich mich auch schon gefragt. Die Unterscheidung ist überaus künstlich, denn "ETH Oberon" ist ein integriertes System aus Betriebssystem, Sprache und Entwicklungsumgebung. Warum hier also Forth einzigartig sein soll, verstehe ich nicht... moderne Forth-Systeme ersetzen übrigens nicht mehr das Betriebssystem, damit ist Forth also auch einzeln erhältlich.--Kilessan 09:39, 28. Sep. 2007 (CEST)Beantworten

Abschnitt "Programmiersprache" Bearbeiten

Dieser Abschnitt kommt sehr "umgangssprachlich herüber. Ich erwarte in einem enzyklopädischen Text nicht zu lesen, daß ja UPN "gar nicht so 'kompliziert und unnatürlich'" sei... das ist erstens wertend und zweitens passt der gesamte Stil nicht. Sowas kann man in einem Text "UPN für Dummies" machen, aber nicht hier. Außerdem gibt es ja schon einen Artikel über UPN, also warum hier diese Pseudo-Einführung... der Querverweis reicht.--Kilessan 09:39, 28. Sep. 2007 (CEST)Beantworten

Toter Weblink Bearbeiten

Bei mehreren automatisierten Botläufen wurde der folgende Weblink als nicht verfügbar erkannt. Bitte überprüfe, ob der Link tatsächlich down ist, und korrigiere oder entferne ihn in diesem Fall!

--Zwobot 22:48, 29. Jan 2006 (CET)

Vorschlag zur Korrektur: * http://public.planetmirror.com/pub/apple2/images/utility/programming/graforth.dsk.gz (m.dermann 17.12.06)

Vorschlag 2 zur Korrektur: * http://lostclassics.apple2.info/downloads/?dl_cat=17 und auch http://www.doperoms.com/roms/apple_ii/GraFORTH%20(1981)(P.%20Lutus).zip.html (j.ron 24.06.10) (nicht signierter Beitrag von 78.35.149.12 (Diskussion | Beiträge) 12:06, 12. Apr. 2010 (CEST)) Beantworten

Ergänzungen? Bearbeiten

Bin kein Forth-Experte, lasse daher die Finger von dem Artikel, möchte aber vorschlagen:

- Hinweis auf PostScript als Forth-Derivat

- Erwähnung (schon zuvor angemerkt) von Oberon als "All-in-One"-System

- Link auf die ANSI-Standard-Seite http://burks.bton.ac.uk/burks/language/forth/dpans/dpans.htm

Ferner:

- Forth ist auch der Name eines Gewaessers in Schottland

- FORTH ist auch der Name eines groesseren Forschungsinstituts in Griechenland (www.forth.gr)

ASYST Bearbeiten

Was ist eigentlich aus ASYST geworden? http://cr4.globalspec.com/thread/11509/Where-is-the-program-ASYST-gone

Ich habe damit in den 90ern die Messdaten für meine Diss erfasst. Wurde von Keithley vertrieben.

Man konnte sich herrlich in einem Wust von Code verlieren :=)

Kurz darauf ist es wohl ausgestorben.... (nicht signierter Beitrag von WalNi (Diskussion | Beiträge) 16:21, 31. Dez. 2009 (CET)) Beantworten

Bytecode auf jedem Forth-System ausführbar? Bearbeiten

Zitat aus dem Artikel: Forth-Anwenderprogramme müssen hingegen nicht einmal neu kompiliert werden, der Bytecode ist unverändert auf jedem Forth-System ausführbar.
Meiner Meinung nach ist diese Aussage alles andere als korrekt. Ich habe mich allerdings schon seit über 10 Jahren nicht mehr mit Forth beschäftigt... Meines Wissens ist in aller Regel (d.h. mit Ausnahme von ganz trivialen Programmen) noch nicht einmal der Quellcode auf jedem Forth-System ausführbar, geschweige denn der Bytecode. Auf der anderen Seite wird sich der Schreiber wohl etwas dabei gedacht haben. Ich frage mich nur was? --michaelsy 09:41, 26. Mär. 2011 (CET)Beantworten

Wenn der Quellcode Funktionen benutzt die im Kern des Systems nicht vorhanden sind ist natürlich sofort Schluss. Eigentlich gibt es nur drei Bytecodes, nämlich das Laden einer Konstante, der Aufruf einer Forth-Funktion sowie der Aufruf einer nativen Funktion. Letztere sollten natürlich um die Vorteile von Forth ausspielen zu können nur im Kern bzw. Hardware-Libraries benutzt werden. Ein Forth-Programm lässt sich also als Laden von Konstanten und Aufrufen von Forth-Funktionen schreiben. Sofern die Kernfunktionen also an denselben Stellen im Forth-System drinstehen, kann das Programm direkt ausgeführt werden, ansonsten kann man die Adressen mappen, also das tun, was ein Linker tun würde. Für die Funktionen innerhalb des Programms passt es, solange das Programm an derselben Startadresse beginnt. -- Janka 10:23, 26. Mär. 2011 (CET)Beantworten
Das FORTH für den ZX81 enthält Maschinencode und ist deshalb an den Z80 gebunden. Natürlich benutzt es auch Funktionen des „eigentlichen“ Betriebssystems. Ich habe bereits darüber nachgedacht, das handgeschriebene disassemblierte Listing in die Commons zu stellen. -- wefo 19:57, 26. Mär. 2011 (CET)Beantworten
@Wefo - Jedes Forth-System enthält notwendigerweise nativen Maschinencode für die Maschine, auf der das Forth-System ausgeführt wird. Denn dieser Maschine muss ja erst einmal "beigebracht" werden, wie die virtuelle Forth-Maschine zu funktionieren hat. (Es sei denn, die Host-Maschine ist selbst ein System mit Forth-Prozessor) --michaelsy 07:53, 28. Mär. 2011 (CEST)Beantworten
@Janka - Es gäbe wohl noch einiges zu klären, bevor man weiterdiskutieren kann - z.B. was man unter "jedem Forth-System" verstehen möchte. Aber um es abzukürzen: Wie lautet Dein Fazit? Hältst Du die zitierte Aussage für gerechtfertigt oder nicht? --michaelsy 07:53, 28. Mär. 2011 (CEST)Beantworten

Die Frage, was "jedes Forth-System" ist, trifft wohl den Kern. Natürlich kann man die "virtuelle Forth-Maschine" implementieren, dazu auch das konkret gewünschte Anwenderprogramm und das dann auf einen EPROM brennen. So ein "Forth-System" ist dann aber nichts weiter als ein nach einer bestimmten Technologie erstellter Maschinencode und in gewissem Sinne vergleichbar mit jener Technologie, bei der der Assembler Makros einbindet. Das ZX81-Forth in zweierlei Hinsicht nicht "jedes Forth": 1. Die Zeichencodierung ist nicht ASCII (nochmals zu prüfen). 2. Als ZX81-Forth wird zunächst nur das Basis-System bezeichnet, dass nach außen nichts wesentlich anderes kann als ein BASIC-System - nämlich praktisch nichts. Wenn dieses Forth etwas Sinnvolles tun sollte, dann musste dies vom Anwender programmiert werden. Beim ZX81 entstand auf diese Weise ein Programm, das einschließlich dieses Basis-Systems als neue Einheit gespeichert wurde. Damit verzweigte sich ein Baum von Programmen, weil dieses vom Anwender ergänzte Forth die Basis weiterer Varianten sein konnte, während andererseits neue Varianten auch auf dem Basis-System aufsetzen konnten. -- wefo 09:48, 28. Mär. 2011 (CEST)Beantworten

Ich habe nachgekuckt. Es gibt eine eigene Zeichentabelle für die Anzeige und eine eigene Abfrage der ZX81-Tastatur. Die Forth-Kommandos selbst sind ASCII-codiert (z.B. Adresse 43C1 und folgende enthält 86 42 52 41 4E 43 C8 und bedeutet BRANCH). -- wefo 14:03, 28. Mär. 2011 (CEST)Beantworten

In dem Fall wurde der Interpreter nicht gestrippt, damit man ihn weiter interaktiv programmieren konnte. Dieser Teil des Systems ist aber meines Wissens beim ZX-Forth ein großer Block am Ende, man darf ihn mit eigenem Code überschreiben, sobald das eigene Programm als Bytecode vorliegt. Ich hatte mal eine Fibel zum ZX-Forth in den Fingern, die alles bis ins Detail aufzeigte, aber leider keine Ahnung mehr, wo sie geblieben ist. -- Janka 23:33, 28. Mär. 2011 (CEST)Beantworten
Ich habe keine Erinnerung, wie ich zu dem Programm gekommen bin und vermute, kein spezielles Buch gehabt zu haben. Damals disassemblierte ich die Bytefolgen der mich interessierenden Programme und natürlich zuallererst der ROMs. Ich hatte auf dem ZX81 ein Programm, mit dem ich die ROMs eines C510 mit dem 6502 disassembliert auf einem Fernschreiber ausdruckte (irre?). Leider habe ich das alles vergessen, wäre aber fähig, meine handschriftliche Version des ZX81-Forth zu scannen und zu kommentieren. Ich fürchte aber, dass dies rechtlich in der WP nicht möglich ist. Ich denke aber, dass so eine Darstellung erforderlich wäre. Den zu Beginn vorhandenen Code zu überschreiben, halte ich für sehr zweifelhaft, weil die implementierten Kommandos/Funktionen für die weitere Arbeit benutzt werden. Wegen der erwähnten Verzweigungen legte sich meine Begeisterung insoweit, dass ich Forth nicht wirklich benutzt habe. Ich schrieb Maschinencode und verzweifelte, als ich dienstlich genötigt wurde, einen üblichen Assembler zu verwenden. Inzwischen habe ich alles vergessen. Die Geschwindigkeit des Vergessens erreichte bei PROLOG einen Rekord: Ein Jahr, nachdem ich PROLOG-Programme geschrieben hatte, scheiterte ich am Endezeichen (Semikolon?). -- wefo 00:37, 29. Mär. 2011 (CEST)Beantworten
Die wenigsten Forth-Systeme verwenden überhaupt einen Byte-Code. Open Firmware sollte man vielleicht auch erwähnen, das ist das Forth-System, das BIOS-Funktionen bei SPARC- und PowerPC-Systemen übernimmt, das kennt tokenisierten Source-Code in Byte-Code-Form (die dann tatsächlich auf allen Open Firmware-Systemen lauffähig sind). Traditionelle Forth-Systeme verwenden Threaded-Code, d.h. High-Level-Code wird als Array von Adressen compiliert, die jeweils auf die aufgerufenen Wörter (Unterprogramme) zeigen. Forth stand (teilweise, bzw. über den Umweg PostScript) auch der JavaVM Pate, aber das mit dem universell ausführbaren Byte-Code ist eher eine Eigenschaft der JavaVM. Ansonsten muss ich als Direktor der Forth-Gesellschaft wohl mal meine Mitglieder dazu aufrufen, den Artikel auf fachlich fundierte Basis zu heben ;-). -- Bernd Paysan 22:41, 8. Jan. 2012 (CET)Beantworten

Forth, Forth-System, Bytecode-Compiler Bearbeiten

Ich habe keine Ahnung von Forth, jedoch musste ich diese Änderung [1] am Artikel notgedrungen vornehmen, weil der Satz einfach hanebüchen war. Vielleicht könnte sich das jemand mit Ahnung nochmal ansehen? ʘχ (Diskussion) 23:53, 17. Mär. 2012 (CET)Beantworten

Es ist ein interaktiver Compiler. Du definierst interaktiv eine Funktion, diese wird sofort in Bytecode übersetzt und so zur weiteren Verwendung bereitgestellt. -- Janka (Diskussion) 12:23, 18. Mär. 2012 (CET)Beantworten
Was ist denn das dann am Ende? Ich meine, ich kenne das Konzept des "interaktiven Compilers" nicht. Meinst du einfach eine Kommandozeile, also eine en:REPL? ʘχ (Diskussion)
Der Unterschied zwischen Interpreter und Compiler ist, dass der Interpreter beim Aufrufen einer Funktion jedesmal deren Quellcode neu verarbeitet, während ein Compiler das nur einmal tut und danach beim Aufruf der Funktion das Kompilat verwendet wird. Das ist bei Forth ein Threaded-Code (s.o.) den man als eine Art Bytecode ansehen kann oder halt echter Bytecode. Beides wird dann durch einen passenden Interpreter gejagt, aber eben nicht der ursprüngliche Quellcode der Funktion. -- Janka (Diskussion) 17:25, 18. Mär. 2012 (CET)Beantworten


Link auf jonesforth - Begründung Bearbeiten

Ich möchte gerne einen Link auf jonesforth in dem Wikipedia-Artikel sehen. Trotz einiger Mängel (z.B. das fehlen von DOES>) ist es ein sehr gelungenes, kompaktes Tutorial. Eine besser erklärte Implementation ist mir nicht bekannt. Ich halte den Link auf das git-Repository nicht für ideal, da aus dem Link nicht hervorgeht, aus welchen Dateien das Tutorial besteht. Deshalb habe ich den Link auf archive.org gesetzt. (nicht signierter Beitrag von KamikazeJones (Diskussion | Beiträge) 14:25, 26. Jun. 2014 (CEST))Beantworten

Abschnitt „Wörter für Stack-Operationen“ Bearbeiten

Hallo zusammen! Die Beispiele in der Tabelle fangen immer mit dem Element n1 an, deshalb hätte ich gedacht, dass dies das oberste Element im Stack ist. Anscheinend ist es aber das unterste, weil es (als erstes) Element auf den Stack kam, und danach die Elemente n2, n3 usw. Das Entstehen des Stacks spielt aber für die Beispiele keine Rolle, deshalb finde ich diese Notation schwieriger zu verstehen. Es geht doch nur um die Beschreibung eines Stapels, da fände ich es logisch, wenn das oberste Element die Nr. 1 ist. Spricht etwas dagegen, woran ich nicht gedacht habe? --Till.niermann (Diskussion) 21:21, 7. Mär. 2017 (CET)Beantworten

Vortrag Bearbeiten

Ich hatte auf meiner Benutzerseite folgenden Hinweis erhalten:

 "Bitte beachte WP:Was Wikipedia nicht ist: Kein Ort für Veranstaltungsankündigungen / Bewerbung eines Vortrages. Außerdem dürfen gem. WP:WEB Weblinks nicht in den Fließtext, sondern können höchstens in den entsprechend benannten Abschnitt oder als Einzelnachweis eingefügt werden. --Johannnes89 (Diskussion) 10:07, 2. Feb. 2020 (CET)".Beantworten 

Leider gab es nur ein mehr weniger begründungsloses Verbot und die Löschung bzw. Rückgängigmachung der Artikelerweiterung. Es war weder eine Veranstaltungsankündigung, noch Werbung für einen Vortrag, noch war es ein Weblink aus meiner Sicht im Fließtext. Sofern man dem Hinweis auf den Vortrag gefolgt wäre, hätte man gesehen, daß auch heute noch eine Nutzung und weitere Entwicklung dieser Sprache stattfindet und das entsprechende Konzept auch an einigen Universitäten und Hochschulen gelehrt wird. Anstatt einfach etwas zu verbieten und zu löschen wäre ein Hinweis wie man die Information stattdessen bereitstellen sollte besser. --Zìxué chéngcái (Diskussion) 10:22, 2. Feb. 2020 (CET)Beantworten

@Zìxué chéngcái: Du hast es ja gerade einfach wieder eingefügt [2], schön dass du doch noch den Weg zur Diskussionsseite gefunden hast. Bei eine Veranstaltung, die in dieser Minute gerade stattfindet und live gestreamt werden kann, handelt es sich ja wohl um eine Ankündigung, weil die Relevanz des gesagten noch gar nicht beurteilt werden kann. Folglich ein Verstoß gegen WP:Was Wikipedia nicht ist. Dein Versuch, dies zu kaschieren, indem du (nachdem es anfänglich nur der Vortrag von heute war) auch noch einen bereits zurückliegenden Vortrag einfügst, macht das nicht besser. Und auch zum Weblink habe ich dir einen klaren Hinweis gegeben, du kannst Dr. Ulrich Hoffmann nicht so verlinken (Verstoß gegen WP:WEB), sondern müsstest seine Website als Einzelnachweis setzen. --Johannnes89 (Diskussion) 10:33, 2. Feb. 2020 (CET)Beantworten
@Johannnes89: Danke für Deine Bestätigung, daß Du gelöscht hast ohne eine Beurteilung vorzunehmen (... es wäre ein leichtes gewesen den Links zu folgen, zu lesen und zu verstehen). Danke auch dafür, daß Du die Verantwortung dafür an den Kontributor von wissenschaftlichen Informationen gibst (... den Überbringer der Nachricht). Weiterhin wollte ich initial den Artikel erweitern oder Verbessern (... iterativ, nach und nach, etc). Dank Deines Verhalten werde ich davon aber Abstand nehmen. Warum soll ich Zeit und Energie damit verschwenden mich mit Dir zu streiten. Du wirst den Artikel ja viel besser, schneller, qualitativer auf den aktuellen Stand bringen und halten. Ich kann dies auch in der englischen, russischen oder chinesischen Wikipedia tun. --Zìxué chéngcái (Diskussion) 10:52, 2. Feb. 2020 (CET)Beantworten
Bin dem Link ja gefolgt, sonder hätte ich nicht feststellen können, dass die Veranstaltung gerade erst stattfindet. --Johannnes89 (Diskussion) 10:55, 2. Feb. 2020 (CET)Beantworten