Kategorien
Persönliches

Persönliche Daten

Tätigkeiten

Geboren 
13. Dezember 1962 in Bückeburg

1969 bis 1973 
Grundschule in Bückeburg

1973 bis 1977 
Gymnasium Adolfium in Bückeburg

1977 bis 1980 
Internat Schloß Varenholz

1980 bis 1983 
Kreishandelslehranstalt in Rinteln

1983 
Abitur in den Fächern

  • Mathematik
  • Betriebs- und Volkswirtschaftlehre
  • Deutsch
  • Betriebliches Rechnungwesen

1983 bis 1985 
Bundeswehr

1985 bis 1993 
Studium Ökonomie und Wirtschaftsinformatik,
ohne Abschluss

ab 1993 
Selbstständig als EDV-Berater

Nebentätigkeiten

1981 bis 1993 
im elterlichen Unternehmen, Schwerpunkte

  • Rechnungswesen
  • Controlling
  • EDV
  • Vertriebsunterstützung

1987 bis 1992 
Werkstudent bei der Siemens AG, SNI AG

  • Schwerpunkt Mainframe BS2000,
  • Unterstützung Einführung PPS-Komponenten SILINE-200,
  • Schnittstelle SILINE-200 und Relationalen Datenbank SESAM
Kategorien
Persönliches

Persönliche IT-Historie

Hier möchte ich, außerhalb meines Profils, über meiner persönlichen Erfahrungen mit Computer berichten. 

Angefangen hat alles Anfang der 70er Jahre des vorigen Jahrhunderts mit einer Erfassungsstation von Taylorix. Die Firma Taylorix bot über regionale Rechnenzentren Buchführung und andere Dienste mittels EDV an. Meine Eltern benutzten für ihr Unternehmen diesen Service und ich lernte so Lochkarten und -streifen (aus Papier) kennen. Es war eine fremde, aber sehr interessante Welt. 

So um 1978 besaßen die ersten Klassenkameraden programmierbare Taschenrechner. Der TI 51 war für mich, der eine nicht programmierbaren Taschenrechner von HP benutzte, nicht so interessant, aber die HP-67 und HP-33E hatten schon etwas. Im Gegenzug dafür, dass ich einem Klassenkameraden zeigte, die das mit dem Programmieren geht, konnte ich seinen Taschenrechner ausprobieren. 

1980 war dann für mich der „große“ Tag, ich hatte das Geld für einen HP-41C beisammen. Ich programmierte, was zu programmieren war, u.a. eine Kurvendiskussion mit Nullstellenbestimmung. 

1982 gab es in der Schule Informatik-Unterricht, an einem MP/M Rechner (die Mehrbenutzer-Variante von CP/M) mit vier Bildschirm-Terminales und einem Fernschreiber, 48kb RAM, zwei 8-Zoll Diskettenlaufwerken. Etwa zu dieser Zeit kaufte ich dann einen Homecomputer, der auch für ernsthafte Anwendungen genutzt wurde, aber die Erfüllung war es noch nicht. 

1984 führte ich dann im elterlichen Betrieb ein IT-Budget ein, dass ich für einen Computer mit den Aufgaben Rechnungswesen, Auftragsverwaltung und Warenwirtschaft nutzen sollte. Trotz der sicher gut gemeinten Ratschläge, einen der leistungsfähigen CP/M Rechner zu kaufen, setzte ich auf MS-DOS. Bei der Wahl zwischen einem IBM PC (8088 4,77 MHz) und einer Olivetti M24 (8086 8MHz) zu vergleichbaren Kosten entschied ich mich für Olivetti. 

Ich hatte FiBu und die anderen Programme schnell eingerichtet und Taylorix verlor einen Kunden. Die Zahlen waren tagesaktuell, Fehler in der FiBu fielen sofort und nicht erst bei den Monatssalden auf, nur der Steuerberater war nicht gerade begeistert, er hätte gerne gesehen, dass wir die DATEV-Lösung einsetzen. 

Der Leistungsumfang der FiBu war gut, aber die Auftragsverwaltung / Warenwirtschaft war, wie alle auf dem PC verfügbaren Systeme, auf die Bedürfnisse eines Großhändlers zugeschnitten, einige Dinge, die in einem Industriebetrieb notwendig sind, fehlten. Eine für einen Industriebetrieb passende Lösung bot Nixdorf mit Comet-Top an, wie ich im Vorfeld festgestellt hatte, nur passten Preis und Zukunftssicherheit nicht.

Mit Multiplan, dBase III plus und GWBasic bildete ich die fehlenden Funktionen nach.

Im Studium bot sich die Möglichkeit, an einem Großrechner zu arbeiten. Zuerst mit den mir schon bekannten Lochkarten, dann per Terminal. Ich lernte so Cobol und Fortran kennen. Daneben suchte ich auf dem PC die Möglichkeiten auszuschöpfen. In Summe beschäftige ich mich mit Lisp, Forth, Smalltalk, Prolog, Assembler, C, Obj-C, C++, Pascal, Modula-II, Oberon und einigen anderen Sprachen. 

Die Beschäftigung mit den verschiedenen Sprachen hat mich geprägt. 

  • Bei Lisp lernte ich, mit einfachen Programmstrukturen komplexe Datenstrukturen (Listen) zu bearbeiten. 
  • Smalltalk war die Einführung in die Objektorientierte Welt.
  • Prolog diente als Einstieg in die KI-Systeme, die heute kaum jemand noch kennt.
  • Die Sprachen von Prof. Wirth, insbesondere Modula-II, prägten meine Vorliebe für strukturierte Sprachen.
  • C, Obj-C und C++ zeigten mir die verschiedenen Möglichkeiten, eine OO-Sprache aus einer prozeduralen Sprache zu entwickeln

Daneben beschäftigte ich mich noch mit verschiedenen Anwendungen auf dem PC. Unter Windows 1.02 lief das erste Hypertext-System, es gab ein Tools Reflex, das Kreuztabellen berechnete, die ich für Auswertungen, heute würde man sagen OLAP, nutzte, die Windows-Programmierung war interessant, es gab eine „SAA-Toolbox“, die im C-Sourcecode zeigte, wie man ein Fenstersystem mit Maussteuerung aufbaut, …

Aber keine Beschäftigung mit Technik ohne wirtschaftlichen Nutzen! Ich bin viel zu stark „Buchhalter“ und vor allem „Kostenrechner“, hiermit verdiente ich mir ja meinen Lebensunterhalt. Ich war auf der Suche nach der „Zukunft“. Dass die Zeit von Basic plus Assembler, die die PC-Welt zu Anfang geprägt hatte, bald vorbei sein wird, war mir klar. Die Zukunft Basic plus C unter Windows hatte aber noch nicht begonnen, Microsoft ließ sich viel Zeit. Trotzdem entwickelte ich in dieser Zeit sehr viel. 

  • Für den elterlichen Betrieb verbesserte ich die IT-Strukturen,
  • für einen damals bundesweit bekannten Computerclub stellte ich die Programme zur Verwaltung neu auf,
  • ich gab Schulungen,
  • die ersten Programmier-Aufträge gegen Cash kamen,
  • ich war bei Siemens als Werkstudent tätig.

Jetzt beginnt auch die Zeit, über die ich in meinem Profil berichte. Ich kannte den Großrechner mit seinen Stärken und Schwächen, insbesondere den Kosten. Ich hoffte auf die Client/Server Welt, auch wenn ich dort die Probleme mit verteilten Transaktionen, Software-Verteilung etc. sah. Ich hoffte auf die SAA Welt von IBM, hatte aber meine Zweifel. Und ich verdiente meinen Lebensunterhalt immer stärker mit IT-Beratung. 

Als ich feststellte, dass die Client/Server Anwendungen primär aus Fat-Clients und gemeinsam genutzten Datenbanken oder nur ISAM-Verwaltungen auf den Servern bestanden, suchte ich ein anderes Betätigungsfeld. Ich nutzte mein Wissen in der PC- und der Großrechner-Welt, um mobile Anwendungen für den Außendienst größeren Unternehmen aus der Nahrungs- und Genussmittelbranche anzubieten, auf Grund meiner Kontakte fand ich auch schnell Vertriebspartner. Ich habe, wie aus meinem Profil zu ersehen ist, einige sehr erfolgreiche mobile CRM-Projekte durchgeführt. 

Leider entwickelte sich der CRM-Markt, nach vier sehr erfolgreichen Jahren für mich, zu einem Markt von besseren Adressverwaltungen. Diese Lösungen, welche die Anforderungen der Vertriebsmitarbeiter im Bereich der erklärungsbedürftigen technischen Produkte, wenigen Ansprechpartnern und kaum strukturierten Informationen, erfüllen, konnten natürlich weit billiger angeboten werden wie eine komplexe Anbindung des Außendienstes via Replikation, bei der der Außendienstmitarbeiter beim wöchentlichen Kundengespräch die gleichen Daten, die auch der Innendienst über sein Terminal auswerten kann, zur Verfügung hatte. 

Zu dieser Zeit kam JAVA auf, zuerst für die Applets, aber ich sah die Applications, die auf dem Client liefen, und die auf die gleichen Lademodule zugreifen konnten wie die Gegenstücke auf dem Server. Hier erkannte ich meine Chance und arbeitete mich ein. Wer C++, Smalltalk und den Großrechner kennt, für den ist JAVA im Rahmen einer richtig aufgebauten Client/Server Lösung nicht nur ein logischer, sondern auch ein kleiner Schritt. 

Leider war 1997 JAVA noch weit entfernt von den Marketing-Versprechen, wie man auch an den in den letzten Jahren gescheiterten JAVA Projekten erkennen kann. Client/Server in der Ausprägung Thin-Client zum lokalen Präsentieren, Editieren und Vorvalidieren sowie einem Server, der die Daten validiert, Transaktionen steuert und auch über die gleichen Fach- und Zugriffsmodule den Batch-Betrieb sicher stellen kann, wird erst jetzt möglich. 

Meine Kunden sollen mit mir Geld verdienen, ich brauche keine technische Spielwiese. Die Technik ist immer das Mittel zum Zweck der Lösung einer betriebswirtschaftlichen Aufgabenstellung. Und bei betriebswirtschaftlichen Aufgabenstellungen geht es immer um eine der beiden Dinge, Einnahmen vergrößern oder Ausgaben verkleinern.

Deshalb war und ist der Großrechner meine Welt. Anwendungen, die vor 20 oder mehr Jahren entwickelt wurden, mit den damals üblichen Methoden, mögen nicht mehr „State-of-the-Art“ sein, aber sie haben ihre Entwicklungskosten verdient und sollen es noch weiter tun. 

Ich hoffe, mein Wissen und Können für sanfte Migration von den bisherigen Prozeduralen hin zu den Objekt Orientierten Entwicklungssystem einsetzen zu können. Hierbei kommt es nicht nur auf das Wissen über die neue Technik an. Die bisherige Technik muss auch verstanden sein, um hieraus die Anforderungen an die neue Technik gewinnen zu können. Noch wichtiger ist die Fähigkeit, die betriebswirtschaftlichen Zusammenhänge aus der bisherigen Technik zu erkennen, denn vielfach ist sie nur dort dokumentiert. Die (Fachbereichs-) Mitarbeiter, die ihr Wissen in die Software einbrachten, befinden sich, genauso wie ihre Nachfolger, die mit ihren Erfahrungen die Arbeitsweise der Software verbesserten, vielfach im verdienten Ruhestand. Das geballte Know-How, das in der bisherigen Software steckt, muss im Dialog mit den heutigen Mitarbeitern des Fachbereiches ermittelt werden und dann den primär technisch ausgerichteten Projektteams im Java und C++ Umfeld in der ihnen verständlichen Sprache übermittelt werden.

Kategorien
Blog

Nach Umstellung WordPress

Wie schon anderweitig erwähnt, gibt es meine Homepage seit über 20 Jahren.

Zuerst mit per Editor erstellen HTML inklusive Frames.

Ab 2005 per SSI eine Browser-Weiche eingebaut, um die unterschiedlichen Interpretationen von CSS in den damaligen Browsern abzufangen.

2012 waren CMS verfügbar und ich entschied mich nach einigen Tests mit TYPO3, Joomla und WordPress für Drupal 7. Auch im Rückblick eine gute Wahl!

Irgendwann hiess es, Drupal 7 geht bald aus der Wartung, stellt auf Drupal 8 um.

Ich habe dann einen Test-Installation auf einer Sub-Domain meiner Homepage erstellt und die Inhalte aus der Drupal 7 Installation migriert. Es waren einige Nacharbeiten notwendig, vor allem fehlte in Drupal 8 das Layout-Theme, das ich bevorzugte, und die Alternativen waren ein Kompromiss. Also war Drupal 7 weiterhin das Produktions-System!

Und Drupal 8 war gewachsen. Bei einem Core-Update muss ja der komplette Verzeichnisbaum (ausser „sites“) ersetzt werden. Bei Drupal 7 war das Archiv 3,3 MB gross, bei Drupal 8 und auch Drupal 9 sind es über 20 MB! Und die Ladezeiten waren auch deutlich länger.

Dann wurde Drupal 8 abgekündigt, Drupal 7 lief aber weiter. Also eine Test-Installation Drupal 9 durchgeführt. Ich dachte, die Inhalte und Layouts könnten von Drupal 8 nach Drupal 9 übernommen werden. Leider setzte Drupal 9 eine neuere Version von MySQL voraus, eine Migration der Datenbanken hätte mehr Arbeit gemacht, also die Drupal 7 Installation wieder als Basis für die Migration genommen.

Vor einigen Wochen bekam ich in der Drupal 7 Installation auch für Anwender sichtbare Fehlermeldungen. Mein Provider hatte von PHP 7.x auf PHP 8 umgestellt, das konnte ich temporär zurückgedrehten, aber der Abschied nach 10 Jahren Drupal 7 war gekommen.

Also die Zuordnung www.dunkelpeter.de auf Drupal 7 auf Drupal 9 gedreht, und nichts ging mehr. Ich hatte alle Verweise in den Init-Dateien der Drupal 9 Installation angepasst. Trotz nochmaliger Kontrolle, der Fehler bliebt.

Das Ende von Drupal 9 wird bald kommen, und es gibt Warnungen, dass einige Dinge in Drupal 10 wieder inkompatible sind.

Also habe ich heute die Entscheidung getroffen, auf WordPress umzusteigen.

Bei der Navigation und auch beim Layout konnte ich einige Feinheiten nicht auf der neuen WordPress Installation wieder herstellen.

Ich weine einige Tränen Drupal 7 nach, Drupal 8 und Drupal 9 werte ich als „gewonnene Erfahrungen“.

Kategorien
Persönliches

Über diese Homepage

Diese Homepage besteht schon lange, seit dem letzten Jahrtausend.
Die erste Version wurde mit den notepad.exe erstellt, basierte auf Frames, eben wie man damals eine Web-Seite erstellte.
So um 2005 las ich in vielen Zeitschriften und Foren, dass Frames „böse“ sind, dass Seiten per CSS zu formatieren sein.
Also musste ich etwas ändern an meinem Aushängeschild.
Viele Seiten, die ich mir damals anschaute, waren bunt, wie die Kindergartenzeichnungen meiner Kinder.
Andere Seite waren sehr technikverliebt, Flash, Javascript, etwas Visualbasic und warum laufen die nicht auf meinem Mac?
Also baute ich mir meine Seite wieder von Hand, mit CSS, <div>, <span> und was sonst noch als „richtig“ bezeichnet wurde, und war mitten im Browser-Krieg. Mozilla und Safari zeigten die Seite an, wie ich es mir vorstellte, beim Internet Explorer nun ja. Also etwas umgestellt, jetzt sahen sie auf dem IE gut aus, aber …
Also musste eine Browser-Weiche in die Seite, also Javascript? Damals sollte man die Scriptsprachen ausschalten, einmal die falsche Seite erwischt und …
PHP kostete bei den Hosting-Provider einen satten Aufschlag, von einem CMS ganz zu schweigen. Meine Lösung war SSI (Server Site Include), über das ich die Browser-Weiche für die verschiedenen CSS-Files erstellten konnte. Ausprobieren konnte ich es lokal, auf meinen Rechner war immer ein Apache installiert, wozu nutzt man sonst ein Unix?
Die Seite stand und lebte so ohne grössere Änderungen von 2005 bis 2015. Nur mein Profil wurde regelmäßig aktualisiert.
So um 2008 kam in mir der Wunsch nach einem Blog auf, in einer statischen Seite wie meiner Homepage aber nur sehr schwer zu realisieren. Aber es gab ja entsprechende Server im Web. Ob jemand meinen Blog gelesen hat? Werbung dafür konnte ich nicht machen. Und auf einmal war der Server und damit meine Inhalte weg (die Texte habe ich natürlich noch).
Also ein CMS, eine lokale Installation der verschiedenen CMS war auch kein Problem, die Einarbeitung schon eher.
Und selbst ganz banale Dinge machten Probleme. Ich habe eine persönliche Telefonnummer (0700), und wer mich über diese anruft, muss dafür Geld an seinen Telefonanbieter zahlen. Klingt eigentlich ganz normal. Es gab Presseberichte wegen Abmahnungen für 0700 Telefonnummern. Ein Anwalt fand einen Richter, der meinte, 0700 kann man mit 0800 verwechseln (ich hoffe, die beiden rufen 0900 an), also musste ich einen Hinweis hinzufügen, dass Telefonieren für den Anrufer Kosten verursachen kann. Und das war nicht bei jedem CMS möglich, wenn die Kontakt-Seite genutzt werden sollte.
Die Kosten bei meinem Host-Provider für ein CMS sanken, aber irgendwie war der Druck, auf ein CMS umzustellen, für mich noch nicht zu gross.
Nun ja, jetzt habe ich mich durchgerungen. Von meinen Versuchen vor einigen Jahren wusste ich, dass es entweder Joomla oder Drupal werden würden (Typo3 ist zu mächtig, WordPress nicht mächtig genug). Also Joomla bei meinem Provider installiert und eine Testseite gebaut. Dann das Gleiche mit Drupal. Joomla kann etwas mehr, insbesondere wenn mehrere Personen die Seite betreuen sollen, und das Rennen machte: Siehe unten!
Ich habe die vom Hosting-Provider gemanagte Version gewählt, so brauche ich mir keine Gedanken zur Datensicherung und Sicherheits-Updates zu machen.
Und nach dem die Entscheidung getroffen war, stand die Seite nach einem Abend.

Kategorien
Persönliches

Ausgabeformate der Profile

Mein Profil pflegte ich mit hohem Aufwand seit vielen Jahren mit verschiedenen Textverarbeitungen (WordStar, AmiPro, Word, StarOffice, HTML) für verschiedene Ausgabeformate (Papier, HTML, …). Seit 1999 verwende ich XML, das per XLST (Xerces, Sax, Xalan) direkt oder über weitere Tools nach XML, HTML, FO, PDF, DOC, … transferiert wird.

Die Basis bildet als das „Profil XML“.

Mit dem  XLST-Stylesheet wird es in die verschiedenen HTML-Ausgaben: mit Inhaltsverzeichnis (lang) und ohne Inhaltsverzeichnis (kurz) umgewandelt.

Grundlage für die XML- sowie die XLST-Datei ist die DTD.

Das Haupt-Medium ist heute aber PDF. Mittels eines weiteren XLST-Stylesheet wandelt ist das „Profil XML“ in das „Profil FO“ (Formating Object) um, das anschliessend mittels „FOP“ aus dem Apache-Projekt in „Profil PDF“ umgewandelt wird.

Mehrfach wurde ich gebeten, das Profil als Word-Datei zur Verfügung zu stellen. Leider gab es bisher keine direkte Möglichkeit, XML formatiert in Word zu importieren, also nutze ich das „Profil HTML ohne Inhaltsverzeichnis“, welches in Word importiert die Datei „Profil DOC“ „Profil DOCX“ ergibt, die einfach zu bearbeiten ist.

Für die XML nach XHTML verwende ich XALAN.

1999 fing ich mit SAX an. 2001 stieg ich auf den in JEdit eingebaute Plug-In.

Leider ergab sich, seit ich einen Apple PowerBook mit MacOSX (dort laufen neben JEdit auch Eclipse und NetBeans ohne Probleme) nutze, ein kleines Problem mit Plug-In. Es geht davon aus, dass Dateien auf der Festplatte im „MacRoman“ Zeichensatz gespeichert sind, ich nutze aber weiterhin „ISO-8859-1“, also „Latin-1″, wie man auch am <?xml version=“1.0″ encoding=“ISO-8859-1“?> im „Profil XML“ erkennen kann.

Der Aufruf von „java org.apache.xalan.xslt.Process“ über eine Batch-Datei beendete das Problem

Aber ärgern wir uns nicht darüber, im Grossrechnerbereich gibt es ähnlich Probleme z.B. beim Zusammenspiel von TSO („273 Deutsche“ oder „500 international“) und OMVS („1047 USA“). 

Früher erzeugte ich die PDF Version über einem Umweg. Mit MSIE sowie Mozilla unter Windows wurde die XML bzw XHTML Seite als PostScript Files gedruckt und mit GhostScript in PDF umgewandelt. Hier geben sich jedoch Probleme mit dem Acrobat Reader, falls bestimmte Fonts verwendet werden. Weiterhin ist die Dateigrösse mit gut 500kb sehr gross. 

Alternativ wurde das Profil unter Mac OSX direkt als PDF-Datei gedruckt, da Mac OSX PDF als allgemeines Ausgabe-Format (auch für den Bildschirm) benutzt. Auch hier war die Dateigrösse mit ca. 600kb nicht optimal.

Mit dem Umweg über FO aus dem Apache-Projekt habe ich nun eine sehr gute Kontrolle über die PDF-Ausgabe und die Dateigrösse ist erfreulich klein.

Kategorien
Themen

Denke einfach

Viele Entwickler, gerade im Bereich der neuen Techniken, sind neugierig und versuchen gerne etwas neues.

Das führt manchmal zu folgender Situation, die ich hier bildlich beschreiben möchte:

Es ist ein Bild an die Wand zu hängen.

Die erfahrenen Entwickler nehmen einen Hammer und schlagen einen Nagel in die Wand.

Einige Entwickler sind der Meinung: „Tunnelbohrmaschinen sind Open-Source“ oder „Wir haben eine Unternehmenslizenz für Tunnelbohrmaschinen“ sowie „Ich habe gelesen, wie man eine Tunnelbohrmaschine bedient“.

Nun sind einige Wände aus Beton, da kann man keinen Nagel einschlagen. Nun steigen einige weitere Entwickler auf die Tunnelbohrmaschine um.

Und einige, insbesondere Projektleiter, meinen „Da nehmen wir etwas Geld in die Hand und kaufen einen Luftdübel, den hat mir letzte Woche der Software-Anbieter XY empfohlen“. Der ‚Luftdübel‘ ist ein tolles Produkt, einfach den Luftdübel in die Luft stecken, Schraube rein drehen, kann bis zu 5 Tonnen belastet werden.

Der erfahrene Entwickler nimmt seine Schlagbohrmaschine, damit ist das Loch schnell in der Wand, einen käuflichen Dübel plus Schraube rein, und das Bild kann aufgehängt werden.

Frameworks, Bibliotheken und ähnliches müssen für viele Anwendungsfälle passen und sind häufig aus diesem Grund komplex im Aufbau und im Einsatz.
Meist setzen sie noch weitere Frameworks, Bibliotheken und ähnliches mit einer bestimmten Versionsnummer voraus.
Komplex wird es, wenn für die Problemlösung Funktionen aus zwei Bibliotheken zu nutzen sind, die aber jeweils von einer dritten Bibliothek eine jeweils unterschiedliche Version benötigen.
Kann man den Einsatz eines grossen Frameworks durch das Schreiben von hundert Zeilen Code vermeiden, ist die selbstgeschriebene, nur für den bestimmten Zweck gedachte einfache Lösung besser, insbesondere in der Wartung über den Lebenszyklus der Anwendung.

Kategorien
Themen

Künstliche Intelligenz und Algorithmen

In der aktuellen Diskussion werden der Begriff „KI“ für „Künstliche Intelligenz“, englische „AI“ für „Artificial intelligence“ und der Begriff Algorithmus vermischt.

Hierdurch entstehen nach meiner Meinung Gefahren bei der Diskussion und den Schlussfolgerungen.

Ein Algorithmus ist eine „Handlungsanweisung“. Diese Handlungsanweisung muss nicht in einem Computer ausgeführt werden, auch ein Kochrezept ist ein Algorithmus. Ebenso die Bauanleitung für ein IKEA Regal, das Zusammenbauen eines PKW auf einem Fliessband, …

Es gibt einfache Algorithmen. Schauen Sie einmal auf die Kochanleitung für eine Tütensuppen: „Inhalt in 750 ml lauwarmes Wasser einrühren, aufkochen, 5 Minuten bei geringer Wärme köcheln lassen.“

Es gibt komplexe Algorithmen. Die Suche einer Bahnverbindung gehört wohl dazu.Vor 40 Jahren suchte ein erfahrener Mensch, meist ein Bahn-Beamter, in dem Kurs-Buch (dicker Papier-Wälzer) die passende Verbindung heraus. Hierzu gab es Handlungsanweisungen, die der Beamte in seiner Ausbildung gelernt hatte. Heute wird dieser Algorithmus durch einen Computer durchgeführt, aber im Grundsatz ist es immer noch der gleiche Vorgang.

Es gibt sehr komplexe Algorithmen. Ein Beispiel ist das Optimieren von Datenbank-Abfragen. Bei grossen Datenbeständen kann eine nicht optimal formulierte Abfrage mehrere Stunden dauern. In den Datenbank-Programmen gibt es „Optimierer“, also Algorithmen, die eine Abfrage so umstellen, dass sie schnell ausgeführt werden kann. Zu den technischen Hintergründen sind viele dicke Bücher geschrieben worden, für deren Verständnis man eine immense Vorbildung braucht.

Menschen, die bei den Herstellern der Datenbanksystem beschäftigt sind, haben Algorithmen entwickelt, die die Abarbeitung der Abfrage optimal anordnen. Die Algorithmen merken sich auch ihre Erkenntnis, um sie bei Optimierungen ähnlicher Abfragen nutzen zu können.

Es gibt auch Algorithmen, die sehr kritisch betrachtet werden, die Scoring Algorithmen. Hier prüft ein Computer auf Basis des Namens, der Alters, der Wohnadresse, … ob ein Vertrag, ein Kredit oder eine Versicherung mit der Person ein zu grosses Risiko darstellt. Bis vor einigen Jahren wurde diese Tätigkeit von Menschen im „Back-Office“, also ohne direkten Kontakt zum Kunden, erledigt. Für einen Kredit für einen Neuwagen ist ein Arbeitsaufwand von einer halben Stunde sicher tragbar, was aber, wenn es bei einem Online-Händler um eine Kauf auf Rechnung für 10,- EUR geht? Letztlich arbeitet heute der Computer mit etwa dem gleichen Algorithmus wie der Sachbearbeiter im Back-Office vor 20 Jahren.

Was ist also ein Algorithmus?

Jemand definiert eine Handlungsanweisung und jemand oder etwas führt sie aus.

Definieren kann der Mitarbeiter der Tütensuppen-Firma, ein Mitarbeiter aus der Rechtsabteilung, ein Spezialist eines Datenbanksystem-Herstellers, aber auch ein Wal (ja, die im Meer schwimmenden Säugetiere).

Der Algorithmus, also die Handlungsanweisungen wird durch den Käufer der Tütensuppe, den Mitarbeiter im Back-Office, die Datenbank oder Jung-Walen bei der Heringsjagd ausgeführt.

Ich arbeite seit über 30 Jahren als „Algorithmus Entwickler“ für die Computer-Systeme bei grossen Unternehmen. Von Fachbereich-Spezialisten, z.B. aus der Vertragsverwaltung, bekomme ich eine Vorgabe, was der Algorithmus machen soll. Diese Vorgabe heisst Fach-Konzept. Ich erstelle dann ein technisches Konzept, dass ich mit Kollegen und auch den Fachbereich abstimme. Aus dem technischen Konzept wird dann der Computer-Algorithmus implementiert. Zuerst teste ich zusammen mit Kollegen aus der Computer-Abteilung die Implementierung. Dann wird das Programm von speziell ausgebildeten Testern auf Basis des Fach-Konzeptes geprüft. Bevor das Programm wirklich zum Einsatz kommt, prüfen die Mitarbeiter des Fachbereichs noch einmal das Programm auf „Herz und Nieren“.

Wichtig ist, viele Menschen, die auch ihre Ethischen Werte nicht vergessen, erstellen und prüfen den Algorithmus.

Nun kommen wir zur Künstlichen Intelligenz.

Eine Tochterfirma von Google forscht in diesem Bereich sehr intensiv.

Mitte 2017 erstellten sie eine KI auf Basis von Neuronalen Netzwerken, die sehr gut das Spiel GO (ein asiatisches Strategiespiel) beherrschte, und zwar so gut, dass kein anderer Computer und erst recht kein Mensch diese KI schlagen konnte.

Im Herbst 2017 kamen sie dann auf die Idee, die KI sollte Schach spielen.

Die KI wurde „zurückgesetzt“, vergass also alles zum Thema GO.

Nun wurden der KI die Schach-Regeln beigebracht, und zwar genau das, was man einem Kind erklärt, bevor man die erste Runde mit ihm spielt. Welche Figuren gibt es, wie können sie gezogen werden, alles bis hin zur Rochade, und nicht mehr!

Dann durfte die KI vier Stunden gegen sich selber spielen, dieses war die Lernphase.

Anschliessend spielte die KI gegen das besten Schach-Programm, also einen Algorithmus.

In diesem Algorithmus ist das Wissen der besten Schachspieler und Software-Entwickler in den letzten Jahrzehnten eingeflossen. Ein Mensch braucht gegen diesen Algorithmus nicht anzutreten, er verliert sowieso.

Nun spielten die KI und der Algorithmus 100 Partien, die KI gewann 22 Spiele, 78 waren remis, der Algorithmus gewann kein Spiel!

Die KI erreichte also in 4 Stunden Lernphase eine Spielstärke, die deutlich über einen Algorithmus mit mehreren Jahrzehnten Entwicklungsdauer lag.

Im Herbst 2018 wurden einige der Spiele veröffentlicht, ähnlich den Spielen um die Schach-Weltmeisterschaft bei Menschen.

Schachspieler analysierten die Spiele, eine überraschende Erkenntnis war: Die KI spielt nicht wie ein Computer, sondern eher wie ein Mensch!

Mit KI beschäftige ich mich seit meinem Studium mal mehr, mal weniger intensiv, beruflich erstelle ich ja Algorithmen.

Vor 30 Jahren gab es LISP, eine Programmiersprache, die für KI geeignet ist, PROLOG, eine deklarative Sprache für die „Zielsuche“ und Expertensysteme, letztlich Algorithmen, die komplexe Entscheidungen herleiten sollten. Aber alles hat wenige mit den heutigen KI Systemen zu tun.

Eine KI ist heute zumeist ein Neuronales Netzwerk. Ähnlich den Neuronen in unserem Gehirn verknüpfen sich die (vielen) Neuronen in dem Netzwerk untereinander. Nicht jedes Neuron mit allen anderen Neuronen, sondern jeweils ein Neuron nur mit einigen anderen Neuronen. Zwischen den Neuronen werden einfachste Nachrichten ausgetauscht. Hierbei kommt es weniger auf den Inhalt, sondern auf die Frequenz, also die Anzahl der Nachrichten pro Zeiteinheit, an. Ab einen Schwellwert an Nachrichten pro Zeiteinheit, die ein Neuron erhält, beginnt es Nachrichten an andere Neuronen zu senden. In der Lernphase lernt jedes Neuron, ab welchen Schwellwert es selber senden soll, und von welchen Neuronen es Nachrichten empfangen und an welche Neuronen es seine Nachrichten schicken soll. Und bei einem Neuronalen Netzwerk endet die Lernphase nicht, es kennt den Spruch „Das haben wir immer schon so gemacht“ nicht!

Einen sehr guten Artikel über die Arbeitsweise eines Neuronalen Netzwerkes las ich vor einigen Jahren in der Computerzeitschrift CT. Es ging um keinen Computer, sondern um einen Ameisenstaat. In einem Ameisenstaat suchen die Arbeiterinnen ausgehend vom Ameisenbau nach Futter. Auf ihrem Weg hinterläßt jede Ameise eine feine Duftspur, die sich aber mit der Zeit verflüchtig. Findet eine Ameise keine Futterstelle, sucht sie weiter und ihre Duftspur verfliegt. Wege zu ergiebigen Futterstellen werden von vielen Arbeiterinnen genutzt, deshalb ist hier die Duftspur besonders kräftig. Die anderen Arbeiterinnen folgen der stärksten Duftspur und finden so auf dem schnellsten Weg zur Futterstelle. Einige verlassen aber den Pfad zufällig (?) und finden vielleicht einen noch schnelleren Weg zu dieser Futterstelle, oder aber eine andere ergiebige Futterstelle. Damit wird diese Duftspur stärker, während die alte Duftspur immer schwächer wird.

An den Beispiel Ameisen-Duftspur erkennt man auch das Problem bei der Konstruktion von Neuronalen Netzwerken. Verfliegt die Duftspur zu schnell, gibt es Chaos wegen fehlender Informationen, verfliegt die Duftspur zu langsam, gibt es Chaos, weil zu viele unnütze Informationen vorliegen.

Beobachten Sie über längere Zeit das Treiben in der Umgebung eines Ameisenbaus. Sie kennen jetzt die Regeln, nach denen Ameisen die optimalen Wege zum Futter finden. Können Sie voraussagen, welche Wege in einer Stunde von den Ameisen genutzt werden?

Ein Neuronales Netzwerk und die Ameisen „lernen“ iterativ und evolutionär! Die Implementation eines Algorithmus ist ein einmaliger Vorgang. Vielleicht dient der Algorithmus als Vorlage bei der Entwicklung des nächsten Algorithmus, der Algorithmus ändert sich aber nicht. Sein Arsenal an Aktionen ist am Ende seiner Implementierung vollständig definiert und damit reproduzierbar testbar.

Während der vier Stunden Lernphase für Schach prüfte kein Mensch, wie die KI arbeitet. Wie sollten auch Menschen etwas prüfen, was besser ist wie der beste Algorithmus, den viele Experten in vielen Jahrzehnten entwickelt haben.

Damit entfällt auch der Mensch (oder der Wal) als Kontrollinstanz, die ethische Grundsätze hat.

Die Regeln, die die KI als Schranken hatten, also welche Figuren gibt es, wie dürfen sie gezogen werden und wie andere Figuren schlagen, waren ja so einfach und auch vollständig der KI beigebracht. Und das Verhalten der KI hatte ja keine Auswirkung auf die übrige Welt.

Facebook forscht auch im Bereich KI. Dort wollte man vor einiger Zeit wissen, wie sich zwei KI System mit einander unterhalten. Begonnen habe die beiden KI mit Englisch, aber sie entwickelten sich weiter und erfanden eine neue Sprache, Geheimsprache ist hier nach meiner Meinung der falsche Begriff. Da nun die Menschen der Kommunikation nicht mehr folgen konnten, wurde das Experiment beendet und beide KI Systeme abgeschaltet.

Es hat bei diesem Experiment die einfache Regel „Unterhaltet Euch auf Englisch“ gefehlt.

Die Marketing-Abteilungen vieler Unternehmen sprechen von „KI“, wenn sie das Ergebnis ihrer Kollegen aus der Entwicklungsabteilung, also das Ergebnis deren „natürlichen menschlichen Intelligenz“, möglichst marktschreierisch anpreisen. Und die Öffentlichkeit meint, „KI“ wäre auch nur ein Algorithmus, der von Menschen mit ethischen Grundsätzen entwickelt worden ist.

Aktuell befinden wir uns noch in der Forschungsphase. Aber eine KI, die bessere Weg für die Probleme der Menschheit, also Hunger, Umweltverschmutzung, Ressourcenknappheit, … findet, ist für uns als Menschen ein grosser Segen!

Bleibt nur ein Problem: Was ist, wenn wir beim Start der KI eine Regel vergessen oder falsch ausgedrückt haben? Eine Lösung für die oben genannten Probleme könnte ja auch eine Erde ohne Menschen sein.

Jetzt brauchen wir Menschen, die ständig prüfen, ob die KI noch in unserem Sinn und Interesse arbeitet.

Diese Menschen können das „Prüfen“ nicht gelernt haben, sie müssen die Fähigkeit schon besitzen.

Warum kann das „Prüfen“ nicht gelernt werden?

Wenn es ein Mensch lernen kann, müsste es ja auch zumindest einen Menschen geben, der es lehren kann.

Und nun stellt sich die Frage, warum genau dieser Mensch nicht für die fehlenden Regeln gesorgt hat, bevor die KI gestartet wurde.

Diese Menschen müssen ethisch und moralisch hohen Ansprüchen genügen, denn sie haben eine grosse Verantwortung. Die KI Systeme sorgen dafür, dass die Menschen, auch wenn es deutlich über acht Milliarden Menschen sind, leben können, ohne die Erde für künftige Generationen unbewohnbar zu machen. Werden die KI Systeme abgeschaltet, werden sicher viele Menschen deswegen sterben, aber sicher werden die „Prüfer“ zu den Überlebenden gehören, oder etwa nicht?

Wir brauchen also Menschen, die über die nötige Auffassungsgabe verfügen.

Diese müssen, ohne dass „Mitbewerber“ oder deren Eltern versuchen, sie wie auch immer zu übertrumpfen, ausgewählt und ihre Fähigkeiten durch eine passende Ausbildung verfeinert werden.

Und von diesen Menschen dürften wir weltweit nur sehr wenige haben.

Andere vielfach beschworene Gefahren von KI System und der weiteren Automatisation sehe ich nicht. Es wird die Gefahr des Abbaus von Arbeitsplätze genannt.

Die Menschen arbeiten, um ihre Ziele, also die Möglichkeit zum Konsum und Anerkennung zu erreichen.

Durch KI Systeme und die weitere Automatisation werden nicht weniger, sondern eher mehr Güter und Dienstleistungen erzeugt.

Haben die Menschen weniger Einkommen, also Anrecht auf Konsum, würde weniger gekauft und damit in der Zukunft weniger produziert werden.

Zehntausend Menschen, die einen Kleinwagen kaufen möchten, aber nicht das notwendige Einkommen, also „das Anrecht auf Konsum“, haben, können nicht als Konsumenten durch einen Superreichen „ersetzt“ werden, der einen Super-Sportwagen kauft.

Damit ergeben sich Umschichtungen in der Erwerbswelt, diese kennen wir aus der Geschichte. Früher waren fast alle Menschen in der Landwirtschaft tätig, und heute?

Bei personenbezogene Dienstleistungen, also Pflege, Erziehung und in vielen weiteren Feldern, sind KI Systeme und Roboter nicht die Lösung. Und die persönliche Pflege eines Menschen ist sicher eine Tätigkeit, die mehr Anerkennung erhält wie das formale Prüfen von dutzenden Haftpflichtschäden pro Tag.

Künstlerische und kunsthandwerkliche Tätigkeiten sowie Pflege- und Erziehungsberufe, die häufig freiberufliche ausgeübt werden, sind heute schlechter bezahlt im Vergleich zu festangestellten Verwaltungs- oder Fliessband-Berufen. Hier wird es sicher Umstellungen geben müssen. Ein erster Schritt wäre der Schwenk von einer einkommensbezogenen Erhebung von Steuern und Sozialabgaben hin zu Verbrauchssteuern, zum Beispiel der Mehrwert-, Energie-, Umweltbelastungs- und Genussmittelsteuern. Weiterhin sollte es ein Grundeinkommen, das von der Gesellschaft zur Verfügung gestellt wird, geben. Dieses Grundeinkommen wird pro Kopf gezahlt und es gibt keine weitere staatlichen Zuwendungen. Das Grundeinkommen sollte für ein ruhiges Leben in einer Lebensgemeinschaft auf dem Land reichen. Wer in München wohnen oder einen Sportwagen fahren möchte, muss dazu verdienen.

März 2019