Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/paul-schuhm/scheme
Un dépôt pour s'initier au langage Scheme (Lisp)
https://github.com/paul-schuhm/scheme
francais lisp pedagogie programming-fundamentals scheme scheme-interpreter scheme-language
Last synced: about 1 month ago
JSON representation
Un dépôt pour s'initier au langage Scheme (Lisp)
- Host: GitHub
- URL: https://github.com/paul-schuhm/scheme
- Owner: paul-schuhm
- Created: 2023-05-06T20:26:23.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2023-05-07T07:00:16.000Z (almost 2 years ago)
- Last Synced: 2024-11-08T15:32:35.479Z (3 months ago)
- Topics: francais, lisp, pedagogie, programming-fundamentals, scheme, scheme-interpreter, scheme-language
- Homepage:
- Size: 4.88 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# scheme
Une brève introduction à [Scheme](https://fr.wikipedia.org/wiki/Scheme), un dialecte de [Lisp](https://fr.wikipedia.org/wiki/Lisp), crée dans les années 70 au MIT par [Gerald Jay Sussman](https://fr.wikipedia.org/wiki/Gerald_Jay_Sussman) et [Guy L. Steele](https://fr.wikipedia.org/wiki/Guy_Lewis_Steele,_Jr.) (impliqué dans la conception de Lisp, Scheme, Fortran 90, Java et dans l'implémentation d'Emacs et de TeX).
- [scheme](#scheme)
- [Installation](#installation)
- [Sur Debian/Ubuntu](#sur-debianubuntu)
- [Lancer l'interpréteur Scheme](#lancer-linterpréteur-scheme)
- [Premiers pas sur l'interpréteur](#premiers-pas-sur-linterpréteur)
- [Concepts fondamentaux](#concepts-fondamentaux)
- [Expressions primitives](#expressions-primitives)
- [Moyens de combinaison](#moyens-de-combinaison)
- [Références](#références)## Installation
### Sur Debian/Ubuntu
~~~
sudo apt install mit-scheme
~~~## Lancer l'interpréteur Scheme
Scheme est un langage interprété, comme Python ou PHP. Pour executer du code Scheme, vous pouvez accéder à un interpréteur interactif en ligne de commande. Dans un terminal
~~~
mit-scheme
1 ]=>
~~~## Premiers pas sur l'interpréteur
Pour accéder au manuel de l'interpréteur `control+c ?` (taper `control` et `c` en même temps, puis `?`). Pour revenir au REP, `control+x`. Pour quitter l'interpréteur, tapez `control+c Q`.
L'interpréteur fonctionne toujours de la même manière: il lit l'expression que vous avez tapé dans le terminal (read), évalue l'expression (eval) et affiche le résutlat (print). On appelle cela la *read-eval-print loop* (Read Eval Print ou REP). Lorsque vous accéder à l'interpréteur, le prompt `1 ]=>` indique que vous êtes dans le REP de niveau 1. Pour nettoyer l'écran, `control+c control+l`.
Dans le REP tapez `(+ 1 2)` puis `entrée`. L'expression `(+ 1 2)` est lue par l'interpréteur (*read*), évaluée à 3 (*eval*) puis imprimée sur la sortie standard (*print*).
~~~
1 ]=> (+ 1 2);Value: 3
~~~On remarque que le résultat affiché `;Value: 3` est écrit sous forme de commentaire. Un commentaire en Scheme est défini par le caractère `;`.
## Concepts fondamentaux
Tout programme repose sur 3 ingrédients :
- des *expressions primitives* : fournies par le langage, ce sont les expressions les plus simples, comme la représentation du nombre `42`, la chaîne de caractères `"foobar"` ou la procédure d'addition (`+`)
- des *moyens de combinaison* pour combiner des éléments simples afin d'en fabriquer des plus complexes
- des *moyens d'abstraction* pour nommer, penser et manipuler les combinaisons comme des modules ou boîtes noires### Expressions primitives
Par exemple, si vous tapez `42` dans l'interpréteur, le REP vous affiche `42`. En effet, `42` est évalué à `42`. Scheme vous met à disposition des procédures (ou fonctions) primitives comme l'addition (`+`), la soustraction (`-`), la multiplication (`*`) et la division (`/`).
>Et bien d'autres, on y reviendra plus tard.
### Moyens de combinaison
L'expression `(+ 1 2)` est une liste. Une liste est délimitée par des parenthèses.
>La syntaxe de Scheme est simple. Elle s'apprend en quelques minutes. La difficulté c'est que les parenthèses jouent plusieurs rôles (on dit que leur sémantique est surchargée) ce qui peut prêter à confusion au départ.
Lisp veut dire **lis**t **p**rocessing, car tout y est traitement de listes ! Le premier élément de la liste est appelé l'*opérateur*, (`+`). Le reste des éléments sont les *opérandes* (`1` et `2`). Les parenthèses indique à l'interpréteur d'évaluer l'application de la procédure `+` au reste des éléments de la liste. La liste `(+ 1 2)` peut donc se traduire par *applique la procédure `+` aux éléments `1` et `2`*. L'expression `(+ 1 2)` est lue (*read*), l'interpréteur voit les parenthèses et applique donc `+` à `1` et `2` (*eval*) et affiche `3` (*print*).
> Si vous tapez `+ 1 2` sans parenthèses, Scheme va évaluer chaque expression séparemment.
## Références
- [Site officiel de MIT/GNU Scheme (sur gnu.org)](https://www.gnu.org/software/mit-scheme/), MIT/GNU Scheme est une implémentation du langage Scheme développée par Abelson et distribuée sous forme de logiciel libre (intégré au projet GNU)
- [Documentation officielle de Scheme (une page)](https://www.gnu.org/software/mit-scheme/documentation/stable/mit-scheme-ref.html#Acknowledgements)
- [Structure and interpretation of computer programs, 2nd edition (version HTML)](https://mitp-content-server.mit.edu/books/content/sectbyfn/books_pres_0/6515/sicp.zip/full-text/book/book.html), l'édition web gratuite et complète du très grand livre d'Abelson, Gerald Jay et Julie Sussman (MIT Press, 1996). `Recommandé`
- [Introduction aux fonctions en Scheme](https://www.shido.info/lisp/scheme4_e.html), un extrait d'un autre bon tutoriel sur le web sur Scheme
- [Interpréteur Scheme en ligne](https://inst.eecs.berkeley.edu/~cs61a/fa14/assets/interpreter/scheme.html), un interpréteur Scheme mis sur le web par l'université de Berkeley. Pratique pour tester sans installer
- [Why Scheme ?](https://www.shido.info/lisp/scheme1_e.html)
- [Installation sur macOS: Homebrew Scheme](https://formulae.brew.sh/formula/mit-scheme), page d'intallation de Scheme sous macOS via le gestionnaire de paquets Homebrew
- [Installation sur GNU/Linux](https://www.gnu.org/software/mit-scheme/), installation de Scheme sous GNU/Linux