\section{FSL und Forth200x}

Charles G. Montgomery schrieb neulich [1] auf 
\href{news:comp.lang.foth}{comp.lang.forth}:

Seit seinem Bestehen basiert das Projekt der wissenschaftlichen Sammlung zu Forth (Forth Scientific Library Project FSL) auf Code im ANS-94-Forth-Standard, der Portabilität und Unzweideutigkeit halber. Dabei kann der FSL-Code natürlich Erweiterungen des Standardforth enthalten, wenn eine adäquate Dokumentation mitgeliefert wird. Und dafür wiederum kann es erforderlich sein, dann eine Standard-Implementierung einer solchen Erweiterung ebenfalls anzugeben.

Nun, die Anstrengungen des Forth 200x haben zur Spezifikation mehrerer wohlüberlegter Erweiterungen des ANS-94 geführt, die auch für unsere 
FSL-Beitragenden und -Nutzer recht nützlich sein könnten. Daher ist es angebracht zu erwägen, ob Forth-200x-Funktionen inzwischen in FSL akzeptiert werden könnten. 

Ich hatte zunächst daran gedacht, einige Möglichkeiten aufzuzeigen und um deren Diskussion zu bitten. Meine Vorschläge wären vom Erhalt des status quo bis hin zum automatischen Akzeptieren aller anerkannten Forth200x-Erweiterungen gegangen. Aber nach einigem Nachdenken bin ich zu dem Schluss gekommen, einen spezifischen und begrenzten Vorschlag für die weitere Erörterung zu machen.

Meiner Ansicht nach sollte die Entscheidung über solche Angelegenheiten von den Anwendern und potentiellen Anwendern des FSL kommen. Stimmte diese wenn auch vage definierte Gruppe darin überein, könnte es als FSL-\emph{Richtlinie} und in Dokumente wie den Leitfaden für Beitragende und Reviewer von Beiträgen aufgenommen werden, und weiter auf die Nutzer bauen. Daher bitte ich um Kommentare zu folgender Anregung:

Die 200x-Worte \texttt{[DEFINED]} und  \texttt{[UNDEFINED]} aus XXXXX sind für FSL akzeptabel,  wenn sie der 200x-Spezifikation folgen. Die Funktionalität der 200x-Worte  \texttt{DEFER} und  \texttt{IS} ist schon durch die FSL-Worte \texttt{v:} und \texttt{defines} gegeben, aber die Verwendung von \texttt{DEFER} und \texttt{IS} wird auch für FSL-Code akzeptiert.

Diese Worte scheinen mir die offensichtlichsten Fälle von klarem Vorteil einerseits und geringem Konfliktpotential oder Verwirrung andererseits zu sein. Weitere Kandidaten wären \texttt{PARSE-NAME INCLUDE REQUIRE REQUIRED TO VALUE FVALUE FTRUNC} und vielleicht noch einige. Spezifikationen für akzeptierte 
200x-Worte und deren ANS-94-Implementation können dann auf der FSL-Seite
\url{http://www.taygeta.com/fsl/sciforth.html}
bereitgestellt werden und Dateien oder Links zu den 200x-Quellen versehen werden.

Bitte kommentiert diese Fragen:
Ist jemand dagegen, dass \texttt{[DEFINED] [UNDEFINED] DEFER IS} in den 
FSL-Code aufgenommen werden?\\
Gibt es noch weitere 200x-Worte, die aufgenommen werden sollten? \\
Oder sollte man besser beim puren ANS-94 bleiben?

Danke, cgm\\
( current FSL maintainer, Charles G. Montgomery )
\medskip
	
Marcel Hendrix antwortete:\\
{}[..]\\
Einverstanden, nur zu.\\
Ob noch andere Worte aufgenommen werden sollten, dürfte eine Geschmacksfrage sein.\\
> Oder sollte man besser beim puren ANS-94 bleiben?\\

Einige der numerischen Algorithmen, die hier kürzlich diskutiert worden sind, sind sehr gut geworden, z.B. das IEEE-Wordset. Im Laufe dieser Diskussion hat sich gezeigt, dass gegenwärtige und geplante Erweiterungen des Standards sehr nützlich sind, um die Systemenabhängigkeit sauber zu isolieren. Mir würde es besser gefallen, alle möglichen Erweiterungen dieser Art zuzulassen und damit dann auch gut ausgetestete und akkurate Algorithmen zu bekommen, als Erweiterungen auszuschließen und bei Algorithmen zu landen, die auf halbem Wege stehen geblieben sind und weniger Leistung und Genauigkeit bieten. 
\hspace*{\fill} marcel\medskip


David N. Williams meinte daraufhin:\\
\ldots\ dem stimme ich zu. Ich favorisiere es ebenfalls alle 
Forth-200x-Erweiterungen zuzulassen. 
\hspace*{\fill} David\medskip

Und Brad schrieb:\\   	
Ich stimme dafür, 200x anzunehmen. Falls Code in ANS94 laufen muss, kann ein Kompatibilitäts-Layer im FSL bereitgestellt werden. Wir sollten uns nicht behindern lassen, um so etwas wie eine C-Portabilität zu erreichen.

\texttt{REQUIRE} wäre auch eine gute Zugabe, denn es ist mitunter sehr mühsam, die Abhängigkeiten von Dateien herauszufinden.
\hspace*{\fill}Brad\medskip

Und noch weitere Stellungnahmen gab es, meistens Befürworter des Vorhabens, Forth 200x aufzunehmen. Weitere Einzelheiten können in der Quelle nachgelesen werden.  \hspace*{\fill}mk\medskip

Quelle:\\
{}[1] {\small comp.lang.forth, Charles G Montgomery, Dec 17, 5:02 pm}\medskip

Link:\\
The Forth Scientific Library Project \\
\url{http://www.taygeta.com/fsl/sciforth.html}
