In den ganzen Kommentaren wird viel von Effizienz gesprochen.... über welche Effizienz reden wir?
Fakt: früher war die SW kleiner und wäre auf modernen Maschinen schneller.
Fakt: früher konnte die SW in der Regel weniger, aber die wenigsten werden auf den Mehrwert verzichten wollen.
Ein Bereich, der sich heute immer noch sehr stark um vorhandene Ressourcen (RAM/ROM/Laufzeit) sorgen machen muss sind Embedded Systeme also z.B. Steuergeräte in Automobilen. Ich will heute aber sicher keine Steuergeräte-SW sehen, die so entwickelt wird wie früher. Die Kommunikation zwischen den verteilten Systemen ist viel zu groß, dazu kommen die Sicherheitsaspekte, der Code muss funktionial tun!
Gerade bei Steuergeräten geht man heute dazu über "Modellbasiert" (also graphisch) zu entwicklen, Code automatisch zu generieren und zu optimieren. Das Risiko in den hochkomplexen System wäre sonst viel zu groß. Nehmen wir ein modernes Auto aus der Mittelklasse, hier kommt Ihr sehr schnell in die Lage, dass ca 80 Rechner mit Realtime-Systemen zusammen arbeiten und gemeinsam das Fahrzeug kontrollieren. Vor 30 Jahren brauchte ein großes Unternehmen nicht so viele Rechner für die Buchhaltung.... aber wer von Euch will auf ESP, Servolenkung, Multimediasysteme, Navigation und spritsparende Motoren verzichten... Die Systemkomplexität ist für heutige Bedürfnisse notwendig.
Bleiben wir beim PC, ja DOS war viel kleiner und auch die alten Rechner sind mind genausoschnell gestartet, Programme passten auf eine Diskette... aber heute will jeder während er einen Brief schreibt nebenbei MP3s hören, eine DVD transcodieren oder Tweet/Rss-Liveticker verfolgen. Dann muss parallel noch der Virenscanner mitlaufen und das soll auch noch zeitgemäß aussehen.
Insofern hat Dueck recht, gerade im PC-Segment kann ich heute mit den Systemen von vor ein paar Jahren keinen Blumentopf mehr gewinnen... hier soll es einfacher werden, und der Konkurrenzkampf ist groß --> die SW wird schnell zusammengestöpselt. Testing ist leider eine oft vernachlässigte Aktivität im SW-Engineering hier muss wieder mehr der Fokus auf Qualität gelegt werden. Das größte Problem ist m.M. nach die Bananenware (reift beim Kunden).
Dann:
Zum Beispiel konnten bestimmte Spiele auf Atari oder Commodore nur laufen, wenn man jedes überflüssige Bit in den oberen Speicherbereich verschob, denn es gab einfach nur sehr begrenzte Kapazitäten. So zu programmieren, war natürlich sehr aufwändig und teuer. Deshalb sind diese Programmierkünste heute verloren gegangen.
das ist richtig, diese Dinge werden heute nicht mehr gebraucht, leider sind nicht im gleichen Maße die Optimierungsfähigkeiten der neuen Toolketten mitgewachsen. Insbesondere bei großen Applikationen (z.B. VerwaltungsSW von Banken oder Versicherern) reden wir von *deutlich* komplexeren UseCases als vor einigen Jahren, zudem hat die Vernetzung die Systemkomplexität nach oben getrieben.
==> hier muss "anders" optimiert werden, hier müssen die Geschäftsprozesse performant und Effizient bedient werden und auch angepasst werden können. Durch die vorhande HW-Leistung muss ich nicht mehr zwingend das LowLevel optimieren. Der Benefit ist größer, wenn das Gesamtsystem betrachtet wird.