Choix des langages de programmation

Présentation…

Tant qu’à ne pas pouvoir se permettre de ne pas hésiter, autant savoir pourquoi on hésite tant dans le choix d’un langage de programmation avec lequel on fera dans le long-terme. Comprendre les questions sous-jacentes permettra de se sentir plus à l’aise. Cette page n’est pas un catalogue, elle présente l’importance de prendre connaissance des différents paradigme de programmation avant ou en parallèle du choix de langages de programmation. Après avoir levé la confusion entre paradigme et langage ( bien que les deux soit étroitement associés ), nous pourrons lever une autre confusion fréquente : derrière PHP, Perl et compagnie. se cache en fait le CGI.

La question sous-jacente : les paradigmes de programmation

Une comparaison des différents langages de programmation sans distinction préalable ne serait pas pertinente. On ne peut pas exemple comparer Eiffel et LISP. Si on veut les comparer, on le fera sur un exemple d’application donnée et précis. On ne pourra pas être suffisamment exhaustif sur ce point. La solution est de passer par une abstraction préalable.

Les langages de programmation prennent sens sous leurs paradigmes

A un premier niveau, ce ne sont pas les langages de programmation qu’il faut comparer, mais les paradigme. Par exemple Eiffel est un représentant du paradigme de la Programmation Objet et du paradigme de la Programmation par Contrat. LISP est un représentant du paradigme de la Programmation Fonctionnelle, tandis que par exemple encore, Prolog est un représentant du paradigme de la Programmation Logique et du paradigme de la Programmation Déclarative. On peut comparer les paradigmes entre eux, en faisant une description de leurs domaine d’application et de leurs caractéristique ( en employant éventuellement pour cela, un langage d’exemple que l’on prendra comme prototype ). On peut par exemple étudier le paradigme Objet et le paradigme Procédurale, puis les évaluer au regard de l’application que l’on désire créer. Les langages de programmation, eux, se compareront au seins d’un même paradigme. Ainsi on comparera Eiffel et C++ au regard du paradigme Objet.

Un langage peut être un représentant d’un ou plusieurs paradigme, il n’est pas restreint à un seul. La question pour un langage, et souvent de savoir s’il honore ou s’il déshonore le(s) paradigme(s) dont il se revendique.

Pour une brève description des différents principaux paradigme, je n’ai pas trouvé mieux que cette page: Paradigmes de Programmation  ( je dis que je n’ai pas trouvé mieux, parce que les pubs sur cette page sont nettement envahissantes… je n’ai rien contre les sponsors, mais il faut savoir les choisir ).

Pour compléter le précédent liens, j’ajouterais deux autres liens Programmation Orientée Aspect  et Programmation par Contrat . Il y a même le paradigme de la Programmation Graphique . Mais on ne peut pas vraiment accorder à ce concept, le qualificatif de paradigme. Il est toute fois indiqué ici, pour ne pas s’égarer dans la méconnaissance. En résumé, et sans prétendre être exhaustif, nous avons donc…

  • Programmation Impérative
  • Programmation Fonctionnelle
  • Programmation Logique
  • Programmation Procédurale
  • Programmation Modulaire
  • Programmation par Abstraction de Données
  • Programmation par Objets
  • Programmation par Aspect
  • Programmation par Contrat
  • Programmation par Contraintes
  • Programmation Graphique
  • Et encore sûrement beaucoup d’autres…

Trouver un langage pour un/des paradigme(s)

Pour découvrir certains langages de programmation associés à un certains paradigmes, on pourra se reporter à Cetus Links — Répertoire de langage de programmation  ( un lien WebArchive, car ce site qui fut fameux, redirige maintenant vers un site douteux ). Cetus Links s’annonce comme un site traitant des langages de programmation objet, mais en réalité il va bien plus loin que ça. Ne vous arrêtez donc pas au titre de la page d’accueil.

Quand vous pouvez comparer différents paradigme, et comparer différent langage au seins d’un paradigme donné, alors vous pouvez commencez à vous faire une idée des différentes forme d’art en la matière.

Ce qui ce cache sous la programmation web : le CGI

Sur un serveur web, l’application serveur peut lire et renvoyer des pages web. Mais une URL ne renvoi pas nécessairement vers une page web, elle peut aussi renvoyer sur…. un programme. Un tel programme renverra une page web, ou même tout autre fichier. Pour cela un protocole dédié sera utilisé, pour que le programme, le serveur et le navigateur de qui visite votre site puisse tout les trois se comprendre. C’est le Common Gate Way Interface, ou encore CGI. On confond trop souvent CGI avec Java, PHP, Perl, et compagnie. Mais on peut faire de la programmation CGI Web avec n’importe quel langage de programmation. Il suffit de compiler le programme pour la plate-forme du serveur. Par exemple ce site fonctionne en partie avec des CGI binaires, compilé sur le serveur, et qui sont écrits en Pascal ( anciennement en C ) et une migration vers Ada a commencé ( à terme tout sera en Ada ).

Un programme CGI n’est rien d’autre qu’un programme qui retourne un document sur le flux de sortie standard ( stdout pour le C ). Ce document est souvent une page HTML, mais pas seulement, ça peut être un fichier image ou autre chose. Par exemple sur mon site, les téléchargements sont renvoyé par un programme CGI.

Pour en savoir plus sur le CGI : CGI Spécification . Et même une FAQ : FAQ sur l’interface CGI .

C’est terrible qu’on en soit arrivé à confondre CGI et PHP, parce que c’est exactement comme si on disait qu’un ordinateur, c’est un PC…. non ! Les ordinateurs ne sont pas tous des PC, les systèmes d’exploitation ne sont pas tous Windows ou Linux, les langages de programmations ne sont pas tous C/C++, de même, vous avez pour les CGI, un choix beaucoup plus vaste que vous ne le pensez: pensez que vous pouvez utiliser n’importe quelle langage, pourvu qu’il puisse produire un programme capable de lire le flux d’entrée standard, capable d’écrire sur le flux de sortie standard, et capable d’accéder aux variables d’environnement. Ces choix sont variables selon le systèmes d’exploitation sous lequel vous travailler, mais sont parfois surprenant. A titre d’exemple, sous un serveur Windows un programme CGI peut être un simple fichier batch, sous BSD et autres UNIX-like, cela peut être un simple script Ash. En de hors de cela, sont présent sous quasiment toutes les plates-formes des compilateurs Pascal ou LISP ( au moins des compilateurs produisant du C ), et à ce titre il est même possible de créer un site web programmé en LISP ou en Pascal.

Langages de script sous Windows

A savoir que depuis Windows 95, vous n’êtes plus seulement restreint aux fichiers batch pour vos script sous DOS/Windows. Depuis Windows 95, un support natif est présent pour les scripts VBScript et JavaScript ( comparable à celui des pages web ). Ils sont évidement bien plus souples que leurs homologue hérité des anciens âges du DOS.