09.11.2016, 11:54 Uhr
Die sieben ärgerlichsten Probleme der Programmierung
InfoWorld-Redakteur Peter Wayner hat die sieben lästigsten Ärgernisse der Programmierung benannt und beschrieben.
Ganz oben in der Liste von Peter Wayner steht das Multithreading. Eigentlich etwas, das jeder unentwegt braucht und benutzt, gerade in der Zeit der Mehrkernprozessoren. Die Sache klappt auch ganz gut, solange die einzelnen Threads nichts miteinander zu tun haben. Wenn allerdings die Prozesse Variablen oder Dateien gemeinsam brauchen, dann beginnt der Horror, dem man durch Tools Herr zu werden versucht. Programmierer und Programm wandeln auf schmalen Grat zwischen Lösung und Chaos.
Punkt 2: Closures. Funktionen, die man wie Daten weiterreichen kann sind eine gute Idee. Klappt super bei einfachen Aufgaben. Doch dann, insbesondere bei JavaScript, griffen die Funktionen nach sogenannten freien Variablen und spätestens auf der Suche nach Fehlern war der Entwickler verloren. Closures sollten die Lösung sein. Doch sie sind, so Peter Wayner, die Quelle der größten Kopfschmerzen von JavaScript-Entwicklern. Newbies und sogar viele Veteranen sind nicht in der Lage herauszufinden, was eingeschlossen ist (closed) und wo die Grenzen der Closures liegen.
Punkt 3: Zu viele Daten. RAM ist nicht mehr knapp. So mancher Entwickler hat 32 GByte in seiner Maschine. Aktuelle Aufgaben, beispielsweise statistische Analysen großer Datenmengen sind aber wahre RAM-Fresser. Passt der Entwickler nicht auf wie ein Schießhund, fängt der Rechner an Daten in sein virtuelles Memory, also auf die ultralahme Festplatte auszulagern. Zudem beschwört der virtuelle Speicher weitere Probleme mit der Software herauf, das Threading gerät ins stolpern. Das Ganze läuft so langsam, dass mit dem Tempoverlust auch das Vertrauen in die Ergebnisse verloren geht. Vielleicht hat der Entwickler sogar aufgepasst, aber sein Endanwender der Software hat nur einen Rechner mit lediglich 6 GByte RAM. Dann bleibt nur noch der stereotype Satz: Bei mir lief das ohne Probleme.
Punkt 4: NP-Complete. Wer Informatik studiert hat, hat von diesem Acronym schon einmal gehört. Es wird selten komplett ausgesprochen: Nondeterministic Polynomial Complete. Schon der Name lässt viele erschauern. Es geht um Probleme, wie den Travelling Salesman. Eine Routenberechnung, die mit jedem Zwischenstopp problematischer wird. Nachdem sich die Studenten ein Semester lang damit beschäftigt haben, sind sie zu einer nebligen Vorstellung davon gelangt, dass niemand diese Probleme wirklich lösen kann. Das Gemeine: Manche NP-Probleme lassen sich einfach lösen – per Annäherung ohne Versprechen, dass es nicht noch besser ginge.
Punkt 5: Sicherheit. Beim Schreiben von jeder Zeile Code sollte man heute die Sicherheit im Hinterkopf haben. Aber nur die bekannten Schwachstellen kann man im Auge behalten. Es gibt Schwachstellen, die erst nächste Woche bekannt werden und womöglich auch noch welche, die niemals ans Licht der Öffentlichkeit kommen. Zudem arbeitet jede Software mit vielen anderen Programmen zusammen. Kein Entwickler kann es den Security-Spezialisten überlassen, hinter ihm aufzuräumen.
Punkt 6: Verschlüsselung. Das Wort Encryption klingt stark und unüberwindbar. Hinter den Kulissen lauert aber eine neblige Wolke der Ungewissheit. Selbst die Mathe-Profis gestehen einen Rest unsicherer Annahmen ein. Und Hand aufs Herz: Wenn Sie einen Weg gefunden hätten, von jeder Bank Geld abzuheben, würden Sie sofort die Welt informieren, dass die Lücke baldmöglichst geschlossen wird?
Punkt 7: Identitätsmanagement. Dazu gibt es einen bekannten Cartoon. Er zeigt zwei Hunde vor einem Computer. Der eine guckt fragend, der andere beruhigt ihn, indem er sagt: "Im Internet weiß niemand, dass wir Hunde sind."
Den kompletten englischsprachigen Beitrag von dem hier nur ein kleiner Teil sehr frei übersetzt wurde finden Sie unter http://www.infoworld.com/article/3138572/application-development/the-7-most-vexing-problems-in-programming.html. [bl]