Praktische Informatik 1, WS 97/98

Prof. Dr. Manfred Schmidt-Schauß

Fachbereich Informatik Johann Wolfgang Goethe-Universität

Postfach 11 19 32 D-60054 Frankfurt

E-mail:schauss@ki.informatik.uni-frankfurt.de URL: http://www.ki.informatik.uni-frankfurt.de/

Tel: 069 / 798 28597 o. 28213 Fax: 069/ 798 28919

31. Oktober 1997

Kapitel 1

Einführung: Was ist Informatik?

Üblicherweise bezeichnet man als Informatik (Im englischsprachigen Raum: Computer Science: Computer-Wissenschaft) die Wissenschaft von der systematischen Darstellung, Erkennung, Verarbeitung, Speicherung und Übertragung von Information.

Im Zentrum steht die maschinelle Verarbeitung von Information. Hierbei sind die jeweiligen Rahmenbedingungen und Anwendungen zu beachten: digitale Rechensysteme, Vernetzung, verteilte Daten und Rechner, wissenschaftliches Rechnen, Dokumentenverwaltung, Bildverarbeitung, . . ..

Wichtigster Aspekt hierbei ist die Modellbildung. Dies umfaßt Modellierung und Beschreibung komplizierter Zusammenhänge oder Vorgänge unserer Anschauung durch Methoden der Informatik.

Ein Ziel der Informatik ist es, eine angemessene Modellierung für gegebene Probleme in formaler Weise zu vollziehen und schließlich auf einen Formalismus zu übertragen, der mechanisch von einer Rechenanlage verarbeitet werden kann.

1.1 Was ist Information?

Information stammt aus dem Lateinischen “informare” (Gestalt geben) ab. Es bedeutet im übertragenen Sinne: “Jemanden durch Unterweisung bilden”.

Für die Informatik, die sich als Methodenlehre für den Bereich (mechanisches Verarbeiten von) Information auffassen läßt, ist der Begriff “Information“ von fundamentaler Bedeutung. Das Wort “Information“ wird normalerweise in folgendem Sinne benutzt: “Information ist die Kenntnis über Sachverhalte und Vorgänge“ in der realen Welt. Da dieser Begriff der Information formal nicht in vollem Sinn zu erfassen ist, geht man über zu einer formalen Repräsentation, die dann verarbeitet wird. Der umgekehrte Schritt, aus dieser Verarbeitung Information Nutzen zu ziehen, erfordert eine Deutung dieser Repräsentationen.

Folgendes Bild kann dies veranschaulichen:

In der Informatik trennt man klar zwischen Repräsentation und Inhalt (Information). Als Beispiel sei die Behandlung der Zahlen genannt. Normalerweise sagt man bei Betrachtung der Zahl 21, dies ist die Zahl selbst. Dies ist allerdings nur eine Darstellung der Zahl mit zwei Zeichen. Z.B. die Darstellung als römische Zahldarstellung wäre XXI. Die Aussage “Die Multiplikation von zwei Zahlen ist schwerer als die Addition“ ist eine Frage der Repräsentation.

Da man nur Repräsentationen verarbeiten kann, und man die Deutung durch einen Beobachter außerhalb (des Rechners) erfolgt, hat man einen Begriff der formalen Deutung (Interpretation) der Repräsentationen entwickelt (Semantik).

Eine andere formale Verwendung des Begriffs “Information” findet in der Nachrichtentechnik (Telekommunikation) statt. Der amerikanische Mathematiker C.E. Shannon begründete 1947 die Informationstheorie (Buch: The Mathematical Theory of Communication), in der Probleme der Speicherung und Übertragung von Informationen behandelt werden. Allerdings ist diese Beschränkung des Begriff Information irreführend. Wir werden diesen Begriff im allgemeineren Sinne verwenden.

Blockschema eines Kommunikationssystems: Modell für die Übertragung von Information.

Kommunikation ist der Austausch von Informationen zwischen Partnern zur Fortschreibung eines gemeinsamen Bewußtseins. Im Zusammenhang mit Kommunikation tauchen auch andere Begriffe auf; einige davon sind:

Symbole: Codierungen, denen ein Empfänger eine Bedeutung zumessen kann.

Nachrichten: Mitteilung vereinbarter Symbole (Folge von Symbolen).

Problem: Übertragung umfangreicher Informationsmengen mit möglichst wenig Symbolen.

Shannonscher Informationsbegriff: Maß für den mittleren “Informations“gehalt, den man mit einer gegebenen Codierung übertragen kann.

Dieser Begriff hat sich als ungeheuer fruchtbar für die Codierung, Komprimierung, Ver- und Entschlüsselung von Nachrichten erwiesen; es ist leider für die Informatik nicht ausreichend, denn es wird nicht der semantische Gehalt einer Nachricht betrachtet, sondern nur die Redundanzfreiheit der syntaktischen Darstellung.

Die zur Definition verwendeten Begriffe

• Information und ihre Verarbeitung

• digitale Rechnersysteme

bilden jedoch – und das demonstriert die historische und technologische Entwicklung der Informatik eindrucksvoll – eine unerschöpfliche Quelle für Interpretationsmöglichkeiten. Permanent sieht sich die Informatik von folgenden Fragestellungen herausgefordert:

• Welche Ausschnitte der universellen Kategorie “Information” können (überhaupt) digitale Rechnersysteme effektiv und effizient innerhalb vorgegebener Ressourcen verarbeiten?

• Wie können digitale Rechnersysteme weiterentwickelt werden, damit neue Ausschnitte der Kategorie “Information” verarbeitet werden können!

1.2 Architektur eines von-Neumann-Rechners

Diese Rechnerarchitektur hat ihren Namen von dem ungarisch-amerikanischen Mathematiker John von Neumann (1903-1957). Diese Architektur wurde 1946 zur Gestaltung eines universellen Rechners vorgeschlagen.

Die vier Bestandteile eines von-Neumann-Rechners sind:

1. Rechnerkern ((Zentral-) Prozessor): Ausführung von Programmen in einer Maschinensprache; d.h. Folgen von Befehlen zur Ausführung von Operationen (arithmetisch., logisch usw.) in einer bestimmten Reihenfolge.

2. Arbeitsspeicher (Haupt- oder Zentral-Speicher): Speicher für Programme als auch für Daten zur Ausführung durch den Rechnerkern.

3. Peripherie: Plattenspeicher (Hintergrundspeicher), Drucker, Bildschirm, Tastatur, Maus usw. sowie Kommunikationskanäle, die über Ein/Ausgabe- und Kommunikationsprozessoren (auch Kanäle oder E/A-Werke genannt) mit dem Rechnerkern und dem Arbeitsspeicher kommunizieren.

4. Bus-Systeme: zur Verbindung dieser Komponenten und zur Übertragung von Befehlen, Adressen, Daten sowie Steuersignalen.

Man unterscheidet zwischen “Hardware“ und “Software“: Hardware des Rechners: die technischen Geräte, die zusammen einen Rech-

ner ausmachen.

Software: Programme (und ihre Dokumentation) z.B. Betriebssysteme, Übersetzer für Programmiersprachen, Datenbanksysteme, Anwendungsprogramme usw.

Einige kennzeichnende Merkmale für Computersysteme:

Geschwindigkeit: Die Verarbeitungsgeschwindigkeit der CPU’s von gängigen PC’s liegt heute im Bereich von > hundert MHz, wenn man nur die Taktfrequenz berücksichtigt. Dies bedeutet einige Millionen Rechenoperationen pro Sekunde. Diese Geschwindigkeit wird im Moment immer noch durch neue technische Entwicklungen gesteigert, so daß diese sich innerhalb von wenigen Jahren verdoppelt.

Durch diese hohe Verarbeitungsgeschwindigkeit sind Computer in der Lage, eintönige und mechanisierbare, sich wiederholende geistige Tätigkeiten, mit hoher Geschwindigkeit durchzuführen, so daß z.B. wissenschaftlich-technische Berechnungen, die sehr viele Rechenoperationen erfordern, heute nur noch mittels Computern durchgeführt werden.

Miniaturisierung: Die technischen Bauteile eines Rechners werden immer kleiner, die Energieaufnahme und das Gewicht pro Rechenleistung wird geringer, so daß die Rechenleistung “leichter“ verfügbar gemacht werden kann: Laptops, Uhren, Waschmaschinen, Autos, Heizung, Flugzeuge, Radios, Fernseher, Telefon, …: fast alle komplexeren technischen (elektrischen) Geräte haben interne programmgesteuerte digitale Verarbeitung.

Zuverlässigkeit Computer, die Algorithmen ausführen, sind hierbei fehlerfrei. D.h. ein Computer kann z.B. die Berechnung der Zahl π auf eine Million Stellen nach dem Komma ausführen, ohne sich dabei zu “verrechnen“. In diesem Sinne unterscheidet sich ein Computer von einem menschlichen Rechner.

Allerdings gibt es zahlreiche mögliche Fehlerquellen, wie bei allen technischen Systemen:

• Der Algorithmus kann falsch sein: Die Seniorin von 101 Jahren bekommt eine Auffordnung sich zur U1-Untersuchung beim Kinderarzt zu melden.

• Der Algorithmus ist richtig, aber die menschliche Interpretation / Handhabung falsch:

– In Eingabeformularen kann die Beschriftung oder der Fehlertext irreführend sein.

– Der Bearbeiter hat seine Brille vergessen und erkennt die Zeichen auf dem Bildschirm nur teilweise.

– Ein Dekompressionsalgorithmus wird auf eine Datei von falschem Format angewendet.

– IBM-Handbuch: “Folgende Aktion ... kann zu undefinierten Re-

sultaten führen.“.

• Basisalgorithmen in der Hardware können fehlerhaft sein: Die Berechnung von Fließkommazahlen liefert manchmal falsche Ergebnisse (eine Version eines Intelprozessors).

• Speicherfehler oder Gamma-strahlen (Höhenstrahlung) können in seltenen Fällen einzelne Bits verändern.

• Das System kann unsicher sein, da es gegen Fremdmanipulation nicht ausreichend geschützt ist. Dies gilt insbesondere für alle Rechner, die in einem Netz zugänglich sind.

Die Aufgabe der Informatik ist die Erkennung, Beseitigung von Fehlern und Fehlermöglichkeiten ebenso wie die Bereitstellung von Werkzeugen und Methoden, die diese Fehler minimieren.

Speicher: Ein Computer kann große Mengen an Informationen speichern und verarbeiten. Normale Festplatten haben ein Kapazität im Bereich von Gigabyte (10^{9} Zeichen). Berücksichtigt man das WWW (world-wide-web, weltweite Vernetzung), so ergeben sich riesige Mengen an gespeicherter und verfügbarer Information. Hier gibt es einen Zusammenhang zur Zugriffsgeschwindigkeit /möglichkeit.

Kosten: Die niedrigen Kosten von Rechenleistung / Speichermedium bei bestimmten Anwendungen im Vergleich zu anderen Methoden bewirken eine zunehmende Computerisierung. Verwaltungsarbeit von Standardfällen ist mit dem Computer vergleichsweise einfach und billig durchzuführen. Die hohen Arbeitskosten in den industrialisierten Ländern erzeugen einen hohen ökonomischen Druck zur Einführung von Computern in verschiedenste Lebensbereiche: Beispiele: Flugreservierung, Kartenreservierung für Theaterveranstaltungen, Bankgeschäfte: Geldabheben, Überweisungen.

Verwendbarkeit: . Neben den wissenschaftlichen, statistischen und betriebswirtschaftlichen Anwendungen gibt es neuere Anwendungen im Bereich Medien, weltweite Datenbanken, Z.B. Telefon, Bücher, Fernsehen, Film, Zeitungen, Kommunikation und Informationsbeschaffung im WWW. Simulationen der realen Welt, Wettervorhersage, (Computerspiele).

1.3 Algorithmus

1.3.1 Was ist ein Algorithmus?

Der Name “Algorithmus” leitet sich aus dem Namen des persischen Mathematikers Ibn Musa Al-Chwarismi (ausgesprochen: Al-Charesmi) ab. Er schrieb bereits im 9. Jahrhundert ein Buch über die “Regeln der Wiedereinsetzung und Reduktion”.

Die Algorithmen bilden ein grundlegendes Konzept der Informatik. Ein Algorithmus ist eine mit formalen Mitteln beschreibbare, mechanisch nachvollziehbare Verarbeitungsvorschrift zur Lösung einer Klasse von Problemen.

Der intuitive Begriff “Algorithmus“ läßt sich nicht völlig formal präzisieren, sondern nur umschreiben. Wir werden noch genauer präzisieren, was darunter alles verstanden wird. In der theoretischen Informatik wird der Begriff “Algorithmus“ spezialisiert und genau formalisiert, um z.B. auch beweisen zu können, daß es für bestimmte Problemklassen keinen Algorithmus gibt.

Die Verarbeitungsvorschrift muß formal exakt sein, um Lösungsverfahren für die unterschiedlichen Probleme so zu formulieren, daß ihre Bearbeitung in Form eines Programms von einem Rechner übernommen werden kann: man benötigt eine Möglichkeit zur Mitteilung der Verarbeitungsvorschrift an den Rechner, so daß sie von einem Rechner ausgeführt werden kann. I.a. ist das eine Programmiersprache zur Repräsentation von Algorithmen. Ein Algorithmus kann aber auch in anderer Form vorliegen: als (verteilte) Menge von Programmen und Daten. Auch hier muß man unterscheiden zwischen der Verarbeitungsvorschrift als solcher und der Repräsentation im Rechner.

Wir wollen den Begriff Algorithmus auch in erweiterter Form verstehen, so daß auch folgendes noch unter einen erweiterten Algorithmusbegriff fällt: z.B. Aufruf von Zufallsgeneratoren, nichtdeterministische Verarbeitungsvorschriften (die an bestimmten Stellen im Verfahren mehrere Möglichkeiten erlauben), Verfahren, die ständig neue Eingaben (Daten aus der Umwelt, von Meßgeräten oder interaktiv) aufnehmen und verarbeiten, . . ..

Algorithmen erfordern geeignete Strukturierung der verarbeiteten Daten: es gibt eine enge Wechselwirkung zwischen Algorithmen und verwendeten Datenstrukturen.

Eine Spezifikation wird i.a. als Vorstufe zum Algorithmus angesehen: Die Spezifikation sagt, WAS erreicht werden soll, während der Algorithmus genau sagt WIE es gemacht werden soll. Diese Spezifikationen können informell (umgangssprachlich oder unscharf) formuliert sein. Es gibt auch Werkzeuge, die formale Spezifikationen mit den zugehörigen Algorithmen vergleichen können , so daß man dann im Prinzip überprüfen kann, ob der Algorithmus der Spezifikation entspricht. Es gibt auch Programmiersprachen und Werkzeuge, die Spezifikation entweder “ausführen“ können, d.h. die zugehörige Lösung berechnen können, oder solche, die aus der Spezifikation einen Algorithmus generieren.

Wichtige Kriterien, die für die Bewertung von Algorithmen eine Rolle spielen, sind:

Terminierung Der Algorithmus hält für jedes Problem der Problemklasse an.

Korrektheit Der Algorithmus berechnet das gewünschte Ergebnis.

Effizienz Der Algorithmus ist effizient (schnell, wenig Speicher, wenig Kommunikation, billig, wenig Handarbeit, usw.)

Weitere erwünschte (pragmatische) Eigenschaften von Algorithmen (Programmen) sind:

Einfachheit

Verständlichkeit, Wartungsfreundlichkeit

Robustheit Abgesichert gegen viele Fehlermöglichkeiten.

Algorithmen manipulieren Daten; die Verarbeitungsvorschrift gibt an, wie Eingabedaten schrittweise in Ausgabedaten umgewandelt werden.

Wobei zu beachten ist, daß Daten Zeichenfolgen zur Darstellung von Informationen sind; speziell für die Informationsverarbeitung in Rechnern (Daten sind Signale in digitaler Darstellung).

Wir werden im folgenden generell den Begriff “Algorithmus” für Verarbeitungsvorschriften zur Berechnung von Funktionen und für reaktive Systeme benutzen. Zum Zweck der Präzisierung des Begriffs “Algorithmen” werden wir zur Berechnung der Funktionen auch andere Modellbegriffe verwenden.

1.3.2 Reaktive Systeme

Ihre Aufgabe ist es, fortwährend auf Ereignisse und Daten aus ihrer Umgebung (Umwelt) zu reagieren.

Sie besitzen innere Zustände, und die Reaktion kann vom bisherigen Zustand abhängen. Zustände werden in der Zeit eingenommen; es gibt also einen Zeitbegriff. Einsatzfelder für reaktive Systeme:

• Betriebssysteme in Rechnern • Überwachung und Steuerung technischer Prozesse (z.B. Fertigungsauto-

matisierung).

• Eingebettete Systeme z.B. Computerisierte Funktionen in Fahrzeugen, in Industrieunternehmen.

• Adaptive Systeme: eingebettete Systeme, die sich der Veränderung der Wirklichkeit anpassen.

Die Reaktionen enthalten in vielen Fällen die Ausführung von Algorithmen.

1.3.3 Prozeß

Die Ausführung eines Algorithmus nennt man auch Prozeß, dessen Ablauf man sich anhand eines Ablaufprotokolls veranschaulichen kann.

• Technik zum Testen eines Algorithmus (Programms), bei dem die Werte von Parametern nach jedem Verarbeitungsschritt festgehalten werden.

• Es eignet sich zur Überprüfung eines Programmes mit Papier und Bleistift.

Beispiel 1. Algorithmus von Euklid (ca. 300 v. Chr.) zur Berechnung des größten gemeinsamen Teilers zweier natürlicher Zahlen b, c > 0 (Algorithmus wahrscheinlich 200 Jahre älter).

ggT (b, c) = max(k | k teilt b ∧ k teilt c ∧ k ∈ IN_{0})

1. Ein einfacher rekursiver Algorithmus (in Gofer):

ggt x y = if x <= 0 || y <= 0
                then error "Fehler im GGT"
                else if x > y then ggt (x-y) y
                        else if x == y then x else ggt x (y-x)

2. Ein einfacher iterativer Algorithmus:

ggtwh  x y = if x <= 0 || y <= 0 then error "Fehler im GGT"
               else (tracewhile (\(x,y) -> x /= y)
                                (\(x,y) ->  if x > y then (x - y,y)
                                                        else (x,y - x))
                                (x,y))
ggtwh 120 144  -->
[(120,144), (120,24), (96,24), (72,24), (48,24), (24,24)]

Man sieht die Arbeitsweise des Verfahrens: Die Werte für x, y werden stets reduziert, und danach wird das ganze wiederholt. Die Funktion tracewhile hat drei Parameter:

• Eine Funktion, die x, y auf Ungleichheit testet:

• Eine Funktion, die den ggt-Algorithmus auf das Paar (x, y) anwendet • Die Anfangswerte als Paar.

1.4 Was macht Informatik zur Wissenschaft?

Jede Wissenschaft muß sich die Frage stellen, aus welchen Grundlagen sie ihre Selbstverständnis bezieht, was ihre unverwechselbaren Denkweisen sind, und was die grundlegenden Fragestellungen dieser Disziplin sind.

Diese Frage ist noch nicht hinreichend, sondern erst ansatzweise diskutiert. Was sind mögliche fundamentale Ideen und Fragestellungen, die in allen Bereichen der Informatik von Bedeutung sind?

Fundamentale Idee: allgemein definiert als ein Denk-, Handlungs-, Beschreibungs- oder Erklärungsschema, das

1. in verschiedenen Bereichen einer Wissenschaft vielfältig anwendbar oder erkennbar ist.

2. auf jedem intellektuellen Niveau aufgezeigt und vermittelt werden kann (z.B. in Gymnasien ebenso wie in der Universitäten oder in der industriellen Praxis)

3. in der historischen Entwicklung einer Wissenschaft beobachtet werden kann und langfristig relevant bleibt,

4. einen Bezug zu Sprache und Denken des Alltags und der Lebenswelt besitzt.

Wie erkennt man fundamentale Ideen in der Informatik?

Der wesentliche Zweck der Wissenschaft Informatik ist es im weitesten Sinne, den Entwicklungsprozeß von (digitalen) Informationssystemen (Hard- und Software) zu erforschen und Theorien, Methoden und Werkzeuge hierfür bereitzustellen. Beispiele übergreifende Ideen / Fragestellungen / Methoden sind:

• digitaler Rechner (Computer): Anwendbarkeit, Machbarkeit, Grenzen.

• Untersuchung von formalen Repräsentationen.

• Algorithmisierung: Entwurfsparadigmen, Konstruktionsprinzipien

• Analyse von Algorithmen

• Vermeidung, Auffinden und Eliminieren von Fehlermöglichkeiten.

• formale Beschreibungstechniken für Algorithmen, Transformation zwischen Sprachen

• Strukturierte Zerlegung hochkomplexer Systeme, Abstraktionen, Hierarchisierung, Modularisierung

Informatik läßt sich nicht nur einer Wissenschaftsgruppe zuordnen. Sie besitzt Aspekte

• einer Grundlagenwissenschaft (vergleichbar mit der Philosophie oder der Mathematik), da sie grundlegende Begriffe wie Information, Berechnung, Sprache, Komplexität, Zufall, Determinismus usw. neu begründet und mit ihren Formalismen in fast alle Wissensgebiete hineinwirkt.

• einer Systemwissenschaft, die Organisation als Struktur und Art der Informationsverarbeitung begreift und gesellschaftliche, politische, wirtschaftliche und technische Organisationsformen sowohl entwerfen hilft als auch direkt unterstützt.

• einer Ingenieurwissenschaft (in besonderem Maße), da sie sich mit dem Entwurf, der Konstruktion und der Realisierung von (komplexen) Systemen befaßt.

• einer Naturwissenschaft, wenn sie “modellierte“ Welten analysiert und simuliert.

Die enorme Ausbreitung der Rechnertechnik, die ständig fortschreitende technische Entwicklung, die zunehmende Vernetzung, und das Vordringen von digitalen Computern in immer mehr Anwendungsbereiche unterwirft die Disziplin Informatik ständig weiterentwickelten und veränderten technischen, ökonomischen, rechtlichen, sozialen und kulturellen Randbedingungen, die sie kritisch reflektieren muß, um den an sie gestellten Anforderungen gerecht zu werden.

Da sie ein wichtiger Träger der Informations- und Wissensgesellschaft ist, erwächst der Informatik eine besondere Verantwortung für Wirtschaft und Gesellschaft.

1.5 Wechselwirkung mit anderen Disziplinen:

Es gibt vielfältige Wechselwirkungen, wobei diese Liste unvollständig ist und diese nur andeuten soll.

Mathematik Analysis, Algebra, Stochastik, Numerik, Logik, Kryptographie, …

Elektrotechnik Schaltkreise, Halbleitertechnik, Mikroelektronik, Regelungstechnik, …

Vermittlungstechnik Informationstheorie, Glasfasertechnik

Physik Hochintegrierte Schaltkreise

Maschinenbau Robotik

Jura Datenschutz, Copyright von Software, Copyright von Dokumenten im www. Kriminalität im Zusammenhang mit Computer, Netzen, Psychologie Mensch-Maschine-Kommunikation, Benutzeroberfläche, Ergono-

mie,Kognitive Simulation, Problemlösen, Denken, Sprechen Biologie Neurophysiologie, künstliche neuronale Netze Wirtschaftswissenschaften Optimierungsverfahren, Projektplanung und

Abwicklung, Betriebsorganisation Gesellschaftswissenschaften Soziale Implikationen der Computerisierung,

Vernetzung, Datenschutz Linguistik Programmiersprachen, natürliche Sprache: Verarbeitung, Überset-

zung, …

Literaturverzeichnis

[AL92] Hans-Jürgen Appelrath and Jochen Ludewig. Skriptum Informatik - eine konventionelle Einführung. Teubner Verlag, 1992.

[AS85a] Harold Abelson and Geral Jay Sussman. Structure and interpretation of Computer Programs. MIT Press, 1985.

[AS85b] Harold Abelson and Geral Jay Sussman. Struktur und interpretation von Computer Programmen. Springer-Verlag, 1985.

[AU92] Alfred V. Aho and Jeffrey D. Ullman. Foundations of Computer Science. Computer Science Press, 1992.

[BG91] Friedrich L. Bauer and Gerhard Goos. Informatik 1. Teubner Verlag, 1991. 4.te Auflage.

[BW88] Richard Bird and Philip Wadler. Introduction to Functional Programming. Prentice-Hall International, London, 1988.

[Coy92] Coy. Sichtweisen der Informatik. Vieweg, 1992.

[Dro97] Oswald Drobnik. Informatik i, 1997. Skript.

[GL90] Les Goldschlager and Andrew Lister. Informatik – Eine moderne Einführung. Hanser Verlag, 1990.

[Man89] Udi Manber. Introduction to algorithms. Addison Wesley, 1989.

[Pep92] Peter Pepper. Grundlagen der Informatik. Oldenbourg, 1992.