Windows 10 è la stessa base di codice (evoluta) della base di codice di Windows 8.x, Windows 7, Windows Vista, Windows XP, Windows 2000 e Windows NT, dove ogni generazione ha visto un refactoring significativo, e ha aggiunto nuove caratteristiche sostanziali, migliorato le prestazioni e il supporto hardware così come la sicurezza, il tutto mantenendo un grado molto alto di compatibilità all'indietro.
La maggior parte del kernel (ntoskrnl.exe) è scritto nel linguaggio di programmazione C. Potete trovare copie trapelate del Kernel di Windows Research anche su Github[1] e vedere voi stessi: anche se abbastanza datato e in gran parte incompleto, questo codice dovrebbe fornire intuizioni significative.
Si veda per esempio il codice sorgente che implementa il familiare Registry, un componente del kernel conosciuto internamente come il gestore della configurazione, "Cm", in wrk-v1.2/base/ntos/config.
Anche la maggior parte di ciò che gira in modalità kernel è scritto in linguaggio di programmazione C (la maggior parte dei file system, il networking, la maggior parte dei driver...) con qualche C++ qua e là.
Come si sale verso la modalità utente, e verso gli sviluppi più recenti, si trova un po' meno C e un po' più C++.
Come nota a margine, ciò di cui la maggior parte delle persone non si rende conto è la dimensione di Windows: questo è un progetto gigantesco di proporzioni veramente epiche.
L'albero dei sorgenti completo con tutto il codice, il codice di test e tutto ciò che insieme costituisce il "codice sorgente di Windows" è più di mezzo terabyte di dimensione, in più di 4 milioni di file. Si può passare un anno (seriamente) solo a perforare l'albero dei sorgenti, più di mezzo milione di cartelle che contengono il codice di ogni componente che costituisce i prodotti OS workstation e server e tutte le loro edizioni, strumenti e kit di sviluppo associati, e vedere cosa c'è lì dentro, leggere i nomi dei file e cercare di capire cosa fa cosa. Ci vorrebbe una vita (o due) per leggerlo tutto.
Di seguito c'è uno screenshot che può o non può rappresentare le statistiche di un arruolamento completo in Windows (codice sorgente, file di test, strumenti di compilazione, tutto)
Una volta, ho lasciato un ramo Git in stallo per qualche settimana e, quando sono tornato, era indietro di quasi 60.000 commit. Penso che si possa sostenere che una sola persona non può leggere tutto il codice che viene aggiunto a Windows ogni giorno, figuriamoci quello che è stato scritto negli ultimi trent'anni!
Tornando al nostro argomento, se si guarda un "DVD" di Windows 10 e si considera quali linguaggi di programmazione sono stati usati per creare tutto ciò che è su quel disco, la mia ipotesi è che il 98% sia C e C++, con il C che fa la parte del leone.
La .NET BCL e le altre librerie gestite e i framework che spediscono inbox sono tipicamente scritti in C#, ma rappresentano solo piccole gocce in un mare gigantesco di codice C con alcune isole di C++. Inoltre provengono da una diversa divisione e il loro codice non fa parte dell'albero dei sorgenti di Windows.
Note
[1] Mighten/WRK-1.2