%% LyX 2.0.1 created this file.  For more info, see http://www.lyx.org/.
%% Do not edit unless you really know what you are doing.
\documentclass[american,ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}

\makeatletter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
\usepackage{multicol}

\makeatother

\usepackage{babel}
\begin{document}

\title{EuroForth 2011 in Wien}


\author{Bernd Paysan}
\maketitle
\begin{abstract}
Die 27. EuroForth--Konferenz fand dieses Jahr vom 23. bis 25. September
bei schönem Wetter in Wien statt --- turnusgemäß, möchte man sagen,
da sich Anton als zuverlässiger Veranstalter des dritten Orts (,,weder
Deutschland noch England``) gefunden hat. Wie auch in den Jahren
zuvor waren vor der Tagung zwei Tage Forth200x--Standardisierung angesetzt,
wie immer, wenn es an diesem dritten Ort stattfindet, ist die Runde
etwas kleiner.
\end{abstract}
\begin{multicols}{2}


\section{Forth 200x: Der Snapshot}

Der Standardisierugsprozess ist so weit fortgeschritten, dass wir
einen Snapshot produzieren, der dann --- gemäß den ANSI--Prozeduren
--- einem öffentlichen Review zugeführt wird. Als Snapshot wird das
Ergebnis des Treffens beschlossen. Damit war auch klar, womit wir
uns hauptsächlich beschäftigen würden, mit \foreignlanguage{american}{,,crossing
the eyes and dotting the teeth,``} wie die verballhornte Version
lautet. Da gibt es immer Details, die nicht sauber beschrieben sind,
und entsprechend umformuliert werden müssen.

Zunächst wurden also die bereits vorgenommenen Änderungen begutachtet,
und für gut befunden. Danach die schon im Raum stehenden, also durch
einen CfV beschlossenen Vorschläge, also die \foreignlanguage{american}{enhanced
locals,} BUFFER: und SUBSTITUTE. Diese Vorschläge wurden ebenfalls
akzeptiert.

\begin{figure}
\includegraphics[width=1\columnwidth]{2011-04/2011-09-21_16-29-26}

\caption{Der Tagungsraum}
\end{figure}


Von den noch in Diskussion befindlichen (RfD) wurden die Änderungen
am IS--Vorschlag akzeptiert, ebenso wie die Erläuterungen für \foreignlanguage{american}{Parsing
Words} in Blöcken von Multitasking--Systemen und die Einschränkung,
dass der bei SOURCE--ID zurückgelieferte Dateideskriptor nicht anderweitig
benutzt werden kann. Die Diskussion über FOUND ist noch nicht so weit
ausgegoren, dass man daraus einen Standard machen kann.

Danach ging es um noch durchzuführende Änderungen, um aus dem Dokument
einen richtigen \foreignlanguage{american}{Snapshot} zu machen. Dabei
werden einige Anhänge gestrichen, bzw. wandern auf die \foreignlanguage{american}{Web--Site}
des forth200x--\foreignlanguage{american}{Committees}.

Der Standardisierungsprozess ist aber dadurch natürlich nicht abgeschlossen,
sondern geht weiter. Es gibt noch offene Baustellen, insbesondere
die Internationalisierung (die jetzt, mit xchars und \foreignlanguage{american}{substitute}
im Standard, alle notwendigen Komponenten zur Verfügung hat), aber
auch die Diskussion zum Cross--Compiler, zu \foreignlanguage{american}{IEEE
Floating Point}, zum Laden von Dateien relativ zur gerade geladenen
Datei (was Stephen Pelc inzwischen auch unterstützt), und das\foreignlanguage{american}{
Memory Access Wordset}.


\section{Konferenz}


\subsection{Stephen Pelc: Standardize OOP Now}

Stephen Pelc ist noch nicht ganz aus dem Standardisierungs--Modus
'raus, und er macht gleich ein richtig dickes Fass auf. Sein Vortrag
befasst sich mit der Situation von OOP in Forth, und warum die derzeitige
Situation nicht gut sei: praktisch jedes Programm, das tatsächlich
OOP verwendet, bringt sein eigenes, zu allen anderen Forth--OOP--Packeten
inkompatibles OOP mit. Stephen fordert die Entwickler bestehender
OOP--Erweiterungen auf, einzusehen, dass ihre bisherigen Vorschläge
alle unzulänglich sein müssen, weil sich deshalb ja keines durchgesetzt
hat, und also zurück auf Los zu gehen, und nochmal neu anzufangen
--- und dabei die Egos zurückzustellen. Er schlägt vor, auf FMS (Forth
meets Smalltalk) von Doug Hoffman aufzubauen, gibt aber auch zu, dass
er selbst kein OOP--Experte ist. Das Thema bedarf näherer Betrachtung;
ich habe deshalb einen ganzen Artikel für die VD geschrieben.


\subsection{Bernd Paysan: net2o: Application Layer}

Ich habe mir noch mehr Gedanken über die Neuerfindung des Internets
gemacht, und trage meine Ideen vor. Wofür es ist --- um Informationen
zu tauschen. Wie man die Informationen organisiert. Was die Elemente
einer Webseite sind. Dass der Browser eine Laufzeitumgebung für Anwendungen
im Netz ist. Dass man nicht nur Code faktorisieren kann und muss,
sondern auch Daten. Wie man die ACID%
\footnote{\selectlanguage{american}%
Atomicity, Consistency, Isolation, Durability\selectlanguage{ngerman}
%
}--Bedingungen in einem verteilten Datenspeicher erreicht. Welche Rolle
Hashes als Index auf die Daten spielen. Wie man Anwendungen aus dem
Netz sicher ausführt (und dass Sicherheit immer relativ ist). Dass
man nicht pollen, sondern pushen soll. Und Sourcecode verwenden, keine
Binaries. Auf welche Library--Funktionen man aufsetzt. Und was die
dümmsten Fehler am aktuellen Internet sind.


\subsection{Leon Wagner: Forth on the Cortex--M1 FPGA Development Kit}

Leon Wagner hat tatsächlich Hardware dabei, ein Altera--Development--Board,
und führt vor, wie man in Quartus einen Cortex--M1 mit Peripherie
zusammenklickt, auf dem dann SwiftX läuft. Dabei muss man tatsächlich
nicht in die Tiefen des Verilogs eintauchen, wobei man das bei ARM
auch nicht kann --- das ist alles verschlüsselt. SwiftX darauf zu
portieren ist etwa genauso schwierig oder einfach wie auf eine andere
CPU, schließlich hat der Cortex--M1 einfach einen abgespeckten Thumb2--Befehlssatz.


\subsection{Anton Ertl: Ways to Reduce the Stack Depth}

Anton macht sich Gedanken, wie man mit zu vielen Variablen auf dem
Stack umgeht. Mehr als 2 oder 3, und es wird ungemütlich. Eine Reihe
von Vorgehensweisen sind bekannt (das sind auch ,,Design Pattern``,
aber nicht für OOP, sondern für Forth), und die erläutert er an Beispielen.
Man kann die Daten im Speicher gruppieren, mehrere Stacks verwenden,
Locals benutzen, globale Variablen oder Kontext--Variablen, implizite
Parameter, Pipes und Staged Execution.


\subsection{Andrew Haley: Forth concurrency: what are we going to do about ,,volatile?{}``}

Wie schon letztes Jahr ist Andrew Haleys Thema Forth im Kontext von
Multiprozessor--Systemen. Es geht dieses Mal um Schreib- und Lesebarrieren
im Speicher, die in C--artigen Sprachen durch den Typbezeichner ,,volatile``
abgebildet werden --- oder auch nicht, denn so klar sind sich die
Implementierer von C--artigen Sprachen nicht, was denn jetzt wirklich
mit volatile gemeint ist (insbesondere C selbst hat eine praktisch
nutzlose Definition von volatile). Andrew ist über das Problem gestolpert,
als VFX--Forth aus \texttt{counter @ dup 2+} einfach\texttt{ counter
@ 2+ counter @ swap} gemacht hat, und Stephen auf den Bugreport mit
,,das ist das volatile--Problem`` geantwortet hat. Damit hat das
Problem seinen Namen weg. Bei den C/C++--Leuten weicht die bisherige
Ignoranz langsamer Erleuchtung, und wenn Forth eine Zukunft auf Multiprozessorsystemen
haben will, dann auch nur, wenn man sich dazu Gedanken macht.

\begin{figure}
\includegraphics[width=0.5\columnwidth]{2011-04/2011-09-22_19-03-41}\includegraphics[width=0.5\columnwidth]{2011-04/2011-09-23_13-03-23} \includegraphics[width=0.5\columnwidth]{2011-04/2011-09-23_13-03-37}\includegraphics[width=0.5\columnwidth]{2011-04/2011-09-23_18-03-27}

\caption{Impressionen}


\end{figure}



\subsection{Willi Stricker: A processor as hardware version of the Forth virtual
machine}

Willi Stricker stellt seinen Forth--Prozessor im FPGA vor; wir kennen
den Prozessor ja schon von der Forth--Tagung. Sein Konzept ist sehr
nahe an der virtuellen Forth--Maschine für threaded code, weshalb
bei ihm Primitives und Unterprogrammaufrufe auch einfach nur Adressen
im Speicher sind, und für die Primitives reserviert er die ersten
64 Bytes --- das sind dann Pseudo--Adressen, denn an denen steht nicht
etwa der Code für den Befehl, sondern das FPGA weiß, was zu tun ist,
und führt die Primitives gleich direkt aus. Willi hat das auf einem
Actel--FPGA implementiert.


\subsection{Nick Nelson: Crash Never}

Als Kontra gegen Stephen Pelcs ,,crash early, crash often``--Philosophie
schlägt Nick Nelson eine ,,crash never``--Philosophie vor, zumindest
für ausgelieferte Programme. Kunden sollen auf Crashs allergisch reagieren,
und auch Nick selbst hat auf der EuroForth in Exeter von ein paar
Crashes erzählt, die für die Zuhörer sicher lustiger waren als für
die Beteiligten. Also listet Nick die Techniken auf, die er so benutzt,
um seine Programme robust zu machen, auch wenn sie nicht perfekt sind,
und hier und da natürlich trotzdem crashen --- oder crashen würden,
wenn man sie nicht von außen stützen täte. So fängt er Stackfehler
ab, indem die Hauptschleife eines Tasks den Stack immer wieder normalisiert.
Wenn es trotzdem zum Crash kommt, wird eine möglichst detaillierte
Meldung produziert. Schleifen mit zu großer Anzahl Schritten werden
zurückgewiesen oder verkürzt. Watchdogs (,,prodder``) stoppen Programme,
die nicht mehr reagieren.

Divisionen durch 0 sollen Unendlich zurückgeben (mit korrektem Vorzeichen,
falls man nach einem Vorzeichen gefragt hat), und die Anzahl Threads
minimiert man --- wenn mehrere Prozesse alle 100~ms etwas tun wollen,
dann ruft man sie hintereinander aus dem gleichen Thread auf. Und
für die Kommunikation verzichtet man auf eigene Locks, sondern verwendet
möglichst simple Methoden.


\subsection{Gerald Wodni: SWIG \& The Forth Net: Hands-On}

Gerald Wodni hat immer noch das ,,the`` im \texttt{theforth.net};
weil die andere Domain leider belegt ist, funktioniert der \texttt{drop}--Operator
nicht. Aber das System hat Fortschritte gemacht, und für Anton gibt
es auch einen Stil ohne bunte Farben, und man kann sich ohne OpenID--Account
direkt einloggen. Es wartet nun darauf, mit Libraries gefüttert zu
werden. Forth--Systeme können diese Libraries direkt über's Internet
ziehen, man muss sie nicht umständlich installieren oder so, sie sind
einfach da. Das Forth--Net schickt auf die HTTP--Anfrage Forth--Code
zurück, der den ganzen Rest erledigt. Die Wörter dafür heißen dann
einfach \texttt{frequire} und \texttt{finclude}, und verwenden \texttt{fget},
das auf das Forth--Netz zugreift.

Libraries muss man auch nicht selber schreiben, man kann die vorhandenen
Libraries (üblicherweise in C geschrieben) verwenden. Damit man da
keinen großen Aufwand treiben muss, das in Forth einzubinden, gibt's
ein SWIG--Modul, das aus den C--Headern über einen zweistufigen Prozess
Forth--Bindings generiert.

\bigskip{}


Am Sonntag finden die Impromptu--Talks und Workshops statt. Dieses
Mal mit sehr vielen Themen.


\subsection{Carsten Strotmann}

Carsten berichtet über seine Aktivitäten, Forth einer breiteren Öffentlichkeit
nahezubringen. Ich denke, die interessanteste Information dabei ist,
dass die früheren Vorbehalte gegen Forth inzwischen in den Hintergrund
drängen; es scheint, dass die Welt jetzt offener für Konzepte abseits
des Mainstreams ist.


\subsection{Stephen Pelc: Why compilation is a mess}

Stephen Pelc hat das Konzept des ,,intelligenten \texttt{compile,}s``
inzwischen auch implementiert, und stellt sein Konzept eines ,,universellen
Tokens`` vor, das als Ersatz für das bisherige Durcheinander aus
\texttt{immediate}, state--smart--Wörtern und langen \texttt{case}--Statements
im weniger intelligenten \texttt{compile,} herhalten muss. Dieses
Token ist bei Stephen das ganz normale xt, bei Dual--xt--Systemen
wie Gforth klappt das so nicht. Aber Gforth ist auch noch einen Schritt
weiter hinten bei der Implementierung des intelligenten \texttt{compile,}s
(der Cross--Compiler kann's, aber das System selbst nicht).


\subsection{Anton Ertl: Replacing FIND}

Die Überlegungen, FIND durch ein zeitgemäßeres Wort zu ersetzen, gehen
auch in die Richtung, im Compilations--Prozess aufzuräumen. Gforth
mit seinem nt (name token) hat da etwas andere Operatoren als Stephens
universelles token, was sich auch auf einen möglichen Ersatz von \texttt{find}
auswirkt. Die Diskussion hier, so scheint mir, ist definitiv noch
nicht so weit ausgereift, dass man von einem Ergebnis sprechen kann.

\begin{figure}
\includegraphics[width=0.45\columnwidth]{2011-04/2011-09-23_18-29-28}\hfill{}\includegraphics[width=0.45\columnwidth]{2011-04/2011-09-24_16-12-11}

\caption{Ertlgasse und Antonshöhe}
\end{figure}



\subsection{Klaus Schleisiek: 11 OOP primitives}

Am Ende holt uns das OOP--Thema vom Anfang wieder ein, und wie zu
erwarten, sind die Egos natürlich nicht in den Hintergrund zu drängen.
Klaus Schleisiek hält Manfred Mahlows OOP für den Stein der Weisen,
und verspricht, nach kurzer Vorstellung, was das so ungefähr ist,
eine Portierung auf Gforth (0.6.2) zu machen, damit man sich das ansehen
kann.


\subsection{Andrew Haley: What OOP needs: by example of the Proxy design pattern}

Im Versuch, das Unverständnis, worum es bei OOP überhaupt geht, zu
reduzieren, versucht Andrew Haley das Proxy design pattern zu erklären.
Mir scheint aber, dass die Konzentration aller Beteiligten so weit
nachgelassen hat, dass die Erklärung nicht wirklich verstanden wurde.
Zudem sind Design--Pattern keine leichte Kost, und die Gang of Four,
die das erste dicke Buch zu OOP--Design--pattern herausgegeben hat,
sagt selbst ,,wir haben es auch nicht verstanden, als wir das Buch
zum ersten Mal geschrieben haben.`` Ich habe das Buch gelesen, als
es neu war (und es dazu in der Uni--Bibliothek ausgeliehen), da sind
inzwischen 15 Jahre vergangen, und die Ausgabe, die ich jetzt bei
Amazon bekommen habe, ist nur für Indien bestimmt ;-). Man sollte
sich auch nicht ganz so sklavisch an Pattern aus der Java--Ecke halten,
Forth ist eine wesentlich dynamischere Sprache, und kann bestimmt
mehr, wenn man es richtig macht.

\bigskip{}


Neben dem formellen Teil der Konferenz ist der informelle mit Exkursion
und Abendessen natürlich auch sehr wichtig. Die Gespräche gehen immer
bis tief in die Nacht, wodurch sich der Start am nächsten Tag etwas
verzögert. Zumal es durch das Standard--Treffen jetzt vier Nächte
hintereinander sind, die alle etwas kurz geraten. Anton scheint in
Wien sehr populär zu sein, es gibt nicht nur eine Ertlgasse im 1.
Distrikt, sondern auch eine Antonshöhe, und an beiden sind wir vorbeigekommen.
Das Internet im Erzherzog Rainer ist inzwischen auch kostenlos, und
das Essen war überall gut.

\begin{figure}
\includegraphics[width=1\columnwidth]{2011-04/2011-09-24_16-59-32}

\caption{Im Weingarten}
\end{figure}


\end{multicols}
\end{document}
