Wie programmiert man Software "fett"?

fragemann

Banned
Registriert
Sep. 2018
Beiträge
489
Ich hoffe, ich hab hier den richtigen Thread gefunden. Ich programmiere ja selbst und mir ist es nach wie vor ein Rätsel, wie man Software heutzutage derart aufblähen kann, wie es manche Hersteller tun. Obwohl es unnötig ist.

Als Beispiel sei hier mal Premiere Pro CC vs VEGAS Pro angetan. Premiere Pro ist eine riesige Anwendung, die Ewigkeiten zum Starten braucht, Unmengen an RAM verschlingt und relativ träge ist, während VEGAS Pro exakt das selbe kann aber selbst auf einem Pentium 4 noch zackig startet.

Also wie blähen manche Hersteller die Programme überhaupt derart auf und warum?
 
Woher willst du wissen ob es unnötig ist?
 
fragemann schrieb:
wie man Software heutzutage derart aufblähen kann, wie es manche Hersteller tun.

Frameworks, Frameworks, Bibliotheken. Alles ist voller unnützem Mist, den man am Ende nicht einmal benötigt. Ich könnte hier noch viel viel weiter ausholen, aber das ist vermutlich sozial unverträglich ;)
 
fragemann schrieb:
Na dann nenn mir doch mal etwas, wofür Premiere einen derartigen Overheat benötigt ;)

Was für eine Argumentation... :rolleyes:

Weder kannst du behaupten dass Premiere Pro unnötig aufgebläht ist noch kann wer anders das Gegenteil behaupten, solange niemand Einblick in den Quellcode hat und ihn fachmännisch beurteilen kann. Das gleiche gilt natürlich auch für jede andere Anwendung, die du als aufgebläht betrachtest.

Und bei der Bewertung ob etwas aufgebläht ist oder nicht, dürfen natürlich auch nicht nur rein technische Aspekte betrachtet werden. Dazu gehören zum Beispiel auch betriebswirtschaftliche Aspekte.
  • Etwa ob es sich lohnt eine Software so schlank wie nur irgendwie möglich zu schreiben, wobei mehrere oder aufgrund Ihres Know-Hows teurere Entwickler benötigt werden.
  • Oder ob man für jeden Markt eine lokalisierte Version entwickelt oder der Einfachheit halber alle Sprachpakete in eine Anwendung packt.
  • Bei großen Produktsuites, deren Produkte in unterschiedlichen Versionen verkauft werden und häufig auf der gleichen Codebasis basieren, muss man auch beurteilen wieviel Aufwand man für möglichst schlanke Endergebnisse betreibt ob man unter der Haube nicht so viel wie möglich gleich lässt.
  • Optimierungen ganz allgemein kosten natürlich auch Zeit und somit Geld.
Das sind nur einige mögliche Aspekte und man kann gerne darüber diskutieren. Aber ein Urteil ob etwas nötig oder unnötig ist, kann sich niemand erlauben, der nicht im Detail mit der Entwicklung einer Anwendung befasst ist.
 
  • Gefällt mir
Reaktionen: mental.dIseASe, Nilson, Coca_Cola und 3 andere
fragemann schrieb:
Ich programmiere ja selbst und mir ist es nach wie vor ein Rätsel, wie man Software heutzutage derart aufblähen kann, wie es manche Hersteller tun. Obwohl es unnötig ist.
Hast du mal eine größere Anwendung geschrieben? Professionelle Anwendungen können gerne ein paar Millionen Codezeilen umfassen.

Ich erinnere mich noch gut an Aussagen von Kollegen wie: "Die Performance wird erst optimiert, wenn es tatsächlich ein Problem ist." Entscheidend sind für die meisten eher Features und Deadlines.

Hardware kann man immer aufrüsten. Zudem braucht man natürlich auch die Leute mit dem richtigen Know-how. @TE: Entwickle mal professionelle Software mit dem gleichen Umfang und dann wird verglichen ob die eigene Software schneller ist....
 
Du stellst ja ganz schoen seltsame Fragen ...
Erst der Thread wo du dich ueber "mangelhafte Kaufberatung" im Forum lustig machst, weil nicht zur HEDT Plattform geraten wird, und sich doch eigentlich jeder eine solche holen sollte.
Jetzt hier echauffierst du dich ueber eine Software, die ueber Jahre gewachsen ist, du keinen Einblick in den Quellcode noch irgendwelcher anderer Interna hast.
Ich mache jetzt einfach mal das gleiche, und behaupte dass dort der ein oder andere Programmierer am Werk sitzt, der dann doch deutlich mehr Ahnung hat als du.
Aber man merkt schon, du bist ein Teufelskerl, immer der Griff zum richtigen System, dazu noch ein Tausendsassa in Produktentwicklung, Software-Entwicklung und Projektplanung.

Wenn du wirklich wissen willst, "warum". Schreib den Support an. Evtl. gibt man dir dann ja eine Auskunft. Aber bitte, sei sanft zu denen und mach sie nicht so runter weil ihre Software so langsam und aufgeblaeht ist.
Hier bist du auf jeden Fall an der falschen Adresse, sofern nicht doch einer der Entwickler hier im Forum angemeldet ist - weiss man ja nicht...
 
  • Gefällt mir
Reaktionen: Gajel, Rickmer, Deathangel008 und eine weitere Person
Man kann zudem Software nicht einfach nur anhand der Feature-Liste vergleichen. Auf dem Papier tun alle Grafik- und/oder Video-Bearbeitungsprogramme dasselbe. Die Features lesen sich in der Regel nahezu identisch. Das ist ja bei Autos nicht anders. Liest man sich die Ausstattung eines Hyundai durch, bietet er auch alles Mögliche was der BMW auch hat. Das Problem ist dann aber, dass die Umsetzung dieser Features oftmals eher mäßig ist.

(BMW und Hyundai sind hier nur beispielhaft genannt)
 
abcddcba schrieb:
Aber man merkt schon, du bist ein Teufelskerl, immer der Griff zum richtigen System, dazu noch ein Tausendsassa in Produktentwicklung, Software-Entwicklung und Projektplanung.

Das hast du richtig erkannt :) Ich bin keiner, der alles frisst, was man ihm vorsetzt. Fanboys gibt es hier ja genug. Traurige Spezies.
Ergänzung ()

daniel_m schrieb:
Weder kannst du behaupten dass Premiere Pro unnötig aufgebläht ist noch kann wer anders das Gegenteil behaupten, solange niemand Einblick in den Quellcode hat und ihn fachmännisch beurteilen kann. Das gleiche gilt natürlich auch für jede andere Anwendung, die du als aufgebläht betrachtest.

Bullshit. Man sieht doch den Memory Footprint, die Binary-Size etc. Und solange andere Software das selbe kann mit einem Zehntel dessen - kann ich das sehr einfach behaupten.
 
fragemann schrieb:
Also wie blähen manche Hersteller die Programme überhaupt derart auf und warum?
Entwicklungszeit ist sehr viel teurer als einfach bessere Hardware hinzustellen. Deshalb gibts heutzutage schon eine gewisse Tendenz die Lösungen "fetter" werden zu lassen als man bräuchte wenn Effizienz an oberster Stelle ansiedeln würde.
Dabei ist jetzt fett kein explizites Ziel, sondern es ergibt sich, wenn man gewisse "Komfortfunktionen" beim programmieren verwendet.

Klar gibts dabei immer Ausreißer sowohl nach oben als nach unten. Aber grob verallgemeinert kann man das schon so sagen.
 
  • Gefällt mir
Reaktionen: fragemann und areiland
Das Problem an "stell dem Dev halt immer dickere Kisten hin" und scheiß auf Code Optimierung sind dann (beispielhaft genannt) irgendwelche Electron Apps, die für rudimentäre Dinge >200 MB RAM verbrennen oder irgendwelche NodeJS Programme mit hunderten NPM Abhängigkeiten oder Docker Container wo sich die Fußnägel hochrollen wenn man aus Versehen doch mal ins Dockerfile schaut und hunderte Prozesse und Abhängigkeiten in einem Container sieht.
Ja, so kann man halt schneller "entwickeln" und fertige Funktionen und Features zusammen pappen aber der typische Endanwender nutzt vielleicht mehr als eine Anwendung parallel und braucht damit noch fettere Systeme als der Dev, der nur die eine Anwendung bei sich testet und man hat diesen Rattenschwanz an teilweise hardcodierten Abhängigkeiten mit veralteten und teils unsicheren Libraries.
Leider ist die Ursache jedoch kein unfähiger oder fauler Dev sondern der (vermeintliche) Druck kommt von oben, man will ja schnell ein Release der Bananensoftware, die dann weiter beim Kunden reift wobei auch einfach oft verrgessen wird, vorher belastbare Pflichten- & Lastenhefte aufzustellen.
 
  • Gefällt mir
Reaktionen: fragemann
Ich finde die Fragestellung an sich nicht falsch, wenn sie darauf bezogen ist, um daran zu lernen. Also wenn man sich z.B. die Frage stellt, "könnte mir das auch passieren"? Das Problem ist, wenn in der Fragestellung bereits Schlussfolgerungen drin sind, die man eigentlich gar nicht ziehen kann, wenn man eine solche Frage stellen muss.

"Zu Fett programmieren" ist schon eine Aussage, bei der man aufpassen muss. Ich höre sowas gerne von "Codern", also Leute, die nur im Kleinen Software basteln. Was heißt "fett" hier überhaupt? Zu groß? Zu langsam? Das hängt nicht zwangsläufig zusammen. Aussagen der Art "mein Windows wird immer größer und langsamer" verdeutlichen dieses Unverständnis.

Warum wird Software immer größer? Der reine Programm-Code spielt da selten die große Rolle, selbst wenn es millionen Zeilen sind. Der Speicherplatz geht für Assets (Bilder, Ton, etc.) drauf. Früher, als Speicher knapp war, hat man alles daran gelegt, seiner Software nur das beizulegen, was auch tatsächlich verwendet wird. Heute ist es schwierig, das alles selber zu machen. Zudem wird von heutiger Software ein viel höherer Funktionsumfang erwartet. Beides bekommt man ohne Bibliotheken kaum mehr so hin, dass man dazu auch eine entsprechende Plattformabdeckung erreicht - das Ding muss ja überall laufen. Oft muss man auch gegen APIs programmieren, die den Einsatz von Bibliotheken erfordern.

Diese Bibliotheken, selbst wenn sie modular aufgebaut sind, kann man sich nicht so zurecht schneiden, dass nicht hier und da ein MB verschenkt wird. Ein Beispiel sind Toolkits mit schicken Grids und Usercontrols; hier kommen halt alle Designelemente und Icons mit, egal ob das Programm diese benötigt. Aber auch Plattform-SDKs, Sachen wie das .NET Framework oder Java, usw. gehören dazu. Dazu kommt, dass eine solche Optimierung, selbst wenn sie machbar wäre, neue Bugs erzeugt, die gefunden werden müssen, und die Wartbarkeit ordentlich leidet. Beispielsweise kann man die angepasste Library nicht mehr als fertiges Paket einbinden und auf Knopfdruck updaten. Seit es möglich ist, Speicherplatz zugunsten besserer Entwicklung zu opfern, tut man dies.

Die Frage nach dem "warum ist Premiere/Photoshop/Visual Studio/... so langsam" ist schwieriger. Die Antwort liegt aus meiner Sicht meistens bei "Altlasten" - Kunden erwarten, dass ihre Formate und Arbeitsweisen von vor 10-20 Jahren weiter unterstützt werden (Windows XP/7, Office 2003). Möchte man einen bestimmten Teil neu entwickeln, will man den neuen Code nicht durch die Features, die man eigentlich loswerden, und auch nicht mehr weiterentwickeln möchte, direkt wieder ruinieren. Was dann in der Praxis oft passiert, ist, dass der alte Code zur Abwärtskompatibilität drin bleibt, und z.B. nur aufgerufen wird, wenn eine Datei mit altem, nicht migrierbarem Format geöffnet wird. Leider wird der alte Code wiederum einen Rattenschwanz an ggfs. sehr zentrale Abhängigkeiten haben, was verhindert, dass dieser Code 100% isoliert werden kann, und keinen Einfluss auf den Rest mehr hat. Dadurch müssen über die Jahre immer mehr Dinge geladen, und zusätzliche Logik ausgeführt werden.

Glaub mir, die meisten Entwickler würden sehr gerne Altcode großzügiger rauswerfen, und Dinge "richtig" umstrukturieren. Aber erstens ist das eine Geldfrage: bei großen Softwareprojekten müsste man eigentlich alle 3-4 Feature-Releases einen reinen Wartungsrelease machen, bei dem kein neues Feature dazu kommt, sondern nur der Code glattgezogen wird. Aber wer kauft diese neue Version, die vermutlich sogar neue Bugs enthält? Und zweitens wird es dem Product Owner oft lieber sein, irgendwo 1% Kunden nicht zu vergraulen, als dass die Software irgendwo vielleicht 30% schneller startet - zumal kein Entwickler den am Ende konkret messbaren Nutzen einer solchen Aufräumaktion vorher garantieren kann.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Vulpecula und areiland
snaxilian schrieb:
Das Problem an "stell dem Dev halt immer dickere Kisten hin" und scheiß auf Code Optimierung sind dann (beispielhaft genannt) irgendwelche Electron Apps, die für rudimentäre Dinge >200 MB RAM verbrennen oder [...]

Nun gut, du erhältst für den hohen RAM-Verbrauch:
  • eine Entwicklung für alle Systeme, solange Chromium darauf läuft
  • einen einfachen Einstieg in die Programmierung
  • ein riesiges Ökosystem
  • viele Entwickler im Team, die einspringen können (= hoher Busfaktor)

Und wenn du dann noch die Ressourcen hast (siehe VSCode von Microsoft),
hast du selbst mit Electron eine schlanke Applikation.
 
In der Tat, das sind gute Argumente aber wo ist da der Vorteil für den Endanwender, der diese Anwendungen dann bei sich installieren und nutzen soll? Ja, es muss nicht mehr auf einem Core2Duo laufen aber die meisten PCs in Büros oder zuhause, abgesehen von den leistungsstärkeren Gamingsystemen, haben eben bei weitem nicht so viel Performance. Von daher sollte die Software eben auf dem zu erwartenden Zielsystem gut laufen und nicht nur bei den jeweiligen Entwicklern/Testern. Andererseits kann ich natürlich auch verstehen, wenn Anwender nur sagen "es ist alles langsam", da muss man sich eben die Zeit nehmen und der Ursache auf den Grund gehen. Meiner Meinung nach würden also solche gefühlten Engpässe seltener auftreten wenn eben schon bei der Entwicklung auf Ressourcenoptimierung geachtet wird und nicht immer mehr Hardware drauf geworfen wird oder man nachträglich seinen Code optimieren muss.
 
Fakt ist aber, niemand kann die Frage "Warum ist X langsamer als Y bei Task Z" beantworten kann. Deshalb verstehe ich nicht ganz was hier jetzt als Antwort erwartet wird. Es geht explizit um das eine Tool. Es sei denn es findet sich hier jemand der aktiv an der Entwicklung beteiligt war/ist - wer weiß.

Wie gesagt, Support anschreiben oder das Adobe Forum nutzen. Dort bekommt man wohl eher eine verbindliche Antwort als jetzt hier über Softwareentwicklung zu philosophieren.
 
fragemann schrieb:
Bullshit. Man sieht doch den Memory Footprint, die Binary-Size etc. Und solange andere Software das selbe kann mit einem Zehntel dessen - kann ich das sehr einfach behaupten.

Und der Funktionsumfang der von dir beispielhaft genannten Anwendungen ist zu 100% identisch? Ohne die geringste Abweichung? Falls es nämlich größere Unterschiede gibt, fällt deine sehr einfache und schlichte Argumentation zusammen wie ein Kartenhaus... Und diese Unterschiede gibt es:

https://trusted.de/adobe-premiere-pro-cc-vs-sony-vegas-pro-13

Laut dieser Info ist der Größenunterschied zwar gegeben, ist aber nicht so groß wie du uns das hier erzählst. Und Premiere scheint deutlich stabiler zu laufen und unterscheidet sich schon hier und da hinsichtlich der Features. Und vielleicht trägt ja auch die Unterstützung von zwei Plattformen zum Größenunterschied bei.

Aber da ich weder die eine noch die andere Anwendung nutze (ich sage das nur um nicht wie ein Fanboy dazustehen), kann ich für die Übersicht auch nicht die Hand in's Feuer legen.

Darüber hinaus gibt es natürlich noch andere Aspekte, die ebenfalls entscheidend beeinflussen wie "fett" eine Anwendung wird. So einige wurden ja schon von mir und vielen anderen genannt.

Du könntest die genannten Aspekte auch mal würdigen und sachlich darauf eingehen, anstatt sie einfach mit einem nichtssagenden und ziemlich unhöflichen "Bullshit" und dem Hinweis auf Nebensächlichkeiten abzutun.

Und so lange niemand der hier Anwesenden im Detail mit der Entwicklung befasst ist, wird man auch keine Auskünfte dazu erhalten und kann sich somit auch kein abschließendes Urteil erlauben ob die Anwendung zu "fett" ist oder nicht.
 
daniel_m schrieb:
https://trusted.de/adobe-premiere-pro-cc-vs-sony-vegas-pro-13

Laut dieser Info ist der Größenunterschied zwar gegeben, ist aber nicht so groß wie du uns das hier erzählst.

Junge Junge und wo steht da was von Ressourcenverbrauch? Und was ist trusted.de überhaupt für eine Quelle für sowas? Wollten wir uns einfach mal wichtig tun? Premiere Pro CC ist von 2014.... Ohne Worte.

https://photographylife.com/adobes-software-bloating-performance-issues-and-bugs

In so ein paar Jahren da hat Adobe locker nochmal versechsfacht ;)
 
Zuletzt bearbeitet:
fragemann schrieb:
Als Beispiel sei hier mal Premiere Pro CC vs VEGAS Pro angetan.

fragemann schrieb:
Premiere Pro CC ist von 2014.... Ohne Worte.

Was denn nun? Geht's hier nun um Premiere Pro CC oder nicht?

Wenn ja, warum verlinkst du dann einen Blog-Eintrag, in dem Premiere Pro CC mit keinem einzigen Wort erwähnt wird? Erst in den Kommentaren wird das mal erwähnt. Und warum klärst du dann nicht über Fehler in der genannten Übersicht auf anstatt mit "Junge Junge" und dem Vorwuf man sei ein "Wichtigtuer" beleidigend zu werden?

Wenn nein, warum gehst du dann nicht auf andere Argumente ein die hier zu Genüge genannt wurden und die sich auf Softwareentwicklung allgemein beziehen?

Nochmal: Es geht nicht ausschließlich um technische Möglichkeiten, auch betriebswirtschaftliche Aspekte spielen eine große Rolle und diese haben sehr große Auswirkungen auf Design-Entscheidungen.

Aber ist auch egal, bis jetzt hast du argumentativ nichts zu diesem Thread beigetragen, dann kann er eigentlich auch geschlossen werden. Ich bin jedenfalls raus hier.
 
  • Gefällt mir
Reaktionen: derpaddie und areiland
daniel_m schrieb:
Was denn nun? Geht's hier nun um Premiere Pro CC oder nicht?

Premiere CC ist sowol Gattungsbegriff als auch Versionsbezeichnung ;)
In genannter Übersicht spielen Details ein Rolle, bei der allgemeinen Thematik nicht.

Genannter Autor wollte mir abr nur was reindrücken und hat daher nicht wirklich recherchiert. Genauso wenig wie du

Übrigens hat Adobe ein Faible für Bloatware:
Wer erinnert sich noch an den PDF Reader 6.0? Lange ists her! Kurz danach kam Foxit, was 10x so schnell startet und rasch Marktanteil eroberte. Der Reader 7.0 fixte dann die Probleme großteils. Geht doch!
 
@fragemann deine Art und Weise, Fragen und Antworten zu stellen als auch zu diskutieren ist völlig daneben mMn. @daniel_m hat völlig Recht mit seiner Aussage. Du hast behauptet, dass die Funktionen die Premiere bietet im Gegensatz zu Vegas nahezu identisch sind. Ich habe da ganz große Zweifel. Premiere, Vegas, Photoshop, Cinema4D,3dsmax, ... so wie die anderen 1000 Programme sind alle riesig vom Funktionsumfang. Viele bieten gleiche Funktionen die aber teils völlig unterschiedlich programmiert sind.

Funktion X funktioniert bspw 1% besser als bei der anderen Software büßt dafür aber massix an Performance ein. Hier ist nun die Frage ob der User lieber die 1% mehr Qualität oder lieber die Performance haben möchte. Und das zieht sich durch alle Funktionen durch! Greenscreen, Objekterkennung, was weiß ich was.

Das eine Programm ist in c++ geschrieben. Das nächste in .net. Das eine Programm nutzt Bibliothek X um etwas grafisch darzustellen und benötigt 200MB RAM, das andere Programm Bibliothek Y die deutlich schlanker ist und es werden nur 100MB RAM benötigt.

Alles Themen, die die Poster vor mir schon angesprochen haben aber du nicht hinhörst. Du stellst eine Frage, erklärst aber jedem anderen wie was funktioniert. Und dann bist du auch noch sauer, nur weil jmd. anderer Meinung ist als du. Das ist einfach kein respektables Verhalten...
 
  • Gefällt mir
Reaktionen: E-tech, captmcneil, Ebrithil und 3 andere
Zurück
Oben