Hallo,
folgendes wollte ich zuerst in diesen Thread schreiben, allerdings ist das ziemlich OT und ein komplett eigenes Thema. Ich habe das alles sehr generisch geschrieben, weil diese Umstände nicht nur in einem Bereich herrschen. Mir geht es nicht um ein spezielles Problem sondern um grundsätzliche Entwicklungen, die ich beobachtet habe und zu deuten versuche. Auch bilde ich mir keine perfekte (Software)Welt ein. Mir ist durchaus klar, dass die Dinge nie absolut perfekt sein werden. Ich versuche nur das etwas zu abstrahieren um über Ursachen und mögliche Ansätze für Verbesserungen gegenüber der gegenwärtigen Situation nachzudenken.
Ich frage mich gerade, warum es zu so etwas kommt. Software wird ständig überladener und undurchschaubarer. Es kommen Features hinzu die einfach keine sind, Kompatibilität brechen und der Aufwand für jede kleine Änderung steigt ins unermessliche. Es ist nicht so, dass ich das nicht von mir kenne. Wenn ich etwas programmiere und dabei einfach drauflos hacke, just for fun und ohne eine klare Vorstellungen was dabei raus kommt entsteht genau so etwas. Allerdings habe ich dann weder vor das jemand anderem zuzumuten, noch würde ich mich ernsthaft als Programmierer bezeichnen.
Es ist also eigentlich ungerechtfertigt, wenn ich mich darüber aufrege. Mir geht es aber um's Verständnis. Warum entsteht so etwas? Man muss bedenken, dass man unter Unix ist seit dreißig, vierzig Jahren ganz gut ohne dieses unnötige Übermaß an Komplexität ausgekommen ist. Okay, da gibt es X, aber das ist richtig groß und die ganze Welt hängt dran und muss irgendwie berücksichtigt werden. Ich kann da relativ gut verstehen warum es nicht die perfekte Software ist. Die Interfaces sind allerdings weit besser, als das was man anderswo sieht. In den meisten Fällen kann man außerdem den bewerten Weg gehen, wenn man will und keine allzu komplexen Anwendungen nutzt die unbedingt das neue Zeug brauchen. Außerdem ist das dann nicht mehr wirklich X selbst.
Eine andere Frage, die ich mir stelle ist was aus _simplen_ Standards und Philosophien wird. Warum schaut man sich nicht mehr von Plan 9 ab? Ich rede nicht davon es eins zu eins zu klonen, aber immer wenn es eine gute, einfache Idee gibt heißt es man muss auf die Abwärtskompatibel achten und wenn sie jede Menge Komplexität schafft und vorangegangene und vor allem bewährte zerstört fragt man nicht lange, veröffentlicht das neue (natürlich unfertige) System und sagt, dass man das alte, funktionierende Zeug einfach nicht mehr unterstützt oder behauptet es zwar und ist dabei realitätfern, weil das neue, bessere, weil komplexere dazwischenfunkt. Natürlich gibt es dann noch das Zeug, das einfach ewig lebt und niemand mehr weg bekommt, obwohl es jeder hasst.
Ja, Computer sind komplex, aber es ist ein Unterschied, ob Implementierungen oder Interfaces diese Komplexität aufweisen. Dabei habe ich nichts dagegen, wenn ein Interface vollkommene Macht zum Beispiel in Form von irgendeinem direkten, lowlevel Zugriff hat, aber wenn man eine API hat wo man quasi die Funktionalität selbst programmieren muss warum dann den Aufwand betreiben eine solche Software/Bibliothek/Whatever zu schreiben? Sollten Computer (bzw. die Software, Protokolle und Standards) Dinge nicht einfacher machen?
Auch beobachte ich in letzter Zeit diese "für große, komplexe Projekte"-Mentalität bzw. -Ausrede (ist aber sicherlich austauschbar). Damit wird dann jeder Unsinn gerechtfertigt. Schlechte, komplexe API mit riesigem Aufwand beim Erlernen, Verstehen und Nachvollziehen der Arbeit eines Systems (und das sage ich als Perlfan!) und generell die Tatsache, dass man permanent dazu gezwungen ist mit Kanonen auf Spatzen zu schießen. Da hat man dann irgendein Highlevel-Zeug und denkt sich, dass Assemblycode portabler, wartbarer und vor allem einfacher wäre. Macht man das um künstlich Arbeitsplätze zu schaffen, damit der Programmierer weniger Konkurrenz in seinem Fachgebiet hat, ein Experte sein MUSS und sagen kann dass er solche Unmengen an Code geschrieben hat? Wäre es nicht besser weniger und womöglich langsamer zu tippen und mehr nachzudenken?
Der Gedanke mit den Arbeitsplätzen ist mir kürzlich in einer ähnlichen Diskussion quasi bestätigt worden. Für gewöhnlich werde ich ja früher oder später mit dem "Vorwurf" konfrontiert, dass ich ein Idealist sein. Diesmal war man so nett und hat das begründet. Ich habe keine Ahnung vom Arbeitsmarkt und mit solchen Ansichten kann ich kein Geld verdienen und überleben. Hört sich also so an, als wäre mal wieder das liebe Geld schuld an den Problemen. Ich habe ein wenig darüber nachgedacht und mir fielen einige gute, simple, erfolgreiche Projekte ein - all das was Computer und das Internet erfolgreich gemacht hat. Trotzdem stimmt es wohl. Vieles von diesen Dingen war für den Erfinder oder Entwickler kein kommerzieller Erfolg. Man denke an C, Unix, TCP/IP, HTTP, Xerox, ISC, ...
Klar, viele von denen gelten jetzt als Gurus und können deshalb davon leben, aber eben nicht von ihrer ursprünglichen Leistung. Natürlich musste ich dann recht bald an Open Source denken. Ich will keine konkreten Beispiele nennen, weil vieles einfach Ansichtssache ist, aber jeder kennt doch Projekte, die durch ihre niedrige Komplexität, Portabilität und generell der praktischen Umsetzung der Unixphilosophie bestechen.
Dann frage ich mich ob man als angehender Programmierer einfach lernt schlechte Software zu schreiben. Und was ist dann mit der Software, die einfach das tut was sie tun soll?
Man kann sich ja den Sourcecode ansehen. In diesen Projekten wird nichts sonderlich spezielles gemacht. Jeder Anfänger kann solche Software schreiben. Es ist sogar so, dass ich denke, dass ein Anfänger Software genau so schreiben würde. Ist also ein Übermaß an Erfahrung das Problem? Ich denke nicht, denn viele scheinen sich nach vielen Jahren schlussendlich genau auf dieses Prinzip zu besinnen. Wo kommt also all die unnötige(!) Komplexität ins Spiel und was kann man dagegen tun oder liege ich mit all dem einfach falsch?
Ich bin mir sicher, dass die Meisten von euch wesentlich mehr Ahnung haben. Deshalb würde ich gern eure Meinung zu diesen Dingen lesen.
Gruß,
Athaba
folgendes wollte ich zuerst in diesen Thread schreiben, allerdings ist das ziemlich OT und ein komplett eigenes Thema. Ich habe das alles sehr generisch geschrieben, weil diese Umstände nicht nur in einem Bereich herrschen. Mir geht es nicht um ein spezielles Problem sondern um grundsätzliche Entwicklungen, die ich beobachtet habe und zu deuten versuche. Auch bilde ich mir keine perfekte (Software)Welt ein. Mir ist durchaus klar, dass die Dinge nie absolut perfekt sein werden. Ich versuche nur das etwas zu abstrahieren um über Ursachen und mögliche Ansätze für Verbesserungen gegenüber der gegenwärtigen Situation nachzudenken.
[Off Topic Rant]Mittlerweile habe ich meine Configs so weit angepasst, dass ich weiß, dass mein altes Setup (wmii/i3 und urxvt) einfacher war. Die XFCE-Konfiguration und vor allem das Anpassen von Scripts ist echt mühsam und mitunter auch ziemlich buggy (ich glaube by design). Da gibt es so viele Workarounds auf die man kennen muss und wer ist auf die abartige Idee gekommen Unix und vor allem GTK-Applikationen mit XML für die Konfiguration auszustatten, wenn normale Key-Value-Files so viel einfacher funktionieren? Toll, dass man alles konfigurieren kann, aber _so_ macht es keinen Spaß. Jede Menge Komplexität ohne irgendeinen Vorteil. Dabei hat das am Anfang alles so schön ausgesehen.[/Off Topic Rant]
Ich frage mich gerade, warum es zu so etwas kommt. Software wird ständig überladener und undurchschaubarer. Es kommen Features hinzu die einfach keine sind, Kompatibilität brechen und der Aufwand für jede kleine Änderung steigt ins unermessliche. Es ist nicht so, dass ich das nicht von mir kenne. Wenn ich etwas programmiere und dabei einfach drauflos hacke, just for fun und ohne eine klare Vorstellungen was dabei raus kommt entsteht genau so etwas. Allerdings habe ich dann weder vor das jemand anderem zuzumuten, noch würde ich mich ernsthaft als Programmierer bezeichnen.
Es ist also eigentlich ungerechtfertigt, wenn ich mich darüber aufrege. Mir geht es aber um's Verständnis. Warum entsteht so etwas? Man muss bedenken, dass man unter Unix ist seit dreißig, vierzig Jahren ganz gut ohne dieses unnötige Übermaß an Komplexität ausgekommen ist. Okay, da gibt es X, aber das ist richtig groß und die ganze Welt hängt dran und muss irgendwie berücksichtigt werden. Ich kann da relativ gut verstehen warum es nicht die perfekte Software ist. Die Interfaces sind allerdings weit besser, als das was man anderswo sieht. In den meisten Fällen kann man außerdem den bewerten Weg gehen, wenn man will und keine allzu komplexen Anwendungen nutzt die unbedingt das neue Zeug brauchen. Außerdem ist das dann nicht mehr wirklich X selbst.
Eine andere Frage, die ich mir stelle ist was aus _simplen_ Standards und Philosophien wird. Warum schaut man sich nicht mehr von Plan 9 ab? Ich rede nicht davon es eins zu eins zu klonen, aber immer wenn es eine gute, einfache Idee gibt heißt es man muss auf die Abwärtskompatibel achten und wenn sie jede Menge Komplexität schafft und vorangegangene und vor allem bewährte zerstört fragt man nicht lange, veröffentlicht das neue (natürlich unfertige) System und sagt, dass man das alte, funktionierende Zeug einfach nicht mehr unterstützt oder behauptet es zwar und ist dabei realitätfern, weil das neue, bessere, weil komplexere dazwischenfunkt. Natürlich gibt es dann noch das Zeug, das einfach ewig lebt und niemand mehr weg bekommt, obwohl es jeder hasst.
Ja, Computer sind komplex, aber es ist ein Unterschied, ob Implementierungen oder Interfaces diese Komplexität aufweisen. Dabei habe ich nichts dagegen, wenn ein Interface vollkommene Macht zum Beispiel in Form von irgendeinem direkten, lowlevel Zugriff hat, aber wenn man eine API hat wo man quasi die Funktionalität selbst programmieren muss warum dann den Aufwand betreiben eine solche Software/Bibliothek/Whatever zu schreiben? Sollten Computer (bzw. die Software, Protokolle und Standards) Dinge nicht einfacher machen?
Auch beobachte ich in letzter Zeit diese "für große, komplexe Projekte"-Mentalität bzw. -Ausrede (ist aber sicherlich austauschbar). Damit wird dann jeder Unsinn gerechtfertigt. Schlechte, komplexe API mit riesigem Aufwand beim Erlernen, Verstehen und Nachvollziehen der Arbeit eines Systems (und das sage ich als Perlfan!) und generell die Tatsache, dass man permanent dazu gezwungen ist mit Kanonen auf Spatzen zu schießen. Da hat man dann irgendein Highlevel-Zeug und denkt sich, dass Assemblycode portabler, wartbarer und vor allem einfacher wäre. Macht man das um künstlich Arbeitsplätze zu schaffen, damit der Programmierer weniger Konkurrenz in seinem Fachgebiet hat, ein Experte sein MUSS und sagen kann dass er solche Unmengen an Code geschrieben hat? Wäre es nicht besser weniger und womöglich langsamer zu tippen und mehr nachzudenken?
Der Gedanke mit den Arbeitsplätzen ist mir kürzlich in einer ähnlichen Diskussion quasi bestätigt worden. Für gewöhnlich werde ich ja früher oder später mit dem "Vorwurf" konfrontiert, dass ich ein Idealist sein. Diesmal war man so nett und hat das begründet. Ich habe keine Ahnung vom Arbeitsmarkt und mit solchen Ansichten kann ich kein Geld verdienen und überleben. Hört sich also so an, als wäre mal wieder das liebe Geld schuld an den Problemen. Ich habe ein wenig darüber nachgedacht und mir fielen einige gute, simple, erfolgreiche Projekte ein - all das was Computer und das Internet erfolgreich gemacht hat. Trotzdem stimmt es wohl. Vieles von diesen Dingen war für den Erfinder oder Entwickler kein kommerzieller Erfolg. Man denke an C, Unix, TCP/IP, HTTP, Xerox, ISC, ...
Klar, viele von denen gelten jetzt als Gurus und können deshalb davon leben, aber eben nicht von ihrer ursprünglichen Leistung. Natürlich musste ich dann recht bald an Open Source denken. Ich will keine konkreten Beispiele nennen, weil vieles einfach Ansichtssache ist, aber jeder kennt doch Projekte, die durch ihre niedrige Komplexität, Portabilität und generell der praktischen Umsetzung der Unixphilosophie bestechen.
Dann frage ich mich ob man als angehender Programmierer einfach lernt schlechte Software zu schreiben. Und was ist dann mit der Software, die einfach das tut was sie tun soll?
Man kann sich ja den Sourcecode ansehen. In diesen Projekten wird nichts sonderlich spezielles gemacht. Jeder Anfänger kann solche Software schreiben. Es ist sogar so, dass ich denke, dass ein Anfänger Software genau so schreiben würde. Ist also ein Übermaß an Erfahrung das Problem? Ich denke nicht, denn viele scheinen sich nach vielen Jahren schlussendlich genau auf dieses Prinzip zu besinnen. Wo kommt also all die unnötige(!) Komplexität ins Spiel und was kann man dagegen tun oder liege ich mit all dem einfach falsch?
Ich bin mir sicher, dass die Meisten von euch wesentlich mehr Ahnung haben. Deshalb würde ich gern eure Meinung zu diesen Dingen lesen.
Gruß,
Athaba
Zuletzt bearbeitet: