• [^] # Re: Remettez moi une couche, svp !

    Posté par . En réponse à la dépêche Linux a gagné une bataille contre Microsoft. Évalué à 6.

    En fait ce n'est pas vraiment nouveau: Lorsque Ballmer a pris ses fonctions de CEO, la première chose qu'il a déclaré est bien "Nous avons une liste de choses à combattre pour cette année, et Linux est en tête".

    Bon les termes sont peut-être légèrement différents mais l'idée reste la même.

    Non, moi ce qui m'agace, c'est l'hypocrisie latente de la compagnie. La raison d'être de tous les logiciels de Microsoft (et de tout éditeur commercial en général) est quand même d'être vendu, par opposition au mouvement Linux dont le code est produit par des bénévoles, et dont la seule motivation est la production d'un code de qualité (quoi d'autre ?). En outre, le développement du noyau Linux et des logiciels GNU n'est pas soumis aux deadlines pour pouvoir être distribués de façon rentable. Je ne vois vraiment pas comment on peut affirmer que MS produit du code de même qualité que celui de GNU dans de telles conditions.

    Donc:

    1) Même si la quasi-totalité des programmeurs de Microsoft était convaincue qu'Unix est de bien meilleure conception que le noyau Windows, ils chanteraient quand même en coeur que le système est le meilleur car c'est leur gagne-pain.

    Ce qui est scandaleux, c'est que les gens reprennent ces propos comme paroles divines et les croient. Il y a encore du monde qui pense que Microsoft est à l'origine de toutes les innovations en informatiques (ce qui est déjà énorme) et que la société agit par altruisme ou pour faire avancer la recherche comme au PARC ou MIT.

    Alors chaque fois c'est le même troll: Il ne faut surtout pas dire qu'un OS est meilleur qu'un autre. Win2K DOIT valoir autant que Linux parce que c'est politiquement incorrect de penser le contraire. Et surtout, on nous avait déjà servi la même sauce lors de la sortie de Win95.

    2) Microsoft est AVANT TOUT une histoire de business. Si jamais il s'avérait un jour que fabriquer des bougies de voiture est 120 fois plus rentable qu'éditer des logiciels, croyez-vous vraiment que la compagnie continuera à imposer ses logiciels et persévèrera dans sa branche par simple vocation ? A ce moment-là, GNU/linux existera toujours (et sera peut-être le seul d'ailleurs).

    3) Dans le même esprit, "un logiciel porté sous Linux est un logiciel perdu" selon la politique actuelle de Microsoft. Mais si le mouvement persiste, que des fabricants commencent réellement à proposer au grand public des PC préinstallés sous Linux (ce qui est quand même censé être normal, pour tout système d'exploitation), que le précédent est fait, et que le reste du marché s'engouffre dans la brèche (au début parce qu'ils gagnent sur le prix des licences, ensuite parce que celle de GNU est nettement moins restrictive que celles des produits MS et ce n'est pas peu dire), croyez-vous là encore que la société qui nous fait la guerre actuellement continuerait de bouder le système et se bornerait à produire des logiciels ne tournant que sous le parc de Windows restants ?

    4) Chaque "nouveauté" des systèmes Windows s'avère en fait être reprise d'un système ou d'une interface déjà existants: MacOS principalement, mais aussi CDE, ou tout autre système qui a un minimum de succès. Dans le jargon vélivole, on appelle çà un suceur: On laisse la concurrence travailler, et on cueuille les fruits. Pas étonant ensuite qu'ils cherchent à les verrouiller pas des brevets logiciels. Et là encore, il y a des gens pour t'expliquer par A + B que les brevets logiciels sont une chance pour l'innovation technologique en Europe.

    5) On nous bourre le mou avec la programmation de très haut niveau, les langages fortement orientés objets etc. Et qu'aujourd'hui, c'est çà qu'il faut utiliser pour être véritablement efficace sous Windows. Bien ! Parfait ! Je n'ai rien contre les langages de haut niveau en eux-mêmes, ils apportent un confort et une rapidité de développement souvent très utiles. Mais on oublie trop souvent que qui dit langage de haut niveau dit couches successives et une consomation en ressources pour faire la traduction entre chacune d'elles. Ces ressources sont consommées en pure perte car elles ne servent ni le programmeur (qui par définition ne travaille plus sur un logiciel "releasé") ni à l'utilisateur qui ne se soucie que du résultat. Notons qu'on a pas toujours mieux loti sous Linux, notament avec KDE2 ou Gnome qui sont TRES gourmands. Mais au moins, on a toute latitude pour retirer des couches sans compromettre l'intégrité du système.

    Or, parmi ceux que l'optimisation et la qualité du code intéressent encore, quelqu'un a-t-il déjà essayé la C.API de Windows ? Parmi les morceaux choisis:

    - Fonctionnement du GDI: Il faut allouer un Device Context lorsque l'on souhaite utiliser les fonctions graphiques dans une fenêtre. Par la suite, on peut allouer un stylo, une brosse, une couleur, un style de tracé etc. à la manière des GC de X: Ces GC sont limités à 5 sous Win95 ! Il faut donc obligatoirement restituer cette ressource après chaque opération graphique, faute de quoi, si l'on dépasse le nombre de DC maxi, la fenêtre dans laquelle se fera le tracé est indéfinie: J'ai eu des résultats dans la fenêtre racine, ou dans des infos-bulles.

    - Le système de fenêtrage utilise, comme toutes les interfaces graphiques, un système d'évenement comme celui de X, sauf que tous les évenement du SYSTEME passent par ce biais. Cela veut dire que les couches de base de Windows ont besoin des couches de plus HAUT niveau pour fonctionner ! Imaginez un peu qu'un noyau Unix, par conception, ne puisse fonctionner si X ne tourne pas !

    - Il faut écrire la boucle des messages soi-même. Ce n'est pas tellement différent d'un XNextEvent, à ceci près tout de même qu'il faut MANUELLEMENT rappeller la DefWindowProc avec les arguments récupérés plus haut pour rendre la main au système. L'architecture des programmes Windows de ce 21ème siècle est encore coopérative.

    - Lorsque l'on crée une fenêtre d'une certaine dimension, les bordures, la barre de titres, et les boutons standard sont dessinés A L'INTERIEUR de la fenêtre ! Ce qui signifie que la zone cliente restante (pourtant référence pour toutes les opérations graphiques) a une taille indéfinie, dépendante du thème, de la version de Windows, et du type de fenêtre créée ! Il faut utiliser GetClientRect() pour la retrouver.

    - Si par hasard le programme part en boucle ou reste bloqué un moment dans une procédure un peu trop longue, ce n'est pas simplement le contenu de la zone cliente qui est figé, mais aussi toutes les commandes systèmes relative à la fenêtre puisque l'application est chargée de rendre manuellement la main au système. Conséquence directe: Impossible de REDUIRE ou de DEPLACER une fenêtre dont l'application est occupée. Essayez, c'est toujours le cas avec Win2K. Et sous Windows, les bureaux multiples n'existent pas (pas en standard en tout cas). Et certaines personnes (dont un des mes professeurs) pensent qu'il s'agit là d'une caractéristique des interfaces graphiques et que le problème est incontournable.

    Mais, MAAAAIIIS, comme c'est un système écrit par une firme internationale américaine aux moyens importants et aux chiffre d'affaire conséquent, c'est forcément un système professionnel.

    6) Toujours pour des raisons commerciales, si un bug existe dans une application ou dans le système, il ne sera corrigé que si cela est financièrement rentable. On pouvait trouver confirmation de ce fait sur le site de Microsoft.

    7) Même si Win2K ou XP devenaient tout à coup stables et bien construits, il n'est pas normal que cela n'arrive qu'en 2002 ! Je ne comprends pas les arguments des gens qui nous disent "Regardez, cela fait 15 ans qu'on est en train de patcher notre système, et cette fois çà tient, alors ? on vous l'avait dit", alors que les systèmes Unix sont fiables et éprouvés depuis plus de 30 ans ! Il n'y avait aucune raison valable d'utiliser Windows AVANT si c'est AUJOURD'HUI que les systèmes sont stables. Et comme on nous avait déjà bassiné avec cet argument en 1995, il n'y a vraiment pas de raison que ce soit différent aujourd'hui.

    Alors non. Désolé, Windows n'est pas un bon système. Il n'est pas aussi stable qu'MS voudrait le croire et le faire croire, mais surtout, il est très loin d'être aussi bien conçu dans son architecture que le dernier des Unix.

    Lorsqu'une maison s'effondre, on vérifie ses fondations et ses poutres, on ne se contente pas de rajouter du plâtre à chaque fois qu'une fissure apparaît en promettant chaque fois à son locataire: "Cette fois, c'était la dernière".

    Désolé, je ne suis pas un caneton: Marre des gens qui affirment haut et fort que Windows est génial, simplement parce que c'est la première chose qu'ils ont vu en pressant le bouton "Marche" de leur machine flambant neuve.

    Amitiés à tous.