Da tutto quello che ho visto, è una combinazione di ragioni pratiche e storiche. Il motivo (principalmente) storico è che CPython 1.0 è stato rilasciato nel 1989. A quel tempo, C era appena 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 che è compatibile con C ++. Di per sé, quel lavoro fornirebbe poco o nessun beneficio reale.
È un po 'come il post sul blog di Joel su come ricominciare e fare una riscrittura completa come l'errore peggiore che un'azienda di software possa 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 uccise la compagnia, ma entrambi furono sicuramente progetti grandi, costosi, a lungo termine. Entrambi indicano anche qualcosa che è cruciale per il successo: mantenere entrambe le basi di codice per un tempo sufficiente affinché (la maggior parte) gli utenti possano passare alla nuova base di codice a loro piacimento, sulla base di vantaggi (almeno percepiti).
Per un team di sviluppo delle dimensioni di Python, tuttavia, questo tipo di cambiamento è molto più difficile. Anche il passaggio da Python 2 a 3 ha richiesto parecchio lavoro e ha richiesto una sovrapposizione simile. Almeno in quel caso, tuttavia, ci sono vantaggi diretti per le modifiche, che la riscrittura in C ++ (da sola) non fornirebbe (almeno immediatamente).
L'eruzione di Linus Torvalds contro il C ++ è stata sollevata, quindi citerò anche questo. Nulla di ciò che ho visto da Guido indica che abbia quel tipo di sentimenti forti e negativi verso il C ++. Il peggio che l'ho visto dire è che insegnare il C ++ è spesso un disastro - ma ha continuato subito dicendo che questo è in gran parte dovuto al fatto che gli insegnanti non conoscevano / non conoscevano il C ++.
Penso anche che mentre è possibile convertire un sacco di codice C in C ++ con relativa facilità, che ottenere un grande vantaggio dal C ++ richiede non solo un po 'più di riscrittura di quello, ma richiede anche una rieducazione sostanziale della maggior parte degli sviluppatori coinvolti. La maggior parte del C ++ ben scritto è sostanzialmente diverso dal C ben scritto per fare le stesse cose. E ' non è solo una questione di cambiare malloc
per new
e printf
da cout
, con uno sforzo di immaginazione.