Diamo un esempio realistico.
Circa 15 anni fa ho lavorato al porting di un grande sistema scritto in C da Unix a Windows, si trattava di circa 3 milioni di righe di codice. Per darti un'idea della scala, ci sono voluti più di 24 ore per compilare alcuni dei nostri sistemi unix (RS6000), Windows poteva compilare il sistema in circa 4 ore.
(Avevamo anche 2 milioni di righe di codice nel nostro linguaggio interpretato, ma abbiamo deciso di non usare il nostro linguaggio per i sistemi di compilazione in quanto non era mai stato progettato per l'elaborazione dei file. Inoltre avevamo bisogno di un sistema di compilazione per compilare il codice C che implementato la nostra lingua.)
Nel momento in cui il sistema di compilazione è stato scritto in un mix di script di shell e crea file, questi non erano portabili a Windows - quindi abbiamo deciso di scrivere il nostro sistema di compilazione.
Avremmo potuto usare C, tuttavia abbiamo deciso di usare python, c'erano pochi motivi. (Abbiamo anche riscritto il nostro sistema di controllo del codice sorgente in Python allo stesso tempo, questo è stato molto intergradato con il sistema di compilazione, quindi i file oggetto per i moduli archiviati potrebbero essere condivisi dagli sviluppatori.)
-
La maggior parte del nostro codice potrebbe essere costruita con poche semplici regole (solo poche migliaia di righe di python per tutte le piattaforme, Windows, VMS e 6 versioni di Unix) che sono state ricavate dalle convenzioni di denominazione dei file .
-
Al momento RegEx non era molto standard tra i sistemi C su piattaforme diverse, Python aveva costruito in RegEx.
-
Alcuni moduli richiedevano passaggi di compilazione personalizzati, i file di classe consentiti da Python venivano caricati dinamicamente. Abbiamo permesso a una classe personalizzata di essere usata per costruire un modulo (lib), basato sul fatto che il file python avesse un nome magico nella cartella. Questo era il motivo killer per usare python.
-
Abbiamo preso in considerazione Java, ma a quel punto non era disponibile su tutte le piattaforme.
(L'interfaccia utente per il nostro sistema di controllo del codice sorgente utilizzava un browser web che era portatile su tutta la piattaforma, 6 mesi prima che avessimo una connessione Internet. Dovevamo scaricare il browser su X25!)