rubricanis
Homo ludens
Ich vermute übrigens dass bei den Servern die Komplexität durch die Verwaltung von Clustern und Benutzergruppen durchaus vergleichbar ist mit DEs und dass diese deshalb mit ähnlichen, nicht gleichen, Problemen zukämpfen haben.
LLVM ist ja ein ziemliches Monsterprogramm, aber intern besteht es aus einer ganzen Reihe von einzelnen Programmen die zudem noch gemeinsam diverse SharedLibs benutzen. Als Benutzer kann man entweder direkt das Interface von clang benutzen, oder falls notwendig und nur dann, kann man auf die Programme oder die SharedLibs einzeln zugreifen und unterschiedlich Workflows realisieren..
Im Unterschied zu C/C++ & Co, verwendet Rust (und Go wenn ich mich nicht irre) ein eigenes, auf die Sprache zugeschnittenes Installations- (Rustup) und Build-Tool (Cargo) das in die ganze Infrastruktur gut eingebunden ist. Wer sich jemals mit komplexeren Make Anwendungen und Library Abhängigkeiten rumgeschlagen hat kann so etwas nicht hoch genug einschätzen.
Die Gnome-Shell verwendet eine einzige Website von der man Extentions herunterladen und installieren kann. Die Extentions werden beim Update automatisch aktualisiert und sind nur für bestimmte Versionen zugelassen. Wenn die für neuere Versionen nicht angepasst sind, werden sie halt unbenutzbar.
Sicherlich lassen sich noch eine ganze Reihe solcher Dinge finden, und möglicherweise funktionieren die auch nicht immer zufriedenstellend was sich aber ändern kann und wird. Da hat sich ja z.B. auch bei der Packetverwaltung der Betriebssysteme einiges zum besseren gewendet. Sie werden auch nicht Jedermann glücklich machen, und manches auch auf dem Müllhaufen der Geschichte landen. Aber so ist es nun einmal...
Ich meine der Schlüssel zu Bewältigung von Komplexität sind Evolution und Spezialisierung auf der einen Seite, Abstraktion, Standartisierung und Modularisierung auf der anderen Seite. Die Probleme der Integration ganzer komplexer Systeme erfordern aber ein Denken das auf einer anderen Ebene liegt als das der normalen Software-Entwicklung. Hier spielen z.B. soziale und kommunikative Sachverhalte eine weit größere Rolle als das wohl den meisten Technikern bewußt ist.
Dem stimme ich zu, die Frage ist aber wie? Um zukünftige Entwicklungen antizipieren zu können müssen wir m.E. heutige Probleme und Ansätze zu deren Lösung analysieren um zu tragfähigen Entscheidungen kommen zu können. Und die gibt es ja durchaus. Und man wird sich von der einen oder anderen lieb gewordenen Gewohnheit verabschieden müssen. Mal ein paar Beispiele (aus meinem Erfahrungsbereich):Hier ist einfach mehr Software installiert und ggf. aktiv die fehlerhaft sein kann. Mehr Software = mehr Codezeilen. Bei gleicher Fehleranfälligkeit je Codezeile steigt somit die Wahrscheinlichkeit von Fehlern. Aus gutem Grund verfolgte man hier früher das KISS Prinzip. Wer denkt sich nicht manchmal, dass die kleine Software früher runder lief als die umfangreiche Heute. Das ist zum Teil Nostalgie und zum Teil in der Komplexität begründet. Und ich meine damit nicht, dass wir auf der Stelle stehen bleiben sollen, sondern dass wir die Komplexität im Griff halten müssen.
LLVM ist ja ein ziemliches Monsterprogramm, aber intern besteht es aus einer ganzen Reihe von einzelnen Programmen die zudem noch gemeinsam diverse SharedLibs benutzen. Als Benutzer kann man entweder direkt das Interface von clang benutzen, oder falls notwendig und nur dann, kann man auf die Programme oder die SharedLibs einzeln zugreifen und unterschiedlich Workflows realisieren..
Im Unterschied zu C/C++ & Co, verwendet Rust (und Go wenn ich mich nicht irre) ein eigenes, auf die Sprache zugeschnittenes Installations- (Rustup) und Build-Tool (Cargo) das in die ganze Infrastruktur gut eingebunden ist. Wer sich jemals mit komplexeren Make Anwendungen und Library Abhängigkeiten rumgeschlagen hat kann so etwas nicht hoch genug einschätzen.
Die Gnome-Shell verwendet eine einzige Website von der man Extentions herunterladen und installieren kann. Die Extentions werden beim Update automatisch aktualisiert und sind nur für bestimmte Versionen zugelassen. Wenn die für neuere Versionen nicht angepasst sind, werden sie halt unbenutzbar.
Sicherlich lassen sich noch eine ganze Reihe solcher Dinge finden, und möglicherweise funktionieren die auch nicht immer zufriedenstellend was sich aber ändern kann und wird. Da hat sich ja z.B. auch bei der Packetverwaltung der Betriebssysteme einiges zum besseren gewendet. Sie werden auch nicht Jedermann glücklich machen, und manches auch auf dem Müllhaufen der Geschichte landen. Aber so ist es nun einmal...
Ich meine der Schlüssel zu Bewältigung von Komplexität sind Evolution und Spezialisierung auf der einen Seite, Abstraktion, Standartisierung und Modularisierung auf der anderen Seite. Die Probleme der Integration ganzer komplexer Systeme erfordern aber ein Denken das auf einer anderen Ebene liegt als das der normalen Software-Entwicklung. Hier spielen z.B. soziale und kommunikative Sachverhalte eine weit größere Rolle als das wohl den meisten Technikern bewußt ist.