#LyX 2.0 created this file. For more info see http://www.lyx.org/ \lyxformat 413 \begin_document \begin_header \textclass article \begin_preamble \usepackage{multicol} \end_preamble \use_default_options true \maintain_unincluded_children false \language ngerman \language_package default \inputencoding utf8 \fontencoding global \font_roman default \font_sans default \font_typewriter default \font_default_family default \use_non_tex_fonts false \font_sc false \font_osf false \font_sf_scale 100 \font_tt_scale 100 \graphics default \default_output_format default \output_sync 0 \bibtex_command default \index_command default \paperfontsize default \spacing single \use_hyperref false \papersize default \use_geometry false \use_amsmath 1 \use_esint 1 \use_mhchem 1 \use_mathdots 1 \cite_engine basic \use_bibtopic false \use_indices false \paperorientation portrait \suppress_date false \use_refstyle 1 \index Index \shortcut idx \color #008000 \end_index \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \paragraph_indentation default \quotes_language german \papercolumns 1 \papersides 1 \paperpagestyle default \tracking_changes false \output_changes false \html_math_output 0 \html_css_as_file 0 \html_be_strict false \end_header \begin_body \begin_layout Title EuroForth 2011 in Wien \end_layout \begin_layout Author Bernd Paysan \end_layout \begin_layout 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 ( \begin_inset Quotes gld \end_inset weder Deutschland noch England \begin_inset Quotes grd \end_inset ) gefunden hat. Wie auch in den Jahren zuvor waren vor der Tagung zwei Tage Forth200x--Standard isierung angesetzt, wie immer, wenn es an diesem dritten Ort stattfindet, ist die Runde etwas kleiner. \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Plain Layout \backslash begin{multicols}{2} \end_layout \end_inset \end_layout \begin_layout Section Forth 200x: Der Snapshot \end_layout \begin_layout Standard 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 \lang american \begin_inset Quotes gld \end_inset crossing the eyes and dotting the teeth, \begin_inset Quotes grd \end_inset \lang ngerman wie die verballhornte Version lautet. Da gibt es immer Details, die nicht sauber beschrieben sind, und entsprechend umformuliert werden müssen. \end_layout \begin_layout Standard 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 \lang american enhanced locals, \lang ngerman BUFFER: und SUBSTITUTE. Diese Vorschläge wurden ebenfalls akzeptiert. \end_layout \begin_layout Standard \begin_inset Float figure wide false sideways false status open \begin_layout Plain Layout \begin_inset Graphics filename 2011-09-21_16-29-26.jpg lyxscale 50 width 100col% \end_inset \end_layout \begin_layout Plain Layout \begin_inset Caption \begin_layout Plain Layout Der Tagungsraum \end_layout \end_inset \end_layout \end_inset \end_layout \begin_layout Standard Von den noch in Diskussion befindlichen (RfD) wurden die Änderungen am IS--Vorsc hlag akzeptiert, ebenso wie die Erläuterungen für \lang american Parsing Words \lang ngerman 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. \end_layout \begin_layout Standard Danach ging es um noch durchzuführende Änderungen, um aus dem Dokument einen richtigen \lang american Snapshot \lang ngerman zu machen. Dabei werden einige Anhänge gestrichen, bzw. wandern auf die \lang american Web--Site \lang ngerman des forth200x-- \lang american Committees \lang ngerman . \end_layout \begin_layout Standard 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 \lang american substitute \lang ngerman im Standard, alle notwendigen Komponenten zur Verfügung hat), aber auch die Diskussion zum Cross--Compiler, zu \lang american IEEE Floating Point \lang ngerman , zum Laden von Dateien relativ zur gerade geladenen Datei (was Stephen Pelc inzwischen auch unterstützt), und das \lang american Memory Access Wordset \lang ngerman . \end_layout \begin_layout Section Konferenz \end_layout \begin_layout Subsection Stephen Pelc: Standardize OOP Now \end_layout \begin_layout Standard 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ächli ch 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. \end_layout \begin_layout Subsection Bernd Paysan: net2o: Application Layer \end_layout \begin_layout Standard 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 \begin_inset Foot status open \begin_layout Plain Layout \lang american Atomicity, Consistency, Isolation, Durability \end_layout \end_inset --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. \end_layout \begin_layout Subsection Leon Wagner: Forth on the Cortex--M1 FPGA Development Kit \end_layout \begin_layout Standard Leon Wagner hat tatsächlich Hardware dabei, ein Altera--Development--Board, und führt vor, wie man in Quartus einen Cortex--M1 mit Peripherie zusammenklick t, 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. \end_layout \begin_layout Subsection Anton Ertl: Ways to Reduce the Stack Depth \end_layout \begin_layout Standard 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 \begin_inset Quotes gld \end_inset Design Pattern \begin_inset Quotes grd \end_inset , 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. \end_layout \begin_layout Subsection Andrew Haley: Forth concurrency: what are we going to do about \begin_inset Quotes gld \end_inset volatile? \begin_inset Quotes grd \end_inset \end_layout \begin_layout Standard Wie schon letztes Jahr ist Andrew Haleys Thema Forth im Kontext von Multiprozess or--Systemen. Es geht dieses Mal um Schreib- und Lesebarrieren im Speicher, die in C--artigen Sprachen durch den Typbezeichner \begin_inset Quotes gld \end_inset volatile \begin_inset Quotes grd \end_inset abgebildet werden --- oder auch nicht, denn so klar sind sich die Implementiere r 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 \family typewriter counter @ dup 2+ \family default einfach \family typewriter counter @ 2+ counter @ swap \family default gemacht hat, und Stephen auf den Bugreport mit \begin_inset Quotes gld \end_inset das ist das volatile--Problem \begin_inset Quotes grd \end_inset 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. \end_layout \begin_layout Standard \begin_inset Float figure wide false sideways false status open \begin_layout Standard \begin_inset Graphics filename 2011-09-22_19-03-41.jpg lyxscale 25 width 50col% \end_inset \begin_inset Graphics filename 2011-09-23_13-03-23.jpg lyxscale 25 width 50col% \end_inset \begin_inset Graphics filename 2011-09-23_13-03-37.jpg lyxscale 25 width 50col% \end_inset \begin_inset Graphics filename 2011-09-23_18-03-27.jpg lyxscale 25 width 50col% \end_inset \end_layout \begin_layout Plain Layout \begin_inset Caption \begin_layout Plain Layout Impressionen \end_layout \end_inset \end_layout \begin_layout Plain Layout \end_layout \end_inset \end_layout \begin_layout Subsection Willi Stricker: A processor as hardware version of the Forth virtual machine \end_layout \begin_layout Standard 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. \end_layout \begin_layout Subsection Nick Nelson: Crash Never \end_layout \begin_layout Standard Als Kontra gegen Stephen Pelcs \begin_inset Quotes gld \end_inset crash early, crash often \begin_inset Quotes grd \end_inset --Philosophie schlägt Nick Nelson eine \begin_inset Quotes gld \end_inset crash never \begin_inset Quotes grd \end_inset --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 ( \begin_inset Quotes gld \end_inset prodder \begin_inset Quotes grd \end_inset ) stoppen Programme, die nicht mehr reagieren. \end_layout \begin_layout Standard 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 \begin_inset space ~ \end_inset 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. \end_layout \begin_layout Subsection Gerald Wodni: SWIG & The Forth Net: Hands-On \end_layout \begin_layout Standard Gerald Wodni hat immer noch das \begin_inset Quotes gld \end_inset the \begin_inset Quotes grd \end_inset im \family typewriter theforth.net \family default ; weil die andere Domain leider belegt ist, funktioniert der \family typewriter drop \family default --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 \family typewriter frequire \family default und \family typewriter finclude \family default , und verwenden \family typewriter fget \family default , das auf das Forth--Netz zugreift. \end_layout \begin_layout Standard 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. \end_layout \begin_layout Standard \begin_inset VSpace bigskip \end_inset \end_layout \begin_layout Standard Am Sonntag finden die Impromptu--Talks und Workshops statt. Dieses Mal mit sehr vielen Themen. \end_layout \begin_layout Subsection Carsten Strotmann \end_layout \begin_layout Standard 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. \end_layout \begin_layout Subsection Stephen Pelc: Why compilation is a mess \end_layout \begin_layout Standard Stephen Pelc hat das Konzept des \begin_inset Quotes gld \end_inset intelligenten \family typewriter compile, \family default s \begin_inset Quotes grd \end_inset inzwischen auch implementiert, und stellt sein Konzept eines \begin_inset Quotes gld \end_inset universellen Tokens \begin_inset Quotes grd \end_inset vor, das als Ersatz für das bisherige Durcheinander aus \family typewriter immediate \family default , state--smart--Wörtern und langen \family typewriter case \family default --Statements im weniger intelligenten \family typewriter compile, \family default 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 \family typewriter compile, \family default s (der Cross--Compiler kann's, aber das System selbst nicht). \end_layout \begin_layout Subsection Anton Ertl: Replacing FIND \end_layout \begin_layout Standard 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 \family typewriter find \family default auswirkt. Die Diskussion hier, so scheint mir, ist definitiv noch nicht so weit ausgereif t, dass man von einem Ergebnis sprechen kann. \end_layout \begin_layout Standard \begin_inset Float figure wide false sideways false status collapsed \begin_layout Plain Layout \begin_inset Graphics filename 2011-09-23_18-29-28.jpg lyxscale 25 width 45col% \end_inset \begin_inset space \hfill{} \end_inset \begin_inset Graphics filename 2011-09-24_16-12-11.jpg lyxscale 25 width 45col% \end_inset \end_layout \begin_layout Plain Layout \begin_inset Caption \begin_layout Plain Layout Ertlgasse und Antonshöhe \end_layout \end_inset \end_layout \end_inset \end_layout \begin_layout Subsection Klaus Schleisiek: 11 OOP primitives \end_layout \begin_layout Standard 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. \end_layout \begin_layout Subsection Andrew Haley: What OOP needs: by example of the Proxy design pattern \end_layout \begin_layout Standard 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 \begin_inset Quotes gld \end_inset wir haben es auch nicht verstanden, als wir das Buch zum ersten Mal geschrieben haben. \begin_inset Quotes grd \end_inset 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. \end_layout \begin_layout Standard \begin_inset VSpace bigskip \end_inset \end_layout \begin_layout Standard 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. \end_layout \begin_layout Standard \begin_inset Float figure wide false sideways false status open \begin_layout Plain Layout \begin_inset Graphics filename 2011-09-24_16-59-32.jpg lyxscale 50 width 100col% \end_inset \end_layout \begin_layout Plain Layout \begin_inset Caption \begin_layout Plain Layout Im Weingarten \end_layout \end_inset \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset ERT status open \begin_layout Plain Layout \backslash end{multicols} \end_layout \end_inset \end_layout \end_body \end_document