Je reste encore sur le C# mais sans enthousiasme : c'est la moins pire des solutions.
Pourquoi :
Je suis avant tout intéressé par le desktop mais je déteste le C++. Quant à Java, ses API pour l'UI ne donnaient vraiment pas envie, même si ça semble s'être amélioré. Et question innovation Java se traîne (traînait ?).
Avantages :
- Un langage solide dans l'ensemble, moderne, puissant, avec de bons choix de fonctionnalités.
- Un framework riche et cohérent, avec des API modernes comme WPF.
- Le meilleur langage pour le dév windows.
- Le meilleur IDE du marché.
Inconvénients :
- Un système de types à la ramasse depuis des années (génériques peu puissants par manque de contraintes, impossible de composer deux types, etc).
- Un système d'introspection (reflexion) handicapant (lourd) et en voie de disparition (partiellement interdit sous le store et sur les futures plateformes), sans rien pour le remplacer. Donc zéro métaprogrammation à part de la génération de sources crade et du tissage qui rame via des outils tierce-parties.
- Des performances qui n'ont pas ou peu été améliorées depuis des années.
- WPF qui n'a pas été amélioré depuis des années, le site de référence des sources toujours à la ramasse (pas pratique et trop souvent down).
- Un IDE qui devient de pire en pire, avec de plus en plus de bogues et de problèmes d'interprétation des erreurs de syntaxe.
- Innovations peu nombreuses et insatisfaisantes depuis les lambdas et linq.
- Un destin incertain avec la plateforme Windows menacée de toutes parts.
Oui, je sais, MS a promis plein de choses. Mais chat échaudé craint l'eau froide. Autrement dit je ne crois plus leurs promesses.
Ce pour quoi je pourrais l'abandonner :
- Une bonne alternative à javascript pour les clients web (quelque chose avec des biblios adaptées au web, de bonnes performances et du typage statique, lorsque pNaCl ou asm.js seront standardisés et répandus et que l'on aura des API pour la concurrence & co). Non, pas typescript.
- Un bon langage bas-niveau C-compatible mais moderne (modèle de compilation sans inclusions de fichier, etc) et la capacité de consommer des API C++, Java, dotnet ou JS (au moins un ou deux choix). Rust ? M# ?
- Un bon langage universel (capable de cibler indifféremment java/dotnet/js/natif et de consommer des biblios java/dotnet/C++).
- Java/Scala s'ils continuent de s'améliorer.
Partager