J'admire .NET et C# qui sont pour moi l'étape logique après Java. Excepté deux ou trois conneries, C# est à mon avis strictement mieux que Java, ditto pour le framework. La techno est merveilleuse et les promesses pour la version 3 sont impressionnantes.
Je connais assez peu .NET mais je me pose régulièrement une question : pourquoi est-on obligé de passer par une machine virtuelle ? En effet, les avantages de .NET sont à ma connaissance :
- l'indépendance de la plate-forme (principal avantage de la VM, mais à mon avis ce n'était pas le but recherché par Microsoft)
- une API vaste et unifiée (mais pas besoin de créer une nouvelle plate-forme avec VM pour ça, c'est juste une histoire de mettre les moyens pour coder un bon framework et le rendre accessible depuis plein de langages)
- multi-langage (je vais peut-être dire une connerie mais il faut vraiment une VM pour ça ? y'aurait pas moyen de faire autrement, comme par exemple définir une ABI à laquelle tout le monde se conformerait ?)
- langages de haut niveau comme c#/delphi.NET/<votre_langage_favori> avec garbage collector, programmation fonctionnelle & co... (il existe déjà des langages compilés qui font tout ça, cf OCaml. Au pire il suffirait de coder un frontend c# pour gcc => pas besoin de VM non plus !)
Le principal avantage que je vois est d'avoir une machine virtuelle commune et bien optimisée pour les langages comme Perl/Python/Ruby (même si c'est aussi le but de Parrot, qui est apparemment spécialisée dans ce type de langages faiblement typés). A part ça, j'ai l'impression que le "manque" que .NET vient combler l'est / le serait tout aussi bien avec la mise au point d'une API bien foutue (style QT) + l'intégration de langages de haut niveau dans gcc (comme le D ou OCaml) + ABI facilitant l'interopérabilité du code objet entre différents langages.
Donc en gros, pourquoi l'avenir de l'informatique passerait t-il forcément par un dispositif avec une machine virtuelle ? (c'est quand même plus gros/lourd/lent que d'avoir un code qui s'execute directement non ?). Surtout que
- les logiciels libres n'ont besoin que d'une API portable (possibilité de recompiler pour chaque architecture)
- Microsoft ne recherche à mon avis pas vraiment à favoriser la portabilité (je ne vois pas quel est leur intérêt de promouvoir une telle architecture)
- les autres éditeurs de logiciels (propriétaires) peuvent être intéressés par l'aspect multi plates-formes, mais là encore une simple API portable (comme QT) résoud la majeure partie du problème (il suffit de compiler pour chaque architecture, mais ça reste la même base de code)
[^] # Re: C# et le libre...
Posté par karteum59 (site web personnel) . En réponse à la dépêche talweg, une migration vers Mono. Évalué à 4.
Je connais assez peu .NET mais je me pose régulièrement une question : pourquoi est-on obligé de passer par une machine virtuelle ? En effet, les avantages de .NET sont à ma connaissance :
- l'indépendance de la plate-forme (principal avantage de la VM, mais à mon avis ce n'était pas le but recherché par Microsoft)
- une API vaste et unifiée (mais pas besoin de créer une nouvelle plate-forme avec VM pour ça, c'est juste une histoire de mettre les moyens pour coder un bon framework et le rendre accessible depuis plein de langages)
- multi-langage (je vais peut-être dire une connerie mais il faut vraiment une VM pour ça ? y'aurait pas moyen de faire autrement, comme par exemple définir une ABI à laquelle tout le monde se conformerait ?)
- langages de haut niveau comme c#/delphi.NET/<votre_langage_favori> avec garbage collector, programmation fonctionnelle & co... (il existe déjà des langages compilés qui font tout ça, cf OCaml. Au pire il suffirait de coder un frontend c# pour gcc => pas besoin de VM non plus !)
Le principal avantage que je vois est d'avoir une machine virtuelle commune et bien optimisée pour les langages comme Perl/Python/Ruby (même si c'est aussi le but de Parrot, qui est apparemment spécialisée dans ce type de langages faiblement typés). A part ça, j'ai l'impression que le "manque" que .NET vient combler l'est / le serait tout aussi bien avec la mise au point d'une API bien foutue (style QT) + l'intégration de langages de haut niveau dans gcc (comme le D ou OCaml) + ABI facilitant l'interopérabilité du code objet entre différents langages.
Donc en gros, pourquoi l'avenir de l'informatique passerait t-il forcément par un dispositif avec une machine virtuelle ? (c'est quand même plus gros/lourd/lent que d'avoir un code qui s'execute directement non ?). Surtout que
- les logiciels libres n'ont besoin que d'une API portable (possibilité de recompiler pour chaque architecture)
- Microsoft ne recherche à mon avis pas vraiment à favoriser la portabilité (je ne vois pas quel est leur intérêt de promouvoir une telle architecture)
- les autres éditeurs de logiciels (propriétaires) peuvent être intéressés par l'aspect multi plates-formes, mais là encore une simple API portable (comme QT) résoud la majeure partie du problème (il suffit de compiler pour chaque architecture, mais ça reste la même base de code)