A titre personnel, je suis un adepte de C++ et C# mais je suis ouvert. Il existe aussi JS, HTML, TS, PHP et Java et bien d’autres. Mais prenons une situation, vous voulez développer une application : quels outils allez-vous utiliser ?

Le sujet est plus complexe qu’il n’y parait. Vous application va tourner sur un mobile, une tablette ou un PC/Mac ? Au sens strict du terme, un mobile c’est iOS ou Android : déjà là, on a un problème, il n’y a rien de commun. Il faut développer le soft 2 fois ! Ensuite sur Tablette, la résolution n’est pas la même… Comment faire ? Sur PC et Mac, les OS sont différents ! Bref, si j’utilise les SDKs natifs, j’ai le choix… de développer l’application au moins 4 fois.

N’existe-t-il pas des solutions multiplateformes comme C#/NET ou Java qui permettent de réutiliser du code ? C++ est aussi réutilisable. JS est multiplateforme… Bref, le problème est extrêmement complexe.

Le choix le plus simple : Java/Android ?

Ce choix est très populaire car Google fournit un écosystème très riche sur Android. La documentation est bien faite, les outils sont confortables et le langage et la APIs sont relativement faciles à maitriser.

Le choix du cœur : C# .NET/Xamarin pour iOS et Android avec Xamarin.Forms ?

Ce choix est fait pour les développeurs Microsoft qui veulent rester dans leur zone de confort. Xamarin.Forms permet d’écrire une application pour iOS et Android avec beaucoup de code réutilisable. C’est un avantage comparé à la première solution qui ne cible que les devices Android.

Le choix des éditeurs logiciels : Objective-C/Swift pour iOS et Java pour Android

Pour un application rapide et optimisée, il faut utiliser les API natives de la plateforme. Java pour Android et Swift ou Objective-C pour iOS. Pour les opérations qui nécessitent de la performance ultime, on introduira du C/C++.

Le monde Desktop : Swift/Objective C pour Mac et C#/.NET Core pour Windows.

Apple fait de gros effort pour imposer Swift sur Mac OS. Microsoft propose C# .NET Core sur Windows comme nouvelle plateforme de développement.

Le monde Web

Il est possible de faire du JS/TS avec HTML et Node.JS ou Electron pour être multiplateforme.

Synthèse

Le développement est pluriel. Il faut un développement mobile/tablette et un développement Desktop. Sinon, on opte pour un développement Web qui est viable sur toutes le plateformes. Le monde du développement logiciel est un vaste sujet qui apporte une complexité importante.