Skip to content

Texte : autres langages (programmation concurrente, événementielle, ...)

Bien sûr, sans parler des langages exotiques, il existe de nombreux autres langages qui n’entrent pas parfaitement dans l’une des catégories « impératif », « orienté-objet » ou « déclaratif », et qui pourtant sont Turing complets et permettent parfaitement de « programmer ».

L'entrée (Paradigme de programmation, section Autres_types de wikipedia](https://fr.wikipedia.org/wiki/Paradigme_(programmation)#Autres_types) donne des dizaines de paradigmes différents.

Citons en particulier

  • la programmation événementielle où un programme sera principalement défini par ses réactions aux différents événements qui peuvent se produire (Par exemple, TcL/Tk gère un tel paradigme) ;
  • la programmation concurrente où plusieurs processus (appelés également threads, ou tâches) s'exécutent en concurrence, donnant lieu à de nombreux problèmes informatiques complexes dont les célèbres problèmes d'interblocage et de famines).

De nombreux langages dédiés (domain-specific languages ou DSL) sont conçus pour répondre aux contraintes d’un domaine d'application précis. On peut citer, comme simples exemples parmi beaucoup d’autres :

  • Les langages de requêtes (query languages) : ils sont a priori conçus pour interroger une base de données ou un système d’information. SQL en est l’archétype.
  • Les langages de script (scripting languages) : à l’origine, il s’agissait des langages associés à un système d’exploitation (un JCL, Job Control Language). De nombreux autres langages interprétés sont venus enrichir cette catégorie : Bourne shell (sh) et ses variantes (csh, ksh, bash, tcsh, zsh...), Perl, Raku, Ruby, Lua, Tcl/Tk...
  • Les langages d’analyse statistique (statistical computing languages) : ils offrent des outils de traitement, d’analyse et de présentation graphique de grands ensembles de données. Exemples : R, SAS, SPSS, Statistica...
  • Les langages de calcul numérique (numerical computing languages) : d’un certain point de vue, ils sont une généralisation des précédents ; ce sont des outils de calculs complexes sur des données générales et de présentation graphique des résultats obtenus. Exemples : Gnu Octave, MATLAB, Mathematica, Scilab... Le langage APL (1966) était un précurseur de cette famille.
  • Les langages de calcul formel (computer algebra languages) : ces langages manipulent des valeurs qui sont des formules mathématiques, pas des valeurs numériques. Des exemples très connus sont Maple, Maxima, Reduce, Derive, MATHLAB (ne pas confondre avec l’autre)...
  • etc.

Pour illustrer ce qu’est un calcul formel, voici un exemple en Maxima. Si l’on écrit :

factor(x^2-3*x+2);

il répond (i.e. il évalue) : « (x-2)(x-1) ». Si l’on veut la dérivée première :

diff(x^2-3*x+2,x,1);

il répond : «2x-3».

Langages multi-paradigmes

Souvent les langages sont multi-paradigmes : ainsi Python est un langage impératif, orienté-objet et permet une certaine programmation fonctionnelle. Si l'on regarde l'ébauche d'article Comparaison_des_langages_de_programmation_multi-paradigmes sur wikipedia, 10 paradigmes sont cités pour Python (le langage Julia en a plus de 17 !).