Ich weiß ein bisschen über FORTH Bescheid und werde mich darauf beschränken. Es ist eine einfache Sprache, mit der Sie als Programmierer auf alle Hardwareressourcen zugreifen können. Sie können also tun, was Sie möchten.
Parallelität
Um Parallell-Programme zu haben (edit: wird verwendet, um echte parallele Programme auszudrücken), benötigen Sie mindestens zwei Ausführungseinheiten (CPU). Es wäre ziemlich trivial, ein Wort in FORTH zu implementieren, das beispielsweise lautet: "Führen Sie dieses Wort mit diesen beiden Argumenten auf Prozessor 2 aus". Das Wort würde die zwei benötigten Stapel auf Prozessor 2 zuordnen und die Ausführung des Wortes starten. Sie müssen sich darauf beschränken, welche Konstrukte Sie in diesem Programm verwenden können.
Wenn die Anzahl der gleichzeitigen Programme größer ist als die Anzahl der Ausführungseinheiten, würden Sie "Pseudo-Parallell" -Programme wählen. Grundsätzlich gibt es zwei Möglichkeiten, dies zu tun: Coroutinen oder präventives Multitasking. In jedem Fall ist es möglich (nicht einfach, aber in der Literatur gut beschrieben), dies zu erreichen, und FORTH ermöglicht Ihnen den Zugriff auf alle benötigten Inhalte auf niedrigem Niveau.
Faule Bewertung
Natürlich können Sie dies in FORTH wie in fast jeder Programmiersprache tun. Es wird nicht so elegant oder "eingebaut" sein wie in Haskell. Ich werde ein sehr naives Beispiel verwenden.
Die Idee ist, dass Sie eine "Funktion" definieren (die hier lose verwendet wird), die eine Reihe von Dingen zurückgibt. Ein Beispiel wäre eine Funktion, die alle ganzen Zahlen zurückgibt. Sie führen dann Operationen an diesem Set durch und geben das Ergebnis aus, wenn Sie fertig sind. Beispielsweise möchten Sie möglicherweise alle Ganzzahlen summieren, bis die Summe größer als 1000 ist. Bei einer nicht verzögerten Auswertung werden zunächst alle Ganzzahlen als eine Menge zugeordnet, was unmöglich ist, da es unendlich viele Ganzzahlen gibt. Es würde dann anfangen, an diesem Set zu arbeiten. Eine faule Implementierung hätte die Möglichkeit, "mir den nächsten Wert in der Menge zu geben". Dazu wird in der Funktion "last value give" wirklich nur eine Variable benötigt.
Haskell macht die Dinge so. Natürlich behandelt es kompliziertere Situationen, aber die Idee ist dieselbe. Es beschönigt die Auswertung auf eine Weise, die es Ihnen als Programmierer ermöglicht, sich auf das Problem zu konzentrieren und nicht darauf, wie es zu lösen ist.