Informatik


Gastartikel vom Mai 2021 von Prof. Dr. J. Gutknecht

Professor Emeritus ( Curriculum Vitae)
am Informatikdepartement der ETH Zürich

Einleitung

Angenommen, jemand stellt dich bei deiner Studien- oder Berufswahl vor die Entscheidung ob du die Zukunft mitgestalten oder lieber Trittbrettfahren willst. Falls du dich fürs Trittbrettfahren entscheidest ist das natürlich ok und, vor allem, bequem. Aber leider ziemlich unbefriedigend und langweilig. Im anderen Fall führt kein Weg an der so genannten "Digitalen Kompetenz" vorbei. Tönt ja toll, aber was soll denn das sein? Während "Kompetenz" ein allgemein geläufiger Begriff ist, muss "digital" schon genauer erklärt werden.

Was geschah und wie

Sprachhistorisch stammt das Wort "digital" vom Lateinischen "digitus", der Finger, ab oder, im übertragenen Sinn, das Zählen. Da ist der Weg zum Rechnen oder in English, "computing", nicht mehr weit, und schon sind wir beim Computer angelangt. Tatsächlich geht es bei der Digitalen Kompetenz vor allem um das Verständnis für Computer und für all das was diese können. Wäre das nur Rechnen, wären Computer nur etwas für Mathematiker, und diese Zeilen wären nie geschrieben worden. Tatsächlich waren die ersten "Computer" für Spezialzwecke gebaute, mechanische oder elektromechanische Rechenmaschinen. Bereits 1918 entstand beispielsweise die sogenannte Enigma, ein schreibmaschinenähnliches Gerät zur automatisierten Verschlüsselung geheimer Nachrichten. Im Jahre 1938 begann der deutsche Bauingenieur Konrad Zuse (der "zu faul zum Rechnen" war) mit dem Bau der Z-Serie, tonnenschwere Monster, deren einzige Aufgabe darin bestand den angewandten Mathematikern ihre oft langwierigen Rechnungen abzunehmen, und dies erst noch (meist) fehlerlos und schnell. "Schnell" ist allerdings relativ zu verstehen: die Zuse Z4 beispielsweise, die ab 1950 auch an der ETH im Einsatz war, schaffte knapp 1000 Rechenoperationen pro Stunde (!), ein lächerlicher Bruchteil von den 100 Milliarden Operationen pro Sekunde eines modernen Notebooks. Obwohl nur zum Rechnen gebaut, liessen sich diese Maschinen ("Hardware") dank der wahrhaft genialen Erfindung der Programmierung ("Software") doch immerhin für ganz verschiedene Arten von Berechnungen nutzen: ein erster Schritt in Richtung universelle Verwendbarkeit von Computern. Mit der Erfindung der Programmierung geht eine Entwicklung einher, die bis zum heutigen Tag andauert: Programmiersprachen. Das Prinzip der Programmierung ist stets das gleiche: Zunächst wird die Lösung der jeweiligen Aufgabe in Form eines Konstruktionsplanes ("Algorithmus" genannt) in der betreffenden Programmiersprache formuliert und zu einem Programm zusammengestellt. Dann wird der Konstruktionsplan typischerweise von der Zielmaschine selbst in Maschinenbefehle übersetzt ("kompiliert") und schliesslich von ebendieser ausgeführt. Die Programmierbarkeit, in Verbindung mit der in den 1960er Jahren beginnenden Loslösung des Computes von der mathematischen Zweckbindung hat zur unglaublichsten, menschlichen Entwicklung im 20. Jahrhundert geführt, der "Digitalisierung". Und daraus ist eine ganz neue Wissenschaft entstanden, die so genannte "Informatik". Kollegen von mir an der ETH sprechen von einem Wunder.

Informatik: Was ist denn das und wenn ja wieviele?

Der Titel dieses Abschnitts spiegelt die Schwierigkeit wieder den Begriff zu fassen. Eine häufig gelesene Definition sagt, dass die Informatik die Wissenschaft von der automatisierten Informationsverarbeitung sei. Das ist zwar nicht falsch aber wenig aussagekräftig und allzu eng. Belassen wir es bei der Vorstellung, dass Informatik die Wissenschaft von dem ist was Computer sind und was sie können. Und das ist einiges. Die Miniaturisierung der Hardware und die damit verbundene Leistungsexplosion (ich zitiere aus Wikipedia: "Ihr aktuelles Handy hat mehr Computerleistung als die gesamte NASA 1969, als diese zwei Astronauten auf den Mond stellte"), Hand in Hand mit den immer vielfältigeren Anwendungsbereichen und schlaueren Algorithmen hat eine ganze Anzahl revolutionärer Entwicklungen hervorgebracht, welche den symbolischen Fussabdruck der modernen Gesellschaft entscheidend geprägt haben. Man denke dabei etwa an Innovationen wie den Personal Computer, Mobiltelefone, das World Wide Web, Suchmaschinen, Officeanwendungen, email, Cloud Computing, Online Fahrpläne, Navigationssysteme, Virtuelle Realitäten, Soziale Medien, Computerspiele etc. etc., Errungenschaften die uns heute allesamt selbstverständlich erscheinen, die im Endeffekt jedoch im Zuge der jahrelangen Evolution der Informatik synergetisch entstehen mussten. Nicht vergessen werden dürfen in diesem Zusammenhang die in viele alltägliche Gegenstände eingebauten Steuerungen (Internet of Things) und die Automatisierung im allgemeinen, illustriert etwa durch Roboter oder selbstfahrende Bahnen und Autos. Zwar sehen diese nicht wie Computer aus, verbergen in ihrem Innern aber doch gewöhnliche Computer (genauer "Prozessoren") mikroskopischen Ausmasses. Ganz neue Trends wie Digitales Geld (Bitcoin), Künstliche Assistenten und allgemein Künstliche Intelligenz lassen erahnen, dass wir mit dieser Entwicklung keineswegs am Ende, sondern vielmehr erst am Anfang stehen, zumal die Skala der möglichen Erfindungen nach oben offen ist. Unschwer und ohne Uebertreibung können wir auf der Basis all dessen prognostizieren, dass das 21. Jahrhundert ebenfalls von Digitalen Innovationen geprägt sein wird, womit sich der Kreis, an dessen Anfang die Behauptung stand, dass die Digitale Kompetenz der Schlüssel zur Gestaltung der Zukunft sei, schliesst.

Studienwahl: Dies oder dies?

Hast du dich grundsätzlich für eine Zukunft im Gebiet der Digitalen Systeme entschieden, stellt sich grob und etwas vereinfacht gesprochen die Frage nach Hardware (Ingenieurwissenschaft) oder Software (Informatik). Die Entscheidung hängt natürlich stark vom eigenen Interesse und den Neigungen ab. Ich persönlich bin vom unglaublich mächtigen Prinzip der Programmierung, welches lediglich ein gut funktionierendes menschliches Gehirn voraussetzt, besonders fasziniert, und habe mich deshalb seinerzeit für Informatik entschieden. Im Endeffekt ist die Hardware trotz revolutionären Innovationen wie Miniaturisierung der Prozessoren bis fast auf atomare Skala und Quantencomputer doch lediglich dazu da die Software auszuführen. Das wird beispielsweise illustriert durch sogenannte Neuronale Netze, eine dem menschlichen Gehirn nachgebildete Struktur, welche als Modell für die Künstliche Intelligenz dient. Solche Netze werden nicht in Form von Hardware gebaut, sondern in Software simuliert. Ueberhaupt ist Simulieren ein allmächtiges, allein dem Softwareprinzip geschuldetes Werkzeug. Praktisch alle Realitäten lassen sich simulieren, vom Verhalten unterschiedlicher Aerodynamik im Formel 1 Rennsport bis zu intergalaktischen Raumflügen. Oder ganzen Welten wie in Computerspielen. Aber im Endeffekt sind Hardware und Software die zwei Seiten derselben Medaille, verschiedene Schwerpunkte derselben Sache: Digitale Systeme.

Das Informatikstudium: der Königsweg zur Kompetenz

Wir haben einleitend die Digitale Kompetenz ziemlich zwanglos als Verständnis für Computer und was diese können umschrieben. In Wirklichkeit ist die Sache allerdings etwas komplizierter indem wir verschiedene Stufen dieser Kompetenz unterscheiden sollten. Während auf der untersten Stufe die reinen Benutzer von Computern, d. h. die Anwender von Softwareprodukten wie Word, Excel, Internet Browser, email, Facebook und Co. und Spiele, aber auch von automatischen Staubsaugern und Rasenmähern angesiedelt sind und auf der obersten Stufe die professionellen Informatiker und Informatikerinnen, lassen sich diverse Zwischenstufen unterscheiden.

Coding / Beispiele

Beispielsweise gewinnt die Google Suche im Internet durch die Beherrschung von ein paar formalen Regeln enorm an Intelligenz, wie die folgenden Beispiele illustrieren mögen.

Dies kann man zwar nicht Programmieren nennen, aber immerhin als erste Vorstufe dazu indem der Notation ein exakter Formalismus zugrunde liegt.

➱ "SCHWEIZERHOF" (suche nach dem gleichnamigen Hotel, genau so geschrieben)

➱  BMW + Porsche (suche nach Artikeln über Autos der Marken BMW oder Porsche)

➱  sunrise -mobil -phone (suche nach Artikeln über Sonnenaufgang, nicht über den Mobilfunkprovider)


Eine Stufe höher und bereits im Vorhof der "richtigen" Programmierung steht die Beherrschung von deklarativen (beschreibenden) Sprachen, wie sie etwa zum Design von Webseiten (HTML und CSS), zur Spezifikation von Formaten (Reguläre Ausdrücke) oder zur Abfrage von Datenbanken (SQL) verwendet werden:


Beispiel 1)

HTML/ CSS zur Beschreibung des Stils einer Webseite. In der folgenden Deklaration wird festgelegt, dass alle Titel innerhalb von sogenannten <head> Tags in blauer Schrift und alle Paragraphen innerhalb von <p> Tags in roter Schrift erscheinen sollen.

Dies kann man zwar nicht Programmieren nennen, aber immerhin als erste Vorstufe dazu indem der Notation ein exakter Formalismus zugrunde liegt.


<html><head>
<style>h1 {color: blue;} p {color: red;}</style>
</head>
<body>
<h1>This is a blue heading</h1>
<p>This is a red paragraph.</p>
</body></html>

 

   

Beispiel 2)

Internet Aufforderung zur Eingabe einer Postleitzahl, wobei das korrekte Format in Form eines Regulären Ausdrucks mit Namen "pattern" erzwungen wird.

 
<input title="Postleitzahl eingeben" pattern="([1-468][0-9]|[57][0-7]|9[0-6])[0-9]{2}" type="number" placeholder="Postleitzahl">

 

   

Beispiel 3)

Dieses Beispiel zeigt wie nützlich Datenbankbefehle in SQL sind. Angenommen, in einer einfachen Datenbank, einem Telefonbuch genannt TELBOOK seien Namen (NAME) zusammen mit Telefonnummern (TELNO) gespeichert. Dann lässt sich mit einem einzigen SQL Befehl die Datenbank je nach Wunsch nach Namen oder nach Telefonnummern ordnen, wobei letzteres besonders nützlich ist wenn man herausfinden will wer angerufen hat.

Natürlich besitzen echte Datenbanken viel mehr Einträge, Hunderte oder gar Tausende. Umso wertvoller sind SQL Befehle wie derjenige in unserem Beispiel.

  Hypothetisches Beispiel:

SELECT NAME, TELNO FROM TELBOOK ORDER BY NAME

NAME TELNO
Aebischer 044 320 45 55
Gerber 061 221 19 80
Huber 058 666 17 08
Keller 041 170 35 10
Meier 044 320 80 05
Müller 058 225 18 25
Schmid 044 775 12 04

SELECT NAME, TELNO FROM TELBOOK ORDER BY TELNO

NAME TELNO
Keller 041 170 35 10
Gerber 044 320 45 55
Meier 044 320 80 05
Müller 044 775 12 04
Huber 058 225 18 25
Schmid 058 666 17 08
Aebischer 061 221 19 80


Bereits heute und vermehrt in der Zukunft kommen fortschrittliche Anwender und Anwenderinnen kaum um die Beherrschung solcher beschreibenden Sprachen herum. Und das ist nicht ganz ohne, denn deren erfolgreiche Verwendung setzt die Einhaltung einer exakt definierten Grammatik (so genannte "Syntax") voraus. Computer verzeihen keine Fehler. Bei der geringsten Verletzung der syntaktischen Regeln kann etwas ganz anderes als beabsichtigt herauskommen.

Und genau so ist es bei den "richtigen" Programmiersprachen, deren Beherrschung auf der obersten Stufe unserer Kompetenzenskala stehen. Damit ist klar, dass Freude und Fähigkeit zum exakten Arbeiten eine zentrale Voraussetzung für eine erfolgreiche Karriere in Informatik ist.

Die folgenden Beispiele, die ich dem Buch "Python One-Liners" von Christian Mayer entnommen habe, mögen einen ersten Eindruck von der Kraft "richtiger" Programmiersprachen bzw. deren Beherrschung vermitteln:

Beispiel 1)

Es soll ein Programm zur Verschlüsselung von Nachrichten erstellt werden, wobei jeder Buchstabe in der jeweiligen Nachricht durch denjenigen ersetzt wird, der im Alphabet 13 Positionen weiter hinten steht. Dabei denke man sich das Alphabet zum Kreis geschlossen. Beispielsweise würde das Wort "INFORMATIK" zu "VASBEZOHVX" verschlüsselt.

  Hier ist ein solches Verschlüsselungsprogramm in besonders kompakter Form:

rt13 = lambda x: "".join([abc[(abc.find(c) + 13) % 26] for c in x])

 

   

Beispiel 2)

Wir betrachten die Werte der Schadstoffe in der Luft in den Städten Hongkong, New York, Berlin und Montreal während jeweils 6 Tagen. Eine Gesundheitsorganisation möchte nun wissen welche Städte besonders gesundheitsschädlich sind, d. h., in welchen  Sädten der Schadstoffgehalt an mindestens einem Tag höher ist als der Durchschnitt über alle Städte und alle Tage betrachtet. Das folgende Programm findet dies heraus.

  X = np.array(
[[ 42, 40, 41, 43, 44, 43 ], # Hong Kong
[ 30, 31, 29, 29, 29, 30 ], # New York 
[ 8, 13, 31, 11, 11, 9 ], # Berlin
[ 11, 11, 12, 13, 11, 12 ]]) # Montreal

cities = np.array(["Hong Kong", "New York", "Berlin", "Montreal"])
polluted = set(cities[np.nonzero(X > np.average(X))[0]])

 

   

Beispiel 3)

Der Aehnlichkeitsgrad (Levenshtein distance) zweier Wörter sei definiert als die Anzahl Editieroperationen, die nötig sind um das erste in das zweite Wort überzuführen. Das folgende Programm berechnet die Levenshtein distance dist der Wörter a und b.

  dist = lambda a, b: len(b) if not a else len(a) if not b
else min(dist(a[1:], b[1:]) + (a[0] != b[0]), dist(a[1:], b) + 1, dist(a, b[1:]) + 1)

Dieses Programm grenzt an Zauberei, weil das Problem nie direkt gelöst wird, sondern mit sogenannter Rekursion verkleinert und hinausgeschoben, verkleinert und hinausgeschoben etc. wird bis es so klein geworden ist, dass die Lösung auf der Hand liegt.

Ich könnte leicht 137 oder auch 273 weitere Beispiele anführen, anhand denen die Kraft der Programmierung illustriert wird. Allgemein gesprochen ist die Programmierung im täglichen Leben überall dort nützlich, wo es um die Automatisierung von Routineaufgaben geht wie etwa automatisierter eMail Versand, automatisierte Suche im Internet (sog. Webscraping) oder um das Verhalten von Automaten, vom Foodautomaten bis zum Rasenmäher.

Schöne Aussichten

All dies nützt in der viel zitierten Praxis wenig, wenn dieses Potenzial lediglich l'art pour l'art ist. Zum Glück zeigt die Wirklichkeit mit nüchternen Zahlen, dass das pure Gegenteil der Fall ist. Nicht nur ist die Informatik oder ICT (Informations- und Kommunikationstechnologie) wie diese im kommerziellen Umfeld genannt wird das zentrale Geschäftsmodell zahlreicher neu gegründeter Industrieimperien wie Microsoft, Apple, Google, Facebook, Twitter etc. mit Hunderttausenden von Arbeitsplätzen, sondern ist sie in allen anderen Betrieben als organisatorische Stütze unverzichtbar geworden. Demzufolge herrscht in der Schweiz im Informatiksektor ein ausgeprägter Fachkräftemangel. Microsoft Mitarbeiter haben mir kürzlich geklagt, dass „eine ganze Generation von Cloud Spezialisten“ fehle.

Und, ich zitiere aus einer kürzlichen Medienmitteilung des Berufsverbandes ICT Schweiz: "Der bis 2028 erwartete, zusätzliche ICT-Fachkräftebedarf von 117'900 Personen kann mit den heutigen Bemühungen nur zu 70 Prozent durch Arbeitsmarkteintritte von Neuabsolventinnen und -absolventen und zugewanderte ICT-Fachkräfte gedeckt werden. Um der stark steigenden Nachfrage gerecht zu werden, müsste die Schweiz in den nächsten acht Jahren 35'800 zusätzliche ICT-Fachkräfte ausbilden."

Mit diesem Fachkräftemangel einher geht unabdingbar und Hand in Hand ein entsprechend hohes Lohnniveau.
Also kurz gesagt: grandiose Berufsaussichten!

Summary

Die Quintessenz dieses kurzen Ueberblicks über Informatikkompetenzstufen ist die Feststellung, dass je höher die Stufe desto mächtiger das Werkzeug und desto vielfältiger die Möglichkeiten. Da ist der Wunsch jeder vor der Studienwahl bzw. Berufswahl stehenden Person die höchste Stufe zu erklimmen nur folgerichtig. Zum Glück gibt es dafür einen gut vorgepflasterten Weg: das Informatikstudium an einer Universität (eher theoretisch) oder Fachhochschule (eher praktisch).

Allerdings haben wir in diesem Plädoyer zugegebenermassen alles etwas vereinfacht und verniedlicht dargestellt. In Tat und Wahrheit ist die Programmierung nur der kreative Kern der neuen Wissenschaft "Informatik". Wie in jeder herkömmlichen Wissenschaft gibt es auch in der Informatik Grundlagen, Theorien und Gesetze, die gelernt werden wollen. Und wie jede herkömmliche Wissenschaft setzt auch die Informatik bzw. das erfolgreiche Studium der Informatik neben aktivem Interesse Talent und bestimmte Fähigkeiten voraus. Diese lassen sich etwa wie folgt kurz zusammenfassen:

  • Wille und Fähigkeit zum exakten Arbeiten & äusserster Konzentration
  • Neigung zur Perfektion
  • Hoch entwickeltes logisches Denkvermögen
  • Fähigkeit zu strukturellem Denken, zur Abstraktion und Modellierung, Abläufe formell zu beschreiben ("computational thinking") sowie quer zu denken

Wer sich dies zutraut und ein Informatikstudium erfolgreich durchläuft wird mit dem Besitz eines geistigen Werkzeugs belohnt, dessen Potenzial höchstens durch die Grenzen der eigenen Intelligenz und Kreativität beschränkt wird.



⮨ previous  | Alle Gastautoren |   next ⮩