<title>Stackbasierte Sprachen</title>

<H1>Stackbasierte Sprachen (Forth, Postscript)</h1>

<h2>Offizieller Titel</h2>

185.310 Stackbasierte Sprachen (VU2)

<h2>Anrechnungen</h2>

Wahlfach für die Bachelor-Studien "Data Engineering &amp; Statistics",
"Software &amp; Information Engineering" und "Medizinische Informatik"
und für das Master-Studium "Software Engineering und Internet
Computing".  Anrechenbar als "AK der praktischen Informatik 3" für das
Diplomstudium Informatik.

<h2>Termin</h2>

Vorbesprechung: Mi, 3.10.2007, 15:30 (pünktlich), FH HS4 (gelber
Bereich; andere Vorbesprechungen von <a
href="http://www.complang.tuwien.ac.at/lehre07w">Wahl-LVAs</a> unserer
Gruppe im selben HS von 14:00-16:30).

<p>Vorlesungstermin: 16.10.2007-13.11.2007: Di, 17:15-18:45 <a
href="http://www.wegweiser.ac.at/tuwien/hoersaal/E3A.html">EI3A</a>
(Altes EI, 2. Stock).

<p>Ab 27.11.: Präsentationen zum gleichen Termin; nur am 27.11. findet
der Termin um 15:35-17:00 statt, weil um 17h das Informatikkolloquium
ist (im EI9, Vortrag von Turing-Preisträger C.A.R. Hoare).  Der Termin
am 27.11. findet statt.

<p>Bis 26.11. <a
href="https://www.complang.tuwien.ac.at/anmeldung/">Web-Anmeldung</a>
zur 1. Präsentation.  28.11.-7.1.: <a
href="https://www.complang.tuwien.ac.at/anmeldung/">Web-Anmeldung</a>
zur 2. Präsentation.

<!--<p>Anmeldung über unser <a
href="https://www.complang.tuwien.ac.at/anmeldung/">Web-Anmeldesystem</a>-->

<!--
Vorlesungsteil beendet.-->

<!--<p>8.11.-15.12.2006: <a href="#abgabetermin">Terminvergabe</a>
für die Abgabepräsentation über unser Web-Anmeldesystem.

<p>Präsentationstermine: 9.1.2007, 16.1.2007, 23.1.2007
17:15-18:45 <a
href="http://www.wegweiser.ac.at/tuwien/hoersaal/E3A.html">EI3A</a>
(Altes EI, 2. Stock).-->

<!--<p>Nach Ende des Vorlesungsteils Präsentationen zum gleichen Termin.-->

<!--Vorbesprechung und Anmeldung bei der ersten Vorlesung.  Vorlesungen:
ab 10.10.2003 jeden Fr 10h-11:30h (pünktlich) <a
href="http://www.wegweiser.ac.at/plaene/gif/E_EI6_0037_00_1-1.gif">EI6</a>
(Altes EI, linker Eingang (Stiege 9), 4. Stock (für weniger
Sportliche: nach hinten zu Stiege 10, Lift in den 6. Stock nehmen, und
dann wieder nach vorne zur Stiege 9)).  Am 17.10.2003 findet keine
Vorlesung statt.-->

<!--Vorbesprechung: Mi, 8.10.2003, 15:30 (pünktlich), Seminarraum
Argentinierstraße 8, 5. Stock (der Ort kann sich noch ändern, am
besten kurz vor der Vorbesprechung noch einmal nachschauen).  Weitere
Termine werden bei der Vorbesprechung vereinbart.-->

<!--Vorlesungsteil beendet. 

<p>Präsentationen beendet.  Wer noch abgeben will, kann das nach
Voranmeldung jederzeit bei mir machen.-->

<!--Präsentation der abgegebenen Beispiele ab
Fr. 9.1.2004 10h-11:30h (pünktlich) <a
href="http://www.wegweiser.ac.at/plaene/gif/E_EI6_0037_00_1-1.gif">EI6</a>
(Altes EI, linker Eingang (Stiege 9), 4. Stock (für weniger
Sportliche: nach hinten zu Stiege 10, Lift in den 6. Stock nehmen, und
dann wieder nach vorne zur Stiege 9)).  Fuer die Präsentation hat
jeder Teilnehmer maximal 15min Zeit.

<p>Bitte nehmen Sie ihre Präsentation auf CD, 3.5"-Floppy, USB-Stick,
oder dem eigenen Notebook mit.  Bis jetzt habe ich noch keine
funktionierende Netzwerkverbindung zusammengebracht.-->

<!--Die Vorlesung findet ab 10.10.2002 jeden Donnerstag 9h-10h in der
Abteilungsbibliothek (Argentinierstraße 8, 4.Stock) statt.--><!--Am
7.1.2002 gibt es keine Vorlesung.-->

<!--<p>Eventuell gibt es am 4.3.2002 um 13:30 eine allgemeine
Präsentation/Abgabe.  Wer da präsentieren will, soll bitte bis
28.2.2002 eine Email an <a
href="mailto:anton@mips.complang.tuwien.ac.at">mich</a> schicken.  Ich
schicke dann am 1.3.2002 eine Verständigung an alle, ob diese
Präsentation stattfindet oder nicht.

<p>Wer keine Präsentation machen will, kann sein Beispiel jederzeit
(nach Voranmeldung) bei mir abgeben.  Ich empfehle, es bald zu machen
(z.B. bis Anfang März), denn erfahrungsgemäß wird es sonst gar nicht
gemacht.-->

<!--<p>Die Vorlesungen finden dann wahrscheinlich in der
Abteilungsbibliothek (Argentinierstraße 8, 4.Stock) statt, der
Zeitpunkt wird bei der Vorbesprechung vereinbart und dann hier
angekündgt.-->

<!--Keine Vorlesungen mehr. Bei Fragen zum übungsteil bzw. zur Abgabe
wenden Sie sich an <a href="../">mich</a>.-->

<!--
<h2>Status</h2>

Vorlesungsteil beendet.  Am 11.1., eventuell am 18.1., und am
25.1. finden die Übungspräsentationen statt.  Termine bisher:

<pre>
11.1.2005 Monitzer Eder Roschger Greiner
18.1.2005
25.1.2005 Revucky Stubenschrott Wenninger Mecl
</pre>

Wer noch keinen Termin hat, soll sich bitte bei mir melden.  Am
18.1. sind noch Termine verfügbar.
-->

<!--Forth-Teil beendet.  Am 30.11. kommt Postscript dran.-->

<!--Bis zum nächsten Termin (9.11.; 2.11. ist vorlesungsfrei) ist das <a
href="http://www.complang.tuwien.ac.at/forth/gforth/Docs-html/Tutorial.html">Tutorial</a>
komplett durchzuarbeiten.-->

<h2>Umfeld</h2>

Postscript ist bekannt als Seitenbeschreibungssprache für
Laserdrucker.  Ein Ableger von Postscript, PDF, gewinnt (<a
href="../why-not-pdf.html">leider</a>) zunehmend an Populartität als
Dokumentenbeschreibungssprache.  Tatsächlich ist Postscript aber eine
vollwertige höhere Programmiersprache.

<p><a href="../../forth/faq/faq-general.html">Forth</a> ist eine
Programmiersprache auf dem semantischen Niveau von C.  Da sie sich
auch in sehr eingeschränkten Umgebungen noch gut verwenden läßt, ist
sie beliebt für Embedded-Control-Applikationen. Eine prominente
Anwendung von Forth ist der in SPARC-Systemen und PCI-PowerPC-Systemen
verwendete FCode zur Konfiguration der Steckkarten.

<p>Gemeinsam ist diesen Sprachen u.a. der für den Programmierer
sichtbare Stack, der eine zentrale Rolle spielt. Die Unterschiede
liegen bei der Typüberprüfung, beim Binden von Namen, und bei der
Speicherverwaltung.

<p>Eine weitere prominente stackbasierte Sprache ist die JavaVM, die
allerdings nicht für die direkte Programmierung durch Menschen
ausgelegt ist, und daher in dieser Lehrveranstaltung nur am Rande
vorkommt.

<h2>Lehrziel</h2>

Erwerb von Programmierkenntnissen in Forth und
Postscript. Kennenlernen der besonderen Eigenschaften dieser Sprachen,
des sich daraus ergebenden Auswirkungen auf Programmierstil (kurze
Prozeduren, viel Wiederverwendung) und Programmiermethodik
(Metaprogrammierung, andere Debuggingmethode). Besseres Verständnis
für die Konzepte von Programmiersprachen.

<h2>Inhalt</h2>

Überblick über Postscript und Forth. Einfache Programmierbeispiele in
diesen Sprachen. Lösung einer selbstgewählten Aufgabe in einer
stackbasierten Sprache.

<h2>Abgabe</h2>

Schreiben Sie ein beliebiges Programm in Forth oder Postscript, und
präsentieren Sie es dann.  Präsentieren Sie, was das Programm macht,
und wie es implementiert ist.

<p>Weisen Sie dabei besonders auf Programmteile hin, in denen Sie die
besonderen Spracheigenschaften der gewählten Sprache verwendet haben
(also Programmteile, die nicht 1:1 in C oder Java übersetzbar wären;
die Postscript-Graphik zählt nicht, die könnte man in C oder Java mit
einer Library ergänzen).  Wenn Ihr Programm solche Programmteile hat,
darf es beliebig kurz sein.

<p>Da es den meisten aber schwer fällt, so etwas im vorhinein zu planen,
planen Sie lieber ein Programm in der Größenordnung 50-200 Zeilen,
das sie möglichst idiomatisch schreiben (z.B. kurze Definitionen,
richtige Reihenfolge der Werte am Stack).  Wenn ihnen dabei eine
Verwendung einer besonderen Spracheigenschaft einfällt, führen Sie sie
durch, wenn nicht, geben Sie ihr Programm eben so ab (auch dann werden
Sie wohl positiv beurteilt).

<p>Heuer gibt es zwei Präsentationen mit je 15min (Sie müssen den
Rahmen aber nicht ausnutzen).

<ul>

<li>Bei der ersten Präsentation muss Ihr Programm noch nicht
funktionieren, aber signifikante Teile des Quellcode sollten schon
vorhanden sein.  Sie präsentieren das zu lösende Problem und zeigen vor allem
Ihren Quellcode, und erhalten dann Tipps, wie man das
besser/idiomatischer schreiben koennte (lassen Sie genuegend Zeit für
diese Diskussion).  Sie können auch Fragen stellen, wie man etwas in
der gewählten Programmiersprache schreibt.

<li>Bei der zweiten Präsentation erinnern Sie das Publikum noch einmal
an das gelöste Problem, zeigen das laufende Programm, und Teile des
Quellcodes, insbesondere die Teile, in denen Sie die besonderen
Spracheigenschaften verwendet haben; und sie müssen natürlich die
Frage nach den besonderen Spracheigenschaften, die Sie verwendet
haben, beantworten.  Vor allem diese Präsentation wird zur Benotung
herangezogen.

</ul>

<h2>Abgabe-Directory</h2>

Wenn Sie Ihre Abgabe im Web veröffentlichen wollen, legen Sie bitte
mit Ihrem Account auf der g0 in
/nfs/unsafe/httpd/ftp/pub/anton/lvas/stack-abgaben/07w ein Directory
an (das sollten Sie dürfen, und nur Sie (und root) können es dann
entfernen) und legen Sie in diesem Directory die Programm-Sourcen und
ein bisschen Dokumentation ab.  In der Dokumentation sollte zumindest
stehen, was das Programm macht, wie man es aufruft, und wer die
Autoren sind; es ist natürlich auch erlaubt, mehr zu schreiben,
z.B. über bemerkenswerte Features oder Programmiertechniken.
Sinnvollerweise schreibt man die Dokumentation in eine Datei
HEADER.html, README.txt, oder index.html (je nach Namen ergibt das
unterschiedliche Effekte bei der <a
href="http://www.complang.tuwien.ac.at/anton/lvas/stack-abgaben/07w/">Web-Darstellung</a>).

<p><a href="stack-abgaben.html">Einige frühere Abgaben</a>


<h2><a name="abgabetermin">Termin/Anmeldung zur Präsentation</a></h2>

Die Termine sind:

<pre>
1. Präsentation: 27.11., 4.12., 11.12.  Anmeldung: 13.11.-26.11.
2. Präsentation:  8.1.,  15.1., 22.1.   Anmeldung: 28.11.-7.1.
</pre>

Die Terminvergabe erfolgt über unser <a
href="https://www.complang.tuwien.ac.at/anmeldung/">Web-Anmeldesystem</a>.
Und zwar müssen Sie dabei folgendermaßen vorgehen:

<ul>

<li> Eines der Mitglieder der Gruppe klickt auf "Gruppe bilden" und
trägt die Matrikelnummer seiner Partner ein (zur Gruppengröße siehe unten).

<li> Wenn die Gruppe gebildet ist, sollte eines der Gruppenmitglieder
auf "Abgabegespräche anzeigen" und "Termine anzeigen" klicken, um
sich dort zum ersten Präsentationstermin anzumelden.

<li>Ab dem 28.11. kann man sich auf die gleiche Weise für den zweiten
Termin anmelden.  Die Gruppe braucht dabei nicht neu gebildet werden.

</ul>

Im WS 2007/2008 ist im Normalfall eine Gruppengröße von drei Personen
vorgesehen.  Wenn Sie eine andere Gruppengröße bilden wollen,
schreiben Sie an <tt>studass@complang</tt>.<tt>tuwien.ac.at</tt>.
Beachten Sie allerdings, dass die Anzahl der Termine begrenzt ist,
sodass wir nur eine begrenzte Zahl kleinerer Gruppen akzeptieren
können.

<h2>Unterlagen</h2>

<a href="skriptum-stack.html">Notizen</a> (auf Anfrage auch als
Hardcopy erhältlich).  <a href="stack-sprachen/slides.ps8">Folien</a>
(<a href="stack-sprachen/slides.pdf">PDF</a>).

<h2>Vortragender/Betreuer</h2>

<a href="../">Anton Ertl</a>
