Il n’y a pas de véritable recette universelle pour choisir son langage. C’est une question de feeling et d’influences. Selon le marché, on optera pour un langage car il est dans l’air du temps, ou que le marché tend vers celui-ci, comme une sorte de standard.
Au-delà, il ne faut pas non plus négliger des langages plus confidentiels mais avec un fort potentiel d’avenir, même si ces derniers ne seront pas, dans un premier temps, votre langage principal. Comme nous le verrons plus loin dans ce dossier, la veille technologique est incontournable pour suivre les évolutions.
Comment choisir : l’option casse-tête chinois
Si vous n’avez jamais développé ou très peu, comment s’en sortir ? Tout d’abord, vous devez savoir ce que vous voulez faire. Les premiers critères pourraient être l’histoire du langage (est-il ancien, récent), est-il verbeux. Chaque langage possède son propre verbiage. XML est très verbeux, Ruby ou Python bien moins. Plus le langage est verbeux, plus il faudra coder (ou passer par des générateurs de code, des composants, des frameworks).
Applications desktop Si on souhaite développer nativement, le C et C++ demeurent les langages de prédilection quel que soit le système, hormis MacOS X qui utilise ObjectiveC, un dérivé du C. Vous pouvez utiliser des langages " moins natifs ", selon le système que vous ciblez : WinDev, Omnis, 4D. Vous pouvez aussi utiliser la plate-forme .Net (C++ CLI, C#, VB.Net) pour vos développements Windows, ou même Mono, une pile .Net libre, disponible sur Windows, MacOS X et Linux. Vous pouvez aussi opter pour Python (par exemple utilisable sous .Net avec le projet IronPython), ou encore PHP avec, par exemple, PHP GTK ! Vous pouvez aussi opter pour du langage fonctionnel, du Smalltalk, etc. Le développement natif oblige à se plonger dans les API, frameworks et librairies système pour réellement tirer parti du système. Ce qui n’est pas toujours simple. Vérifier aussi le fonctionnement de l’application après développement. Et selon les versions des systèmes, il faut vérifier la compatibilité.
Applications mobiles Là encore, un langage natif de type C/C++ demeure incontournable. D’ailleurs sur certaines platesformes (Symbian ou PalmOS et même Windows Mobile), C/C++ sont les références pour concevoir des applications optimisées et rapides. Du côté Windows Mobile, vous pouvez aussi utiliser le eVB ou encore la plate-forme .Net avec le Compact Framework, permettant de coder en C# ou VB.Net. Java avec J2ME est très utilisé, surtout dans les téléphones portables. La plate-forme dictera le langage à utiliser. Au-delà du langage, concevoir une application mobile demande beaucoup de précautions. Tout d’abord, il faut savoir développer avec les contraintes liées aux terminaux mobiles. Et selon le type de terminal, les contraintes changent. Par exemple, l’interface d’un téléphone ou d’un PocketPC n’est pas identique, idem dans l’ergonomie, la gestion mémoire, le stockage. De plus, dans le cas du téléphone, il arrive souvent qu’il faille s’adapter à chaque modèle de téléphone ! Bref, générer un binaire par modèle ! De plus, certains environnements de développement nécessitent un runtime client…
L’application web Le développement web est un vaste domaine. Si vous souhaitez réaliser un simple site web ou un blog, il suffira d’apprendre quelques rudiments du HTML, quelques balises, et c’est tout. Il existe des éditeurs en ligne qui se chargent de tout et des outils simplifiant au maximum la conception! Par contre, dès que l’on souhaite faire autre chose, il faut apprendre les fondamentaux du Web : HTML, xHTML, CSS, voire JavaScript. Plus on souhaite un site fouillé, dynamique, plus vous utiliserez de langages, notamment pour les pages dynamiques où vous devrez choisir entre JSP, PHP ou ASP.Net. Là rentrent en compte les problèmes de plate-forme serveur, sans compter la mise en place d’une base de données, la gestion de la sécurité, d’authentification, de mise à jour, etc. Côté entreprise, Java EE (ex-J2EE) sera souvent utilisé, mais là, l’apprentissage sera d’autant plus long que Java EE constitue une plate-forme complexe avec de multiples couches. Sans oublier les sites multimédia, l’interface flash, les versions mobiles, etc. Autant de contraintes à prendre en compte dans votre choix de langage et des outils ! On conseille fortement de découpler l’interface du code fonctionnel et de mettre en place un développement de type MVC (module, vue, contrôle). Dans ce cas, il faut un langage utilisant le module MVC ou des frameworks MVC.
Le " Web 2 " Le terme Web 2 recouvre, pour le côté langage, principalement JavaScript (via Ajax), CSS, XML et les flux RSS. JavaScript est loin d’être trivial et les outils performants commencent à peine à arriver ! De plus, les diversités de l’offre Ajax causent un souci supplémentaire : quelle librairie utiliser ? Des problèmes de compatibilité entre ces librairies existent, donc un choix = un enfermement ! À cela se rajoute l’arrivée prochaine d’Atlas, le framework à la Ajax de Microsoft. Et Ruby, avec notamment le framework Rails, fait de plus en plus parler de lui malgré sa jeunesse.