%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Thema: Poster für den Linuxtag 2010
% Autor: Ulrich Hoffmann
% Datum: 2010-06-06
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
\documentclass[a0,portrait]{a0poster}
%\documentclass[portrait,a0,posterdraft]{a0poster}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Paket zum Erzeugen der Spalten
\usepackage{multicol}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Eingabekodierung
\usepackage[ansinew]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{ae} %wenn Ulaute nicht gehen

\usepackage[ngerman]{babel}
%\begin{übler Trick um die Orinalüberschrift zu unterdrücken}
\addto{\captionsngerman}{\renewcommand*{\refname}{}} %Literaturüberschift unterdrücken
%\ende{übler Trick}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% für Farbe
\usepackage{color} 
\definecolor{darkgreen}{rgb}{0,0.5,0} 
\definecolor{darkblue}{rgb}{0,0,0.5}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Mathepaket
\usepackage{amsmath} 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Ist für Boxen (wie das hier benutzte Ovalbox) zuständig
\usepackage{fancybox}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Graphikpaket, ermöglicht png, jpg und pdf bilder
\usepackage{graphicx}

\usepackage{moreverb}
\usepackage{url}
\usepackage{picins}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Seiteneinstellungen
\renewcommand\baselinestretch{1.35}
\parskip=0.5\baselineskip

\parindent0mm %Einrücktiefe der ersten Zeile eines Absatzes
\topmargin-28pt
\marginparwidth0mm

%Ränder rechts/links
\oddsidemargin-13pt
\evensidemargin-13pt
\textwidth785mm
%\textheight1140mm

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Eigene Definitionen zur Erleichterung des Satzes
\newcommand{\spaltenbreite}{25}   % Spaltenbreite für Bilder
\newcommand{\bildbreite}{25cm}    % Einheitliche Bildbreite

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Box- und Spalteneinstellungen
\setlength{\fboxrule}{3.25mm} %Definiert die Linienstärke für nachfolgende fbox- und framebox-Befehle
\setlength{\fboxsep}{5mm} %Abstand zwischen Rahmen und Text bei den /fbox und /framebox Befehlen.
\setlength{\columnsep}{15mm}     %Spaltenabstand
\setlength{\columnseprule}{1pt}  %Balken zwischen Spalten {0pt}->keine Balken

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Einheitslänge für picture-Umgebungen
%\setlength{\unitlength}{1.0cm}
\unitlength1cm

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Grafikpfad, hier liegen alle Bilder
%\graphicspath{{images/}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Zaehler fuer lineale. Sie werden gebraucht, wenn das Linealmacro
% included wird
\newcounter{skalax}
\newcounter{skalay}


\setlength{\parskip}{1ex}

\begin{document}
\sffamily

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Kopf, hier funktioniert alles mit 'put'
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\parbox{\textwidth}
%{
  \begin{center}
    \vspace*{0.006\textheight}
   % Titel und Autor
    {\Huge \textbf{Die Programmiersprache Forth}\\}%[0.03\textheight]
    \vspace*{0.018\textheight}
    {\LARGE \textbf{}}
  \end{center}
  % Logos einbinden (per Hand plazieren)
  \begin{picture}(0,0)
    \put(69.5 , 1.0){\includegraphics[height=100mm]{drachen.png}}
    \put(71.5 , 0.5){\Large \textsf{\textbf{Swap}}}
    \put(3.0  , 3.5){\includegraphics[height=90mm]{FGLogo.pdf}}
    \put(0.0  , 3.1){\Large \textsf{\textbf{Forth Gesellschaft e.\!\!\;V.}}}
    \put(1.2  , 1.9){\Large \url{www.forth-ev.de}}
    %\put(1.4  , 0.4){}
  \end{picture}
%}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Einstellung des Eckenradius' der ovalen Boxen (\Ovalbox)
\cornersize*{5mm}


\linethickness{0.1mm}
\setlength{\fboxrule}{2.25mm}

	 \begin{Sbox}
\begin{minipage}{\columnwidth}
\begin{verbatim}
: fuellen ( -- )   Ventil auf   bis-voll   Ventil zu ;
: spuelen ( u -- )  0 DO
                       fuellen   10 ( mal ) bewegen   leeren
                    LOOP ;
: waschen ( -- )  reinigen   5 spuelen   schleudern ;
\end{verbatim}
\end{minipage}
\end{Sbox}

\begin{large}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
% neuer Kasten
\Ovalbox
{
  \parbox{\textwidth}{
    \begin{multicols}{3}
      
     \section*{\sffamily Was ist Forth?} 
     Forth ist eine Breitband--Programmiersprache für eingebettete Systeme und Desktop--Computer.
     Forth kommt sowohl zum Erstellen von Programmen für einfache Steuerrechner als auch für Workstations 
     und Großrechner zum Einsatz. Die Vielfalt von Applikationen die mit ihr erstellt wurden umfasst
     Tabellenkalkulationen, Experten-Systeme, verteilte Echtzeit-Steuerungen und Datenbanken. 
     
     Forth besteht wie die natürliche Sprache aus Worten. Der Wortschatz von Forth ist 
     beliebig erweiterbar und die selbst definierten Worte unterscheiden sich nicht von den
     Worten, die bereits im Grundsystem (Kernel) enthalten sind und dienen wie diese dazu,
     noch komplexere Worte zu definieren. Jede Anwendung erweitert den Wortschatz von Forth
     um anwendungsspezifische Worte.
     \vfill
  
     \columnbreak
     \section*{\sffamily Wie programmiere ich mit Forth?}   
     Beim Programmieren in Forth entsteht eine problemorientierte Programmier-- und 
     Kommandosprache (Domänen Spezifische Sprache, DSL). 
     Forth zeichnet sich durch eine interaktive Benutzerschnittstelle aus, 
     die durch die direkte Zugriffsmöglichkeit auf die gesamte Hardware ideal für die 
     Arbeitsweise des \emph{rapid prototyping} auch bei hardwarenahen Problemen ist. 
     Gleichzeitig hat Forth die Vorteile höherer Programmiersprachen:
     Unabhängigkeit von einem speziellen Prozessor und abstrakte Datenstrukturen.
     
%     Für Parameterübergaben und zur Ausdrucksauswertung stellt Forth einen explizit sichtbaren
%     Datenstack zur Verfügung. 
%	 Forth verwendet eine klammerlose Postfix--Notation (UPN) um Ausdrücke darzustellen.
	 
%     \includegraphics[width=\columnwidth]{img4-110.pdf}      

     \section*{\sffamily Wo wird Forth eingesetzt?}
     Forth wirkt häufig im Verborgenen: ob in den Öfen der Großbäckereien, zur Überwachung
     von Betonmühlen, auf dem Ozeanboden bei seismischen Messungen oder in Modellbau--Trucks zur 
     Geräusch--Generierung. Überall verrichtet Forth unscheinbar und zuverlässig seinen Dienst.
     Auch im Browser als Ausführungsplattform für JavaScript oder als Service--Schnittstelle 
     in Geräten (z.\,B.\ WikiReader) kommt Forth zum Zuge. 
       
       
      
     \section*{\sffamily Wer hat's erfunden?}
     Charles Moore entwickelte Forth Ende der 1960er Jahre im Bereich von 
     Linearbeschleunigern und Radioteleskopen (Kitt Peak). Auch heute wird Forth
     dort noch angewendet. Neben Steuerungs--/Regelaufgaben werden dort mit Forth 
     die Daten erfasst und ausgewertet.
     
     \hfil\includegraphics[width=0.2\textwidth,height=0.13\textwidth]{geist.png}\hfill

    \end{multicols}
  }
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% neuer Kasten
\vspace*{0.002\textheight}
\Ovalbox%\fbox
{
  \parbox{\textwidth}{
    \begin{multicols}{2}
           \section*{\sffamily Sind Forth--Programme schwer zu schreiben oder zu lesen?}
     Wie in Forth die Modularität und freie Wortwahl zur Klarheit der Anweisungen
     beitragen können, demonstriert folgendes Beispiel aus einer Waschmaschinensteuerung.
     Jede Wortdefinition benutzt einfache Worte, die vorher defininiert wurden.
\bigskip

     \hspace*{3em}\TheSbox
\bigskip    
     
     Die Tastatureingabe \texttt{waschen} genügt danach für eine Vollwäsche; um dreimal
     zu spülen tippt man \texttt{3 spuelen}. Definition, Parameter und Anweisungen können
     ebensogut von der Tastatur wie von Dateien gelesen werden. 
     
     Ein Forth--System umfasst residente Werkzeuge, mit denen die Quelltexte verwaltet, editiert und
     der kompilierte Code auf Fehler untersucht werden kann. 
     
     Die Zeit, die notwendig
     ist, um eine Änderung im Quelltext vorzunehmen, neu zu kompilieren, um dann 
     erneut zu testen, bemisst sich in Sekunden. Durch dieses interaktive Programmieren
     ist es ökonomisch, auch kleinste Änderungen unmittelbar auszutesten. Es ergibt
     sich so auf natürliche Art die Bottom--Up--Vorgehensweise, bei der aufbauend
     auf Basisfunktionen neue Worte hinzugefügt werden, bis das fertige Programm 
     erstellt ist.
     
    \end{multicols}
  }
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% neuer Kasten
\vspace*{0.002\textheight}
\Ovalbox%\fbox
{
  \parbox{\textwidth}{
    \begin{multicols}{2}
    
    \begin{minipage}{\columnwidth}
     \section*{\sffamily Wie schnell und groß sind Forth--Programme?}
     \parpic[l]{\includegraphics[width=0.50\columnwidth]{img2-066.pdf}}
     Forth ist optimiert auf besonders schnelle Prozeduraufrufe für ein effizientes 
     Laufzeitverhalten, so dass \emph{hierarchisch} programmiert werden kann; mit allen 
     Vorteilen, die sich daraus ergeben (Übersichtlichkeit der Programmierung, Wiederverwendbarkeit
     von Routinen), ohne die bei klassischen Programmiersprachen damit verbundenen langsamen
     Ausführungszeiten. Die entstehenden Programme sind dabei oft wesentlich kleiner, als in
     anderen Programmiersprachen. Ein komfortables Forth-System einschließlich Interpreter, Compiler,
     Editor und Multitasker benötigt weniger als 20 KB Speicherplatz. Forth ist wegen seiner 
     Kompaktheit die Alternative zum Assembler auf Ein--Platinen-- oder 
     Single--Chip--Microcomputern. Forth ist sein eigenes Betriebssystem, arbeitet aber 
     selbstverständlich auch unter den üblichen Betriebssystemen wie MS-DOS, Windows, MacOS 
     oder UNIX/Linux.
     \end{minipage}
     
     \begin{minipage}{\columnwidth}
     \section*{\sffamily Ist Forth eine Hochsprache oder maschinennah?}
     %\piccaption{Bild}
     \parpic[r]{\includegraphics[width=0.39\columnwidth]{img1-028.pdf}}
     Forth unterstützt den direkten Zugriff auf Hardware--Komponenten und wird daher von
     vielen Ingenieuren für den Funktionstest neuer Hardware eingesetzt. Aber Forth besitzt
     auch leistungsfähige Abstraktionsmechanismen, die es zu einer sehr leistungsfähigen,
     problemorientierten Sprache machen. Auf der abstrakten Ebene muss man sich nicht
     mehr um Implementierungsdetails kümmern, sondern kann sich voll auf die Lösung des Problems konzentrieren.
     \end{minipage}
     
     \section*{\sffamily Wie leicht lässt sich Forth portieren?}
     Forth ist überwiegend in Forth geschrieben und daher im allgemeinen in kurzer Zeit für
     einen neuen Prozessor implementierbar. Für fast jeden Micro-, Mini--Computer oder 
     Mainframe ist eine Version erhältlich und häufig ist Forth die erste Sprache, die auf
     einem neuen Prozessor implementiert wird. Aufgrund seines kompakten Aufbaus ist Forth
     für den Benutzer vollständig zugänglich. Die effiziente stackorientierte Architektur
     von Forth wurde mehrfach in Hardware verwirklicht (siehe b16--Prozessor oder MicroCore).
     Die hieraus resultierende Rechnerleistung übertrifft die klassischer CPUs.\bigskip
     
    \end{multicols}
  }
}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% neuer Kasten
\vspace*{0.002\textheight}
\Ovalbox
{
  \parbox{\textwidth}{
    \begin{multicols}{3}
      \section*{\sffamily Was ist die Forth--Gesellschaft e.\!\!\;V.?}
      Die Forth--Gesellschaft (FG) ist ein gemeinnütziger Verein. 
      
      \emph{Die FG
      unterstützt die Anwendung, Weiterentwicklung und Standardisierung der
      Programmiersprache Forth und fördert Kommunikation, Erfahrungsaustausch,
      und Wissensvermittlung zwischen Interessierten, professionellen Anwendern,
      Hobbyisten und Systemanbietern.}\/ (Satzung)
      
      Die Forth--Gesellschaft ist Herausgeberin des Forth--Magazins
      \emph{Vierte Dimension}\/, das vierteljährlich erscheint, und ist
      Veranstalter der Forth--Jahrestagung, die jedes Jahr in einer anderen
      Stadt ausgerichtet wird.
      
      Die Forth--Gesellschaft betreibt den Mikrocontroller--Verleih. Dort können
      Mitglieder Boards mit eingebetteten Forth--Systemen für eigene Experimente
      ausleihen.
      
      Die Forth--Gesellschaft bietet ihren Mitgliedern eine eigene eMail--Adresse,
      die auf Anfrage eingerichtet wird.
      
      Die Forth--Gesellschaft wird vertreten durch drei Personen, dem Direktorium.
      Sie werden jährlich auf der Mitgliederversammlung gewählt. Das Forth--Büro betreut
      die Mitglieder. Literatur, Soft-- und Hardware können dort bezogen werden.
      Forth--Begeisterte treffen sich in \emph{lokalen Gruppen} regelmäßig
      in verschiedenen Städten Deutschlands.
      Kontakte zu Forth--Programmierern können Sie über das Direktorium oder das
      Büro knüpfen.
      
    \end{multicols}
  }
}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% neuer Kasten
%\vspace*{0.002\textheight}
%\Ovalbox%\fbox
%{
%  \parbox{\textwidth}{
%    \begin{multicols}{2}
%      
%    \end{multicols}
%  }
%}
\end{large}
\end{document}
