Da tutto ciò che ho visto, è una combinazione di motivi pratici e storici. La ragione (principalmente) storica è che CPython 1.0 è stato rilasciato nel 1989. A quel tempo, C era stato recentemente standardizzato. Il C ++ era quasi sconosciuto e decisamente non portatile, perché quasi nessuno aveva un compilatore C ++.
Sebbene C ++ sia molto più diffuso e facilmente disponibile oggi, ci vorrebbe comunque una discreta quantità di lavoro per riscrivere CPython nel sottoinsieme di C compatibile con C ++. Di per sé, quel lavoro fornirebbe poco o nessun vantaggio reale.
È un po 'come il post del blog di Joel su come ricominciare e fare una riscrittura completa è il peggiore errore di un software l'azienda può fare. Lo contrasterei indicando la conversione di Microsoft dal core di Windows 3.0 al core di Windows NT e la conversione di Apple da MacOS 9 a Mac OS / X. Nessuno dei due ha ucciso la compagnia, ma entrambi erano decisamente grandi, costosi, a lungo termine. Entrambi puntano anche a qualcosa che è cruciale per il successo: mantenere le basi di codice entrambe per un tempo sufficientemente lungo che (la maggior parte) gli utenti possono passare alla nuova base di codice a loro piacimento, basandosi su benefici (almeno percepiti). / p>
Per un team di sviluppo delle dimensioni di Python, tuttavia, quel tipo di cambiamento è molto più difficile. Anche il passaggio da Python 2 a 3 ha richiesto un po 'di lavoro e ha richiesto una sovrapposizione simile. Almeno in questo caso, tuttavia, vi sono benefici diretti per le modifiche, che la riscrittura in C ++ (da sola) non fornirebbe (almeno immediatamente).
Il lamento di Linus Torvalds contro il C ++ è stato accennato, quindi ne parlerò anche io. Nulla di ciò che ho visto da Guido indica che ha quel tipo di sentimenti forti e negativi verso il C ++. Per quanto riguarda il peggio, l'ho visto dire che insegnare C ++ è spesso un disastro - ma ha subito detto che questo è in gran parte dovuto al fatto che gli insegnanti non conoscono / non conoscono il C ++.
Penso anche che mentre è possibile convertire un sacco di codice C in C ++ con un relativo facile, che ottenere un reale vantaggio dal C ++ richiede non solo un po 'più di riscrittura, ma anche richiede una sostanziale rieducazione della maggior parte degli sviluppatori coinvolti. Il C ++ più ben scritto è sostanzialmente diverso da C ben scritto per fare le stesse cose. È non solo questione di cambiare malloc
in new
e printf
in cout
, con qualsiasi sforzo dell'immaginazione.