Nehmt java, haben sie uns gesagt. Da kann man nix falsch machen, es gibt keine bufferüberläufe und keine pointer, es ist also viel sicherer, haben sie uns gesagt.
Jetzt Patch patchen!
Als jemand, der vor über zwanzig jahren zum letzten mal in seinem leben java angefasst hat und beschlossen hat, sich nur noch angenehmeren dingen zuzuwenden, frage ich mich ja: an welcher stelle beim wegschreiben einer logdatei kann es eigentlich zur ausführung von kohd kommen und warum ist das so?
In eine logdatei gehen kurze texte zusammen mit einer einfachen kategorisierung ihrer wichtigkeit und einer kennung des erzeugers, denen bei der entstehung noch datum und uhrzeit zugeordnet wird. Selbst, wenn das extrem flexibel und abstrakt programmiert wird, so dass auch netzwerktransparent und in völlig andere dinge als textdateien weggeschrieben werden kann, bleiben es kurze texte mit einem erzeuger, einer gewichtung und einer erzeugungszeit. Nichts, was ausgeführt wird. Was müssen die für eine rottige, überkomplexe krüppelscheiße programmiert haben, damit es zu solchen problemen überhaupt kommen kann?! Und was müssen die für eine rottige, überkomplexe krüppelscheiße programmiert haben, damit man so ein problem nicht sofort in den griff kriegt und behebt?! 🤦♂️️
Die progger kamen sicherlich direkt von der uni. Ich brauche nur das problem zu hören, das sie angerichtet haben, und habe sofort eine vorstellung des überkomplexen kohds, den sie zum wegschreiben von logdateien geschrieben haben müssen. So frei nach dem motto: probieren wir doch einfach mal alles aus, was in diesem tollen buch „design pattterns, elements of reuseable object-oriented software“ drinsteht¹. So schade, dass heute kein mensch an den verblödungsanstalten mehr lernt, dass komplexität das genaue gegenteil von sicherheit, analysierbarkeit und robustheit ist.
Vermutlich wird man einige jahrzehnte nach meinem tod feststellen, dass die hl. kirche der objektorientierten programmierung auch nicht die erlösung gebracht hat, sondern eine neue art von spagettikohd: gordisch verworrene objektorientierte spagettiknäuel, die auch mit guten werkzeugen niemand mehr so entwirren kann, dass sie verständlich, analysierbar, entfehlerungsfähig und anpassbar werden. Aber dafür kann man halt viel zeit mit dem aufbau solcher knäuel verbringen, dazu viele lustige UML-diagramme zeichnen, und wenn man für arbeitszeit und nicht für fortschritt und erfolg bezahlt wird, verbringt man eben viel zeit damit.
¹Disclaimer: ich mag das buch. Wirklich. Aber wenn die dort vorgestellten entwurfsmuster zum hammer werden, mit dem ein progger rumläuft, um überall nägel zu sehen, dann wird auch noch die einfachste aufgabe überkomplex implementiert. Was habe ich früher in typischem java-drexkohd viele klassen mit genau einer metode gesehen und mich gefragt, ob diese ganzen factories und singletons nicht eigentlich das sind, was wir früher einmal funkzjonen genannt haben, und ob kohd wirklich überschaubarer wird, wenn man jeden noch so kleinen oder nur mittelgroßen switch()
über ein gewebe aus context, abstract state und state implementiert, gern über acht bis zwanzig bandwurmlangnamige dateien im projekt ausgebreitet, weil das „überschaubarer“ sein soll. Vielleicht hätte man doch lieber bei funkzjonaler programmierung bleiben sollen. Es muss ja nicht gerade LISP sein. (Obwohl LISP sehr gut ist, wenn man einen modernen editor wie vim
hat, der die zugehörige klammer hervorhebt.) Aber dann hören menschen so begriffe wie „monoid“ und „assozjativgesetz“ und kriegen im lande des matematischen analfabetismus diese schreckliche angst. Geh sterben, zivilisazjon!