Che cosa significa la complessità del codice in questo contesto? Stiamo parlando in termini di codice macchina o codice sorgente C ++ che gli umani devono mantenere? Direi "non necessariamente" anche se il primo, ma soprattutto "no" per quest'ultimo.
In una società del passato a cui ho lavorato, abbiamo spedito oltre 90 megabyte solo in termini di binari, e questo era un build di rilascio ottimizzato privo di informazioni di debug e così via. Ed era un codebase piuttosto complesso, milioni di LOC, ma sarebbe molto fuorviante dedurre la complessità del codice da quella dimensione binaria ...
... perché un weekend mi sono preso gioco del sistema di build e ho ottenuto il risultato in meno di 10 megabyte senza modificare alcun codice o modificare le impostazioni di ottimizzazione. Tutto ciò che ho fatto è stato collegare dinamicamente il CRT (C runtime lib) e un paio di altre grandi librerie nella nostra sezione di terze parti. Presto; questo ha eliminato ogni tipo di codice collegato staticamente a tutti i nostri binari (che si estendevano a centinaia con tutti i plugin che avevamo). Non ho controllato i cambiamenti da quando stavo scherzando (e non ero sicuro circa l'impatto di dipendere da dylibs in quel caso e C ++ può diventare faticoso lavorare oltre i limiti del modulo se il codice non è stato scritto in anticipo per occuparsi di per evitare di fare cose come buttare oltre i confini), ma almeno mi ha soddisfatto la mia curiosità che i binari almeno non dovessero essere teoricamente così massicci.
Quando vedo altri prodotti con binari massivi, tendo a chiedermi se potrebbero trarre beneficio dalla stessa cosa. D'altra parte, potrebbe non valere la pena prendersi cura di questa roba così tanto al di fuori dei dispositivi embedded con i nostri dischi fissi epici e la larghezza di banda che è abbondante. Comunque mi piace ancora l'estetica dei piccoli binari e cose che installano e scaricano molto velocemente e così via. È uno dei luoghi in cui sono ancora poco pratico e preferirei perdere tempo a rendere i binari più piccoli, partendo da giorni in cui un disco rigido da 10 MB era considerato eccezionale, ma ancora una volta non considero la dimensione binaria come un riflesso del complessità di un codebase poiché molti binari probabilmente stanno collegando staticamente il codice ridondante più e più volte.
La mia memoria è un po 'confusa, ma mi ricordo un po' di tempo fa circa 25 anni fa quando potevi prendere un programma C ++ "Hello World" e collegare staticamente tutto e finire con un file binario di poche centinaia di KB, e ho ricevuto molte critiche dai programmatori C. I miei ricordi potrebbero esagerare un po '(forse non era quello enorme), ma mi ricordo un po' quando alcuni compilatori C ++, ora sbiaditi nell'oscurità, tenderebbero a generare binari massivi per il più programmi banali anche senza informazioni di debug o qualcosa del genere. Questo è successo prima che gli stream I / O fossero standardizzati in C ++, penso (scusa, la mia memoria è così confusa).