%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 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}