La risposta breve è sì, almeno una specie di.
La risposta più lunga è che l'ultimo sistema operativo MS un numero significativo di programmatori compresi molto bene era MS-DOS 6.x. Windows 3.x era abbastanza comprensibile a patto che lo si guardasse come un numero di pezzi (MS-DOS, extender DOS, kernel di Windows, interfaccia utente di Windows) ma la maggior parte delle persone non si preoccupava affatto. / p>
Nel bene o nel male, tuttavia, tutte le implementazioni di Win32 sono state un po 'contorte. Sebbene abbiano cercato di renderlo meno visibile, Windows 95 aveva ancora una copia di MS-DOS, un extender DOS e un'implementazione piuttosto frammentaria di Windows, divisa tra una versione pesantemente modificata del kernel a 16 bit da Windows 3.x e una nuova interfaccia a 32 bit e anche alcuni pezzi di codice a 32 bit abbastanza significativi.
Windows NT era un po 'più semplice, ma in origine era stato scritto come qualcosa di simile a un microkernel con tre sottosistemi (Win32, POSIX, OS / 2). Il sottosistema Win32 ha sempre goduto di uno stato speciale, quindi ha le sue regole (o ha infranto molte regole, a seconda del punto di vista). In ogni caso, pochissime persone hanno veramente capito bene il sistema ad un livello veramente fondamentale - e la maggior parte dei programmatori di applicazioni aveva (al massimo) solo una consapevolezza periferica, vaga di essere una "API nativa" che alcuni dei veri maghi ( e qui stiamo parlando di persone come David Solomon e Bryce Cogswell, non Charles Petzold) che facevano cose che sembravano (e spesso erano) impossibili usando solo Win32.
.NET ha aggiunto un altro livello - e piuttosto uno "non uniforme" a questo. Ciò non vuol dire che l'interfaccia visibile all'utente fosse irregolare, ma che il suo lato "inferiore" in cui si interfacciava al sistema era piuttosto irregolare: alcune parti parlavano con Win32, altre parti con DirectX, altre ancora con varie interfacce COM, ecc. In breve, un lotto di persone ha capito come usare . NET (almeno ragionevolmente bene) ma probabilmente meno di uno su mille ha veramente capito tutti i suoi interni molto bene .
Direi, tuttavia, che è esattamente come dovrebbe essere. Uno dei punti fondamentali per creare astrazioni è quello di evitare che tutti devono imparare tutti i brutti dettagli interni di come tutto funzioni davvero. Il problema, almeno secondo me, è raramente l' esistenza di uno strato dopo l'altro tra il suo codice e il modo in cui le cose funzionano davvero. Piuttosto, il problema è principalmente con le astrazioni povere che non fanno quasi abbastanza da impedire a un programmatore di che ha bisogno di conoscere i dettagli sottostanti per essere in grado di portare a termine il lavoro .
MFC sarebbe un classico esempio: per usarlo del tutto bene, hai praticamente bisogno di sapere già come scrivere programmi Win32 senza di esso. In un certo senso, ha reso ancora più difficile la comprensione aggiungendo un buon numero di rughe proprio su Win32 stesso. Se sapessi abbastanza della stessa MFC e sulle sue basi in Win32, potrebbe davvero risparmiare un bel po 'di lavoro - ma ha richiesto un sacco di studi extra per comprenderlo abbastanza bene da ottenere molti benefici . È quasi universalmente insultato, perché la maggior parte delle persone non ha mai capito abbastanza per trarne molti (se ne ha).
A questo punto è un po 'difficile capire esattamente dove WinRT atterrerà nel grande schema delle cose. Penso che sia sicuro dire che Microsoft ha maturato molta esperienza nella definizione e presentazione di astrazioni che sembrano abbastanza semplici, e funzionano in modo abbastanza coerente, che è abbastanza facile usarle senza veramente sembrare come se fosse molto più profondo di quello che realmente è, perché l'aspetto esteriore di come funzionano è abbastanza coerente con un modello mentale abbastanza semplice (almeno nella maggior parte dei casi).
Sospetto che WinRT sarà più o meno lo stesso - se insisti a cercare di capire tutti i dettagli di come tutto funzioni davvero, probabilmente non otterrai mai molto di niente. Microsoft ha abbastanza programmatori che lavorano su di esso, che possono creare (e nascondere) la complessità interna molto più velocemente di quanto quasi ogni persona possa sperare di comprenderla. Allo stesso tempo, se sei abituato a lavorare con .NET, non cambierà molto - funzionerà abbastanza costantemente con un modello abbastanza semplice che sarai in grado di trattare quel modello come se fosse davvero come le cose ha funzionato (anche se di solito varia da parzialmente a quasi completamente errato, e ci sarà molto più successo dietro le quinte di quanto la maggior parte dei programmatori realizzino o vogliano pensare).