• [^] # Re: Techniquement, pourquoi Mono

    Posté par (site web personnel) . En réponse au journal Utiliser Mono sans peur. Évalué à 2.

    Je saurais dire pourquoi Perl sur le C, langage interprété, orienté script administration et traitement de chaîne. Je saurais dire pourquoi python, syntaxe plus explicite, se voulant plus clair, J'ai toujours considéré perl comme la boite à outil du programme d'admin vite fait bien fait qui répond au besoin du moment, mais je n'envisagerais jamais un gros développement en Perl, là où python fait plus propre (ici encore c'est une affaire subjective qui résulte de préférences personnelles). Je saurais aussi dire pourquoi je fais du C de temps en temps, principalement le contrôle que cela m'apporte sur mon code, les performances aussi, lorsque c'est vraiment nécessaire (ce qui arrive bien moins souvent que ce que la plupart des gens pensent)

    Mais vraiment, qu'apporte Mono, c'est une vrai question ?

    Personnellement, pour avoir fait du C# lors d'un projet il y a 3 ans, j'y ai vu un langage avec une syntaxe que je n'apprécie pas, plutôt complexe. Des fois la complexité apporte de la fonctionnalité, ici je n'ai vu aucune fonctionnalité dans le langage que je puisse qualifier de "killer feature" et qui justifie la complexité de la syntaxe.

    Après, certaines personne défendent les performances de mono qui surpassent celle de python par exemple. C'est vrai. Je m'en cogne. Pourquoi ?

    <attention>Dans la suite du texte, 99.9% représente une valeur fortement élevée et proche de 100%</attention>

    Dans 99.9% des cas, les besoins en performances sont une vaste blague, F-spot a besoin de performance ? Banshee aussi ? Tomboy ? Presque tous le temps de calcul est passé dans GTK, gstreamer ou X. Ici le langage fait plutôt office de colle glu entre ces différents composants et la seule performance ayant de l'importance tient dans le temps de chargement de la VM. Ici 16ms pour python, 100ms pour le chargement d'une petite application GTK, qui va sûrement rester affichée plusieurs minutes. Mono démarre plus vite, franchement, c'est une bonne nouvelle, cela change quoi ?

    Lorsque l'on a besoin de performance dans une application, soit toute l'application se doit d'être performante (et la on écrira le code en C car de toute manière Mono est trop lent), soit il s'agit (comme dans 99.9% des cas) d'un petit bout de l'application, qu'il est facile de réécrire en C pour que toute l'application en profite (pareil, si cette partie avait été écrite en Mono, il aurait fallu la réécrire)

    Le pire c'est que bien souvent le problème de performance vient d'un algorithme mal pensé ou d'une mauvaise libraire, ou d'entrées sorties. Et cela, j'ai du mal à croire que Mono s'en sorte mieux sur les entrée sortie qu'un autre langage, puisque de la même manière, tous le temps est passé dans le même traitement au sein du kernel et du hardware.

    Maintenant vient l'argument de la probabilité et de l'interoperabilité que Mono apporte avec les technologie .Net. Je n'y crois presque pas. A partir du moment ou il y a deux implementations différentes, la portabilité ne peut pas être aisée. Il y a qu'à voir Java sur téléphones portables, C sur les différents compilateurs ou aussi les différentes implementations de python (Cpython, Jpython, IronPython, Stackless, Pypy...). A mon sens Mono est un environnement de développement portable, mais il n'assure pas la portabilité des applis écrites pour .Net sur d'autres plates-formes. (c'est du vécu, application très simple écrite pour Mono qui m'a demandé des heures de boulot pour faire tourner dans Visual Studio)

    Peut être que je me plante complètement, mais si c'est le cas, 1) dites le moi (en argumentant) et 2) donnez moi des avantages à utiliser Mono. Sérieusement, j'en veux !

    On en revient donc à la question ultime, sachant le danger "potentiel" autour de Mono (existe il vraiment ?), sachant que le fait de pousser Mono pousse les technologies Microsoft (est ce que c'est grave ?) et sachant que Mono est techniquement (jusqu'à preuve du contraire) équivalent à d'autre technologies déjà existantes, quel est l'intérêt pour moi, développeur, d'utiliser Mono. Quel est l'intérêt pour moi, ingénieur, "chef de projet", de pousser mono dans mon équipe ? Quel est l'intérêt pour moi, de faire de la pub pour Mono au réunions ? Quel est l'intérêt pour moi, qui contribue au logiciel libre, à gnome, d'utiliser Mono. Et quel est l'intérêt pour le monde (et principalement celui du logiciel libre) ?