Lionel DebrouxLe 17/09/2006 à 16:08
D'accord avec #76...
Même sans parler Unix, Windows est loin de POSIX - une norme de portabilité plus ou moins minimale - contrairement à la quasi-totalité des autres OS, y compris des OS non Unix (le VMS des VAX est à ma connaissance POSIX; etc.). Il s'en faut de beaucoup.
Il existe un adage depuis longtemps, formulé à peu près comme suit: "Ceux qui ne font pas de l'Unix sont condamnés à le réinventer, en moins bien". Sauf exception (par exemple VMS, avec une sécurité supérieure, un système de permissions puissant et quelques autres features intéressantes), ça reste vrai depuis 35 ans.
La supériorité technique des Unix sur les Windows n'a aucune contestation _sérieuse_ possible, tant en termes de compatibilité qu'en termes de performance, de portabilité, et tout simplement de fonctionnalités.
Pour la portabilité: Windows est limité à IA32/IA64/x86-64; Linux supporte environ 25 architectures allant du très petit au très gros, et ça ne compte pas les architectures sans MMU supportées par µcLinux, et probablement quelques autres architectures qui ne sont supportées que par un des Unix.
Pour les fonctionnalités, trois exemples:
* impossible d'implémenter un mmap 100% compatible avec celui des Unix, car les API Win32 ne le supportent pas. Je suis tombé sur ce problème de portabilité pendant l'été 2005, même si j'utilisais encore Windows la quasi-totalité du temps. Même si je sais le faire, faire à la main un vecteur de chaînes de caractères en C pur, et un certain nombre de structures de données qui vont avec, alors que ce n'est absolument pas nécessaire avec un très simple mmap, n'était pas une option. Enfin bon, j'ai par la suite refait le programme en Perl, qui n'a pas (du point de vue de l'utilisateur...) ces problèmes;
* certaines API réseau pas forcément très avancées (sockets bruts), sont impossibles sous Windows XP SP2.
* Linux est un kernel monolithique (je ne dis pas que c'est mal, car je ne pense pas que ce soit si mal que ça, pour des raisons de performance...), mais Windows a carrément un kernel "montagne". Dans Vista, à moins qu'ils aient encore changé d'avis, ils ont enlevé la partie graphique du kernel. Il faut dire que personne d'autre ne fait comme ça, et que générait des exploits surpuissants (exécution de code arbitraire avec les privilèges kernel...) à chaque fois qu'il y avait une faille de sécurité dedans (par exemple, les metafiles).
Même Microsoft a arrêté (au moins à l'époque de leur campagne anti-ouvert "Get The Facts") d'essayer de faire croire le contraire. Voir le commentaire d'Eric S. Raymonds sur le sujet.
Ca reprend un peu avec Vista... mais bon, Vista réussit à faire encore beaucoup plus lourd que ses prédécesseurs (même sans utiliser Aero...), sans même apporter la sécurité (voir les histoires de failles et de rootkits sous Vista...). De l'autre côté, il y a XGL et AIGLX: désolé Microsoft, mais c'est grossièrement faux que le logiciel libre est moche et mal fini...