Scheme: un langage de programmation simple dérivé de LISP


La création…

Scheme -prononcez “Skim”- est un langage dérivé de LISP qui fut crée au Massachusetts Institute of Technology dans les années 1970 par Gerald Jay Sussman et Guy L. Steele. La première version publiée date de 1975.

Pourquoi Scheme et pas LISP ?

L’objectif de ce langage est d’épurer le LISP tout en conservant sa flexibilité et sa puissance expressive. Ceci fut alors réalisé par une limitation des mots-clefs et une syntaxe extrêmement simple.


Qu’est-ce que Scheme?

De manière générale…

Scheme est un langage fonctionnel.

Son typage est dynamique et fort, c’est à dire que les variables sont typées «à la volée»: le programmeur ne doit pas spécifier le type de sa variable et les conversions implicites de types sont formellement interdites à l’inverse du Javascript par exemple où « 2 » + 4 donne « 24 ».

(define a 5) → a est un entier égal à 5

Scheme est un langage homoiconique: il s’écrit via ses propres structures de données qui sont des listes. Par exemple la déclaration de la variable “a=5” ci-dessus se fait via une liste caractérisée par les parenthèses.

Il possède une notation préfixée, aussi appelée notation polonaise. Par exemple pour réaliser l’opération 2*(1+2+3) = 12 on écrit:

(* 2 + (1 2 3))

La gestion de la mémoire se fait automatiquement.

…et plus en détail

Scheme est constitué de s-expressions c’est à dire qu’il est structuré de la même manière qu’un arbre, que ce soit pour ses données ou pour son code source. De plus, les s-expressions confèrent au langage une puissance de macros exceptionnelle puisqu’elles lui permettent de s’adapter à de nombreux problèmes en le rendant par exemple multi-paradigme et non plus uniquement fonctionnel mais orienté-objet par exemple. L’écriture des macros est aussi plus naturelle et évite ainsi les éventuelles erreurs souvent complexes à détecter comme c’est le cas en C avec l’utilisation de “#define”.


Quels sont ses domaines d’applications?

Scheme est utilisé dans de nombreux domaines mais il est particulièrement efficace dans le domaine de l’intelligence artificielle.

En effet, l’implémentation des s-expressions est ce qui en fait un outil de choix pour le travail sur ce domaine puisqu’elles rendent possible la méta-programmation, c’est-à-dire la capacité qu’a un programme d’agir sur lui-même. Ainsi Scheme possède une possibilité d’apprentissage et de développement de nouvelles fonctionnalités à l’inverse des langages possédant un simple corpus préétabli d’instructions comme le C.

À vous !

Scheme possède plusieurs implémentations comme Bigloo, Gambit et PLT Scheme. Si vous souhaitez en savoir plus et l’essayer il existe de nombreux tutoriels sur le web dont celui-ci: https://en.wikibooks.org/wiki/Scheme_Programming