Le cours a un
site! Vous y trouverez de
nombreuses informations. Le cours figure également sur le cédérom de
l'UFR d'informatique qui contient l'environnement DrScheme que vous
utiliserez en Travaux Pratiques (pour Linux, Windows, Mac et quelques
autres types de machines encore). Visitez régulièrement le site de
chez vous ou de l'UTES (qui dispose également de DrScheme).
Le but de ce cours est de faire percevoir la nature de l'informatique,
vue comme une science, par le biais du processus d'évaluation.
Le processus d'évaluation convertit un texte décrivant un traitement
en un programme qui, s'exécutant, consomme et produit de
l'information. Ce processus est à la base de la compréhension de ce
que sont les évaluateurs (interprètes ou compilateurs) inclus dans les
applicatifs complexes (texteur ou tableur); il permet d'introduire les
principes fondateurs de la programmation (séquence, alternative,
récursion).
Pour ce but, un langage de programmation est choisi: Scheme. Scheme
est l'un des plus simples langages qui soit (il comporte moins d'une
dizaine de concepts combinables sans restriction), c'est un langage
fonctionnel (pour les connaisseurs, il est également strict et non
pur). De plus, ce cours se restreindra à un petit sous-ensemble de
Scheme (sans effets de bord et sans trop de fonctionnalité d'ordre
supérieur) bref, un simple mais confortable système de réécriture.
Le choix d'un langage de programmation est toujours délicat car
l'informatique (comme la musique) passe par la programmation (le
solfège) et requiert, pour être dominée, de nombreuses
expérimentations (gammes). On ne s'improvise programmeur (musicien),
on le devient à force d'exercices et de réflexions sur sa pratique.
Un langage trop complexe ou dont on ne peut isoler un sous-ensemble
cohérent obscurcit le propos qui est de présenter des idées
fondamentales sous-tendant l'informatique (tombent dans cette
catégorie Ada, C, C++, Java pour ne parler que des plus courants). Un
langage trop pauvre ne permet pas non plus d'atteindre cet objectif de
par l'immensité de ce qu'il faut mettre en branle pour résoudre le
moindre problème. Les langages fonctionnels n'occupent pas le devant
de la scène pour des raisons historiquement complexes mais sont le
véhicule de choix pour cet apprentissage.
Scheme avec sa syntaxe minimale, son faible nombre de concepts, son
interactivité permettant d'obtenir instantanément des résultats (sans
passer par un cycle de compilation -- édition de liens -- exécution),
ses capacités d'abstraction et la qualité du système
DrScheme emportent
l'adhésion. Scheme est également le seul langage dont la définition
peut s'écrire dans le langage même avec une taille raisonnable (100
lignes pour les versions minimales, 500 lignes pour la version
présentée en cours). Tout langage de haut niveau peut se définir en
lui-même mais un compilateur Pascal fait de l'ordre de 15 000 lignes,
un compilateur C de l'ordre de 30 000 lignes, un compilateur Ada de
l'ordre de 200 000 lignes.
Les buts sont donc:
-
la maîtrise d'un système de calcul (Scheme),
- l'emploi de la récursion et de structures de données récursives
(listes, grammaires, expressions symboliques),
- la compréhension du processus d'évaluation (langage, interprète,
compilateur).
L'enseignement sera divisé en trois « saisons » (et oui, comme dans
les séries à la télévision) correspondant à:
-
récursion et listes
- grammaire et expressions symboliques
- évaluateur