Quel langage de programmation choisir ?

J’avais auparavant publié un article sur les bases à connaître avant de créer son propre site.

Aujourd’hui je vais aborder le sujet des langages de programmation.

Sans connaître les subtilités de chaque langage, je précise que ce qui suit n’engage que moi. :)

Par ailleurs je pense que les avis qui assènent des pseudo-vérités à ce sujet sont peu pertinents, car le ressenti (et notre rapport aux choses) est subjectif.

Quel est le meilleur langage de programmation ?

Tout dépend de l’objectif. Meilleur en quoi ? En performance ? En facilité d’apprentissage ? En concision ? En terme de communauté ? Pour réaliser un site web ? Un logiciel ? Bureau ? Smartphone ?

Essayons d’éclaicir la donne…

Pour afficher une page web

L’affichage des pages web se fait grâce à votre navigateur (google chrome, firefox…).

Ils interprètent ce que l’on appelle langage HTML.

Or utiliser de l’HTML seul, ce n’est pas très joli pour vos visiteurs. Alors on l’associe avec du CSS afin d’améliorer la mise en forme de ces pages.

Ok la mise en forme semble assez réussie… Mais les pages ne sont-elles pas un peu statiques ?

Pas faux. Alors pour simuler un surplus d’interactivité, on fait appel au Javascript (JS) (côté client).

Vous obtenez donc le combo indispensable : HTML/CSS + Javascript (en option).

Ce choix est le plus performant car votre serveur utilisera peu de ressources. Mais c’est également le choix le plus limité puisque vous ne pourrez pas générer du contenu à la volée.

Pour créer un site internet

Créer un site web dynamique est très différent de se contenter d’afficher des pages web.

Car le contenu des pages HTML/CSS est figé, il ne bouge pas à moins que vous ne le mettiez à jour.

Imaginons que vous souhaitiez permettre à vos visiteurs d’uploader leur avatar. Avec les langages ci-dessus, cela sera impossible. L’utilisateur devra vous envoyer son avatar, pour que vous le placiez manuellement sur votre serveur, et modifiez enfin les pages afin de faire apparaître cet avatar sur toutes celles concernées. o_o

Du coup comment faire ? o_o

Deux solutions :

  • soit à la main
  • soit automatiquement

A la main, c’est fastidieux ! Alors essayons d’y introduire un peu d’automatisation.

Pour ce faire nous avons besoin d’autres langages de programmation. Les plus utilisés sont PHP, Java, ASP, Python, Ruby, Javascript (côté serveur).

Vous avez bien sûr le droit d’opter pour des langages moins conventionnels. Par exemple rien ne vous empêche de coder un site en C, voire en langage assembleur. Cependant cela vous demandera plus de travail. ^^

La nécessité d’une base de données

Une base de données (bdd) vous permet de stocker des informations et les manipuler (vos utilisateurs, articles, commentaires…).

Dans un site dynamique il vous sera difficile de vous en passer.

MySQL / MariaDB ou postgreSQL sont souvent conseillés. En fait ce sont les choix habituels quand on débute, et ceux que les hébergeurs proposent.

Pour les sites ne nécessitant de base de données relationnelle, je sélectionnerais MongoDB et/ou Redis.

Si vous ne savez pas quoi prendre, mySQL est un bon choix par défaut.

Comment choisir entre PHP, Java, ASP, Python, Ruby, Javascript… etc ?

Chaque langage a ses avantages et ses inconvénients, certains seront plus adaptés que d’autres dans une tâche particulière.

  • PHP est le plus populaire car simple à prendre en main, facile à installer, la communauté est grande (sans être la plus pointilleuse), et existent plein d’outils gratuits. C’est le cas de Wordpress, les forums phpBB, SMF, les boutiques Prestashop, Magento, et plein d’autres ! Dailymotion et Openclassrooms se servent notamment de frameworks PHP, pareil pour Facebook… Evidemment que le langage comporte des défauts, et quelques uns en profitent même pour cracher leur venin :D (pour des raisons plus ou moins valables cela dit), PHP n’en reste pas moins une valeur sûre.

  • J’ai déjà manipulé du Java, mais désolé celui-ci me sort par les yeux… C’est personnel. :D

  • L’ASP, jamais touché.

  • Ruby, un petit peu mais je n’apprécie pas sa philosophie (rendre la programmation à la fois “productive et fun”, n’accorder d’importance aux performances).

  • Python m’a paru plaisant (vous pouvez monter des sites avec le framework Django).

  • Quant au Javascript côté serveur (avec Node.js), l’idée me semblait sympa et je m’en suis servi un moment mais j’en ai eu ras-le-bol des changements de versions. Je préfère plus de stabilité à ce niveau.

Retenez bien qu’un langage n’est pas meilleur qu’un autre dans l’absolu.

PHP me paraît néanmoins adapté pour débuter “sans prise de tête”, d’autant plus qu’il est compatible avec la plupart des hébergeurs… Ce qui n’est pas le cas des autres langages. Bien qu’il soit vivement critiqué il reste viable dans un contexte profesionnel. (Il suffit d’avoir les bonnes pratiques.)

Framework ou pas framework ?

J’en parlais plus haut. :)

Qu’est-ce que c’est ?

Un framework est comme une trousse à outils qui vous permet de simplifier votre travail.

En PHP vous tomberez sur Symfony, Zend, Cake PHP, Lavarel, Slim… Côté Python ce sera plutôt Django. Chez Node.js, Express.js ou MeteorJS, etc. Ruby On Rails pour Ruby.

Le but d’un framework est de vous fournir des fonctionnalités “prêtes à l’emploi”, que vous n’aurez plus qu’à utiliser / configurer / adapter en fonction de votre usage.

Un point positif est vous n’avez pas à recréer ces outils vous-mêmes, auquel cas vous risquez d’y introduire par exemple des failles de sécurité. Il est aussi plus simple pour une équipe de dévelopeurs de travailler sur un framework, plutôt que de repasser sur les scripts d’un autre “mec” ayant “codé à sa façon”. Les frameworks permettent d’aller plus vite, tout en restant fiables.

Un point négatif est qu’utiliser un framework nécessite d’y être formé et que vous en deviendrez peut-être dépendant. De plus, utiliser un gros framework pour un petit prog, ce serait sortir l’artillerie lourde pour pas grand chose. J’ajoute qu’en cas de bug interne il sera sans doute moins aisé de comprendre pourquoi que s’il s’agissait de votre propre outil. Pour finir, les frameworks sont amenés à changer de version, ce qui me “gêne” assez.

Quel est ton avis ?

Je comprends ceux qui optent pour ce type de solution. Néanmoins pour ma part ce serait avec réticence, et si je peux faire sans alors je fais sans !

Existe t-il une alternative ?

Oui ! La 3e version de ce blog utilise Gohugo qui est… un framework. :D

Vous connaissez ma réticence, mais ce qui m’a convaincu d’opter pour Gohugo est qu’il me permet de générer automatiquement des pages HTML/CSS/JS sans avoir à tout modifier à la main.

En fait c’est un compromis entre performance (les pages HTML sont “compilées”) et flexibilité (je peux effectuer des modifications sans avoir à modifier à la main toutes les pages web).

Résultat : le site est léger. Certes il est bien moins modulable que ceux basés sur Wordpress et consorts. Néanmoins ça suffit pour mon usage. Après tout on ne coupe pas une pomme de terre avec une tronçonneuse.

Bien sûr existent encore d’autres alternatives. A vous de fouiller sur le web, si intéressés. :)

Pour créer un logiciel

Beaucoup de langages le permettent. Pour moi Java, C/C++, C# et Python sortent du lot.

Si vous n’avez pas besoin d’interface graphique, les scripts shell, PHP, Node.js, Python etc… conviendront probablement.

En réalité vous pouvez toujours créer une interface graphique accessible depuis votre navigateur (grâce à l’HTML/CSS/JS) et l’associer à du Python, PHP…

Pour créer une application smartphone

  • Android use principalement de Java. Il supporte le C++, cependant celui-ci n’est pas recommandé.
  • Sous iOS, ce sera de l’Objective-C, une sorte d’extension du langage C.

Pour la performance

Niveau performance, c’est variable. Certains langages sont interprétés (plus lents puisque les serveurs doivent les traduire en langage machine à chaque requête), d’autres sont directement compilés en langage machine (ce qui soulagera votre serveur). Enfin quelques langages utilisent une forme intermédiaire. Par exemple Java et son bytecode, ou PHP qui, par défaut, est interprété mais offre la possibilité de l’OPcache.

Concernant les sites web, la plupart du temps vous n’aurez pas à vous en soucier. Le recours aux systèmes de cache, au scaling, une architecture adaptée, et à de bonnes pratiques de programmation permettent de diminuer les écarts de performance entre langages. Donc au final je pense que la performance brute ne devrait pas être le premier critère de sélection d’un langage. Hormis lorsque certaines architectures ou applications requièrent l’utilisation d’un langage spécifique.

Par contre, dans les jeux vidéos gourmands ou applications critiques qui exigent le max de performances pour un minimum de ressources, je choisirais tout de même le langage C ou le C++, voire l’assembleur pour les petits composants, jusqu’à la modification même du matériel physique. Mais rassurez-vous… vous n’aurez sans doute jamais à passer par là. ^^’

Pour la facilité

Sans compter les langages de balisage (HTML, XML etc..), je dirais PHP (quoique ses “défauts” peuvent embrouiller certaines personnes), Python, Ruby, et même JS.

En fait la plupart des langages se ressemblent, tout en ayant leurs particularités propres.

Sinon j’ai trouvé le C et C++ plutôt simples à appréhender, mais je déteste le Java. J’en connais qui ont le sentiment inverse, donc vous voyez que c’est subjectif… ^^

Bref, je mets surtout en avant PHP car il est régulièrement prôné par le monde amateur. A compléter avec d’autres langages toutefois si vous désirez aller plus loin. (Mon préféré est le C++, mais pas celui que j’utilise le plus.)

Pour la communauté

Les langages connus possèdent généralement une communauté suffisamment large pour ne pas avoir à s’en inquiéter.

En cas de doute, n’hésitez pas à posez vos questions sur les forums adéquats : Stackoverflow, Developpez.net, Openclassrooms

John Doe avatar
About John Doe
John Doe's true identity is unknown. Maybe he is a successful blogger or writer. Nobody knows it.
comments powered by Disqus