Lassen Sie uns Ihnen ein reales Beispiel geben.
Vor ungefähr 15 Jahren arbeitete ich an der Portierung eines großen Systems, das in C von Unix auf Windows geschrieben wurde. Das waren ungefähr 3 Millionen Codezeilen. Um Ihnen eine Vorstellung von der Skalierung zu geben, dauerte das Kompilieren auf einigen unserer Unix-Systeme (RS6000) über 24 Stunden. Windows konnte das System in etwa 4 Stunden kompilieren.
(Wir hatten auch 2 Millionen Codezeilen in unserer eigenen interpretierten Sprache, entschieden uns jedoch, unsere Sprache nicht für die Build-Systeme zu verwenden, da sie niemals für die Dateiverarbeitung entwickelt wurde. Außerdem benötigten wir ein Build-System, um den C-Code zu kompilieren, der unsere Sprache implementierte .)
Zu der Zeit, als das Build-System in einer Mischung aus Shell-Skripten und Make-Dateien geschrieben wurde, waren diese nicht auf Windows übertragbar - daher entschieden wir uns, unser eigenes Build-System zu schreiben.
Wir hätten C verwenden können, aber wir haben uns für Python entschieden, es gab nur wenige Gründe. (Gleichzeitig haben wir unser Quellcodeverwaltungssystem in Python umgeschrieben. Dies war eng mit dem Build-System verknüpft, sodass die Entwickler die Objektdateien für die eingecheckten Module gemeinsam nutzen konnten.)
Der größte Teil unseres Codes kann mit ein paar einfachen Regeln erstellt werden (nur ein paar tausend Zeilen Python für alle Plattformen, Windows, VMS und 6 Versionen von Unix), die von den Namenskonventionen der Dateien abgeleitet wurden.
Zu der Zeit, als RegEx zwischen C-Systemen auf verschiedenen Plattformen kein Standard war, hatte Python RegEx eingebaut.
Für einige Module waren benutzerdefinierte Erstellungsschritte erforderlich. In Python konnten Klassendateien dynamisch geladen werden. Wir erlaubten die Verwendung einer benutzerdefinierten Klasse zum Erstellen eines Moduls (lib), basierend auf der Python-Datei mit einem magischen Namen im Ordner. Dies war der Mördergrund für die Verwendung von Python.
Wir haben Java in Betracht gezogen, aber es wurde zu diesem Zeitpunkt noch nicht auf allen Plattformen ausgeliefert.
(Die Benutzeroberfläche für unser Quellcodeverwaltungssystem verwendete einen Webbrowser, der plattformübergreifend portabel war. Dies war 6 Monate, bevor wir eine Internetverbindung hatten. Wir mussten den Browser über X25 herunterladen!)