Quelques langages particuliers

Qu'appelle-t-on langage ?

Un langage de programmation doit permettre de définir un modèle de données et des traitements s'effectuant sur ces données.

Les données doivent pouvoir être organisées selon le désir de l'utilisateur, mais pas forcément structurées. Il doit y avoir la notion de mémoire, même la plus simple qu'il soit (un registre).
Egalement, ces traitements doivent pouvoir être organisés selon le désir de l'utilisateur, mais pas forcément structurés. Il doit y avoir la notion de test, de débranchement, d'entrée, de sortie et de factorisation de code.

Ainsi, l'assembleur, C, Java, Pascal, Lisp, Postcript, Prolog, Structured Query Language (SQL), le shell Unix sont des langages de programmation.
En revanche, Pcl n'en est pas un. Il ne permet pas de programmer mais de décrire.

Classification des langages

Les langages de programmation peuvent être classés selon cinq familles :

Langages à objets

Ces langages reposent sur le concept d'entité autonome appelée objet liant intimement les données aux traitements les manipulant. Un objet possède des caractéristiques communes à son semblable. Ils sont donc regroupés en classe définissant les caractéristiques et le comportement d'un d'objet particulier. Les classes peuvent se définir hiérarchiquement.

Les traitements propres à un objet sont appelés méthodes. Les données sont rarement accessibles directement étant donnée qu'elles sont cachées à l'intérieur de l'objet i.e. encapsulées. L'accès aux données est contrôlé par des méthodes spécialisées.

Certains langages objets sont procéduraux. D'autres, puristes, ne permettent pas la définition de procédure ou de fonction en dehors des méthodes. Factoriser le code revient à créer un classe sans signification. Une nouvelle brique de traitement est alors uniquement créée lors d'un débranchement (les tests ou les boucles).

Langages ensemblistes

Ces langages reposent sur le concept de la théorie des ensembles. Ils permettent de définir des ensembles d'entité, de créer des sous-ensembles, de faire des intersections d'ensembles, etc.

Ces langages modélisent uniquement les traitements. Les données proviennent d'un monde externe au langage et généralement d'un base de données relationnelle.
Sans quelques notions procédurales, ils sont inutilisables. Pour cela, la plupart incorpore la notion de test dans la manipulation ensembliste.

Langages à liste

Ces langages reposent sur le concept d'éléments appartenant à une liste. Un élément peut être n'importe quoi : un élément du langage, un traitement, une donnée ou une liste. Une liste sert à définir la liste des instructions, un appel de procédure (les éléments de la liste sont la procédure puis les paramètres de l'appel), un test (les éléments de la liste sont l'expression à tester, une liste d'instructions à exécuter si le test est vrai et une liste d'instructions à exécuter si le test est faux).

Ces langages mélangent les données et les traitements : les traitements sont des données particulières et les données sont vues comme autant de fonctions sans paramètre. Ils permettent de faire aisément de l'auto programmation et sont donc utilisés en intelligence artificielle.

Langages cognitifs

Ces langages reposent sont fait pour modéliser le raisonnement humain. Les données sont uniquement atomiques. Elles sont organisées sous forme de faits valués ou non : Température=12 °C (fait valué), il pleut (fait non valué). Les traitements sont uniquement constitués de règles de déduction analogues à Si Condition Alors Action. L'action de ces règles est soit l'établissement d'un fait ou sa valuation. La condition est une expression booléenne portant sur ces faits : existence, valeur, etc.

Un programme réalisé dans un de ces langages s'utilisent de deux manières : soit la base de faits est alimentée extérieurement au programme et, par déduction, de nouveaux faits sont déduits (utilisation de la règle dans le sens Si j'ai cela Alors j'ai ceci.) ; soit des faits hypothétiques sont induits à partir de faits constatés en vue de connaître des hypothèses ou tout simplement de valider les faits constatés (utilisation de la règle dans le sens Comme j'ai ceci Alors il me faut cela.)

Ces langages sont particulièrement utilisés dans l'aide à la décision et servent à construire une base de raisonnement en intelligence artificielle.

Classification des modes d'exécution des langages

Il existe trois types de mode d'exécution :

Les langages compilés

Les instructions du source du programme sont converties en une suite d'instructions écrites en langage machine directement compréhensible par l'ordinateur. Ils nécessitent donc une phase de compilation qui peut être assez longue si le programme est gros ou s'il comporte beaucoup de bibliothèques à lier.

Ils sont rapides à l'exécution mais lourds en développement et assez rigides concernant l'interopérabilité des composants des programmes.

Les langages interprétés

Les instructions du source du programme sont analysées lors de l'exécution du programme par un interpréteur. Ce dernier reconnaît les instructions une à une et en déduit les fonctions à appeler dans des bibliothèques. Ces bibliothèques peuvent être constituées de code compilé ou de code à interpréter.

Ils sont lents à l'exécution, souples concernant l'interopérabilité des composants des programmes, mais rapides en développement.

Les langages semi-compilés

Les instructions du source du programme sont converties en une suite d'instructions écrites en langage machine pour une machine imaginaire appelée machine virtuelle. Ils nécessitent donc une phase de pseudo-compilation mais qui est légère quand bien même le programme est gros. (Les bibliothèques ne sont pas liées.)

Ils sont moyennement rapides à l'exécution, souple concernant l'interopérabilité des composants des programmes et assez rapides en développement.

Langages usuels

Voici les langages les plus usuels

Ada

Ada est un langage très sûr, permettant de réaliser des programmes fiables et bien organisés. Il permet notamment prévu pour réaliser des applications dans lesquelles la communication entre les programmes à de l'importance. En revanche, il ne dispose pas de fonction pour créer aisément des interfaces hommes-machines.

Basic

Basic est un langage très aisé à apprendre. Il permet à des informaticiens non avertis de réaliser de petites applications de façon autonome. Décliné par la majorité des éditeurs de logiciel (Visual Basic de Microsoft), il permet généralement de créer aisément des interfaces hommes-machines. En revanche, il est généralement moins performant que les autres langages et permet de structurer faiblement les programmes.

C

C est le langage à tout faire. Il est très ouvert, ce qui fait qu'il est complexe à maîtriser dans sa totalité, d'autant plus que d'une plate-forme à l'autre, soit il ne se comporte pas de la manière, soit ses extensions ne sont pas forcément disponibles. Ce langage à tout faire permet de maîtriser tous les sujets et le plus en profondeur : modélisation des traitements, modélisations données ; interfaçage avec l'utilisateur, avec les autres programmes avec les autres ordinateurs. Il permet de réaliser des programmes des plus performants.

Généralement, les autres langages sont écrits en langage C. Le langage C est écrit pour partie en lui-même et pour partie en assembleur, une sur-couche logique du langage machine. La majorité des systèmes d'exploitation est écrite en langage C. La majorité des interfaces hommes-machines est écrite en C.

Cobol

Cobol est dédié à la gestion des données. Il est fiable mais n'est pas très ouvert. Concernant les interfaces hommes-machines, il permet généralement d'en créer des simplistes soit en mode caractère soit en mode graphique émulant un mode caractère (méthode de revamping graphique). Il ne comporte aucune fonction de communication entre les programmes, si ce n'est l'appel de sous-programme, et ni de fonction de communication entre les ordinateurs.

Pour la petite histoire, il s'agit du seul langage inventé par une femme. Est-ce pour cela qu'il est le plus représenté aujourd'hui ?

Langage Java

Java est le langage dédié à Internet dérivé en langage à priori à tout faire. Il est le plus récent. Il permet de réaliser des programmes rapidement qui seront 100 % portables d'un ordinateur à l'autre. Il est très complet sauf en ce qui concerne les interfaces hommes-machines au regard du Basic et du C.

Fortran

Fortran est le langage dédié au calcul scientifique. Il est fiable et permet de réaliser des programmes fiables. Seulement, il est retard sur d'autres langages concernant la structuration des programmes, la création des interfaces hommes-machines et la communication entre les programmes ou entre les ordinateurs.

Lisp

Ce langage à listes (list processing) est un langage à tout faire très particulier. Il permet de travailler avec les interfaces hommes machines, notamment Motif, et possède des extensions permettent d'effectuer des appels système, etc. Cependant les programmes écrits en Lisp sont gourmands en mémoire et peu performants.

Le fait qu'il soit très différent des langages usuels (i.e. procédural) le rend difficile d'accès pour un non initié. Cependant Lisp s'avère incontournable lorsqu'il s'agit des programmes d'intelligence artificielle.

Prolog

Prolog est uniquement dédié à modéliser le raisonnement humain concernant la déduction de faits et l'induction d'hypothèses. Son mode de programmation est très particulier. Il permet de modéliser un raisonnement en très peut de lignes de code, le tout est de les écrire !

Ce langage est fiable et produit des programmes peu performants.

Smalltalk

Smalltalk est le langage dédié à l'organisation des traitements, des données. Il est sur et permet de réaliser des programmes fiables. Il permet aisément d'interfacer des programmes et des ordinateurs. Seulement, il est difficile à maîtriser, permet difficilement de créer des interfaces hommes-machine et est peu diffusé.

Ce langage, qui était en avance sur son temps, est aujourd'hui dépassé.

Sql

Structured Query Language (SQL) et ses extensions propriétaires telles Pl/Sql d'Oracle est dédié l'interrogation des bases de données relationnelles. Il est sûr et simpliste. Loin d'être complet, il ne permet pas de créer des interfaces hommes-machine. Il permet au plus de créer des portions de programme, portions dédiées justement à l'interrogation des bases de données relationnelles.

Synthèse sur les langages de programmation

Voici une synthèse comparative des différents langages énoncés dans les sections précédentes. Les titres des lignes de ce tableau ont les significations suivantes :

SujetAdaBasicCCobolFortranJavaLispPrologSmalltalkSql
InterprétéNONNNOOONO
Semi-compiléNONNNOOOOO
CompiléONOOONNNNN
PerformantONOOOONNNO
EconomeONOOONNNNO
PortableONNOOONOON
FiableOONNOOOOOO
MaîtrisableOONOOONNNO
Date de création1980197019701970197019901970198019801980
Evolution=++-=+====
Part de machéFaibleFaibleForteForteForteFaibleFaibleFaibleFaibleMoyenne
Est intéropérableSqlSql, CJava, Sql, FortranNéantCC, SqlCLisp, CNéantNéant
DonnéesONONNONNON
TraitementsONONNOONON
IHMNOONNOONNN
RéseauONONNONNNN