Next:
Introduction
Up:
Traité de Programmation en
Previous:
Traité de Programmation en
 
Index
Contenu
Contenu
Introduction
Public
Objectifs
Choix du langage
Conventions
Organisation du livre
Common Lisp
Autour du langage
Histoire du langage
Processus de normalisation
Le modèle de développement
Mythes concernant Lisp
Mythe : Lisp est un langage interprété
Mythe : Lisp est lent
Mythe : Lisp n'est pas utilisé dans l'industrie
Mythe : Lisp n'a que des atomes et des listes
Mythe : Lisp sert uniquement en Intelligence Artificielle
Survol du langage
Applications visées
Types de données
Structures de contrôle
Extensions syntaxiques
Un bon style de programmation
Le premier programme
Expressions et évaluation
Objets auto-évaluants
Nombres
Caractères
Chaînes de caractères
Tableaux
Symboles
Expressions composées
Fonctions
Opérateurs spéciaux
Macros
Effets de bord
Suppression de l'évaluation
Common Lisp sous l'éditeur Emacs
L'éditeur Emacs
Le mode Lisp de Emacs
Déplacement de point
Suppression et modification
Indentation
Interaction avec le système Lisp
Types Simples
Booléens
Nombres
Les différents types de nombres
Prédicats
Comparaisons
Opérations artithmétiques simples
Trigonométrie
Trigonométrie hyperbolique
Logarithmes et exponentielles
Opérations bit à bit
Conversion, troncature, arrondi
Symboles
Prédicats sur les symboles
Variables lexicales et spéciales
mots-clés
Autres utilisations des symboles
Caractères
Chaînes de caractères
Fonctions
Définition de fonctions globales
Liste de paramètres
Paramètres requis
Paramètres facultatifs
Paramètre reste
Paramètres mots-clés
Exemples de listes de paramètres
Définitions de fonctions locales
Fonctions de première classe et anonymes
Appeler une fonction
Listes
Une suite de paires
Primitives pour la création de listes
Représentation externe
Listes généralisées
Opérations de base sur les listes
Prédicats
Tests d'égalité
Copie d'une liste
Concaténation
Renversement
Création de sous-listes
Fonctions d'accès aux éléments
Appartenance d'un élément à une liste
Fonctions diverses sur les listes
Listes pour représenter des piles
Fonctions d'application
mapc
mapcar
mapcan
mapl
maplist
mapcon
Utilisation avec plusieurs listes
Listes pour représenter des ensembles
Listes d'association
Tableaux et structures
Tableaux
Dimension et rang
Création et accès aux éléments
Vecteurs et séquences
Tableaux ajustables et déplacés
Structures
Tables de hachage
Blocs et Contextes
Blocs
Contextes
Conditionnelles
if
when et unless
cond
case
Itération
do
do*
dotimes
dolist
loop
L'évaluation non conditionnelle
Itération arithmétique
Répétition fixe
Itération avec des clauses simultanées
Itération sur les listes
Itération sur les vecteurs
Itération utilisant un calcul explicite
Evaluation au début et à la fin
Accumulation de valeurs
Itération conditionnelle
Terminaison explicite de la boucle
Variables locales
Valeurs multiples
Macros
Importance de l'abstraction syntaxique
Exemple de macro
Macros basiques
Quelques exemples
Un nouveau type de boucle
Création de contexte
Un exemple un peu plus compliqué
Difficultés avec les macros
Capture de variables
Multiples évaluations
Programmation orientée-objets
Objet
Type
Opération
Protocole
Classe et héritage
Spécificités CLOS
Classes et instances
Fonction générique
Méthode
Sélection
Héritage multiple
Comparaisons avec d'autres langages
Sauts non locaux
return et return-from
catch et throw
unwind-protect
Conditions
Situations exceptionnelles
Echecs
Epuisement de ressources
Autres
Le problème des situations exceptionnelles
Utilisation des conditions
Mécanisme
Traiter une condition
Signaler une condition
Flots
Prédicats
Fonctions d'entrée/sortie
Ouverture et fermeture d'un flot
Techniques de base
Objectifs des techniques
Lisibilité
Indentation et espacement
Indentation
Espacement
Choix des identificateurs
Commentaires
Portée des identificateurs
Performance
L'importance de la performance
Complexité asymptotique et autres facteurs
Performance et temps de développement
Micro-optimisation
Recommandations concernant la performance
Conteneurs, type concret
Représentation des conteneurs
Organisation des conteneurs
Séquences
Listes
Vecteurs
Vecteurs de bits
Vecteurs avec trou
Arbres
Arbres binaires de recherche
Arbres binaires équilibrés
Tas
Algorithmes de tri
Généralités
Algorithmes quadratiques
Tri par bulles
Tri par insertion
Algorithmes n log n
Tri par tas
Tri rapide
Tri par fusion
Algorithmes de tri linéaires
Utilisation de tables
Tables simples
Caches
Mémoïsation
Programmation modulaire
Introduction
Types abstraits
Nom et image mentale
Interface fonctionnelle ou impérative
Préconditions
Effet des opérations sur un objet du type
Valeurs de retour
Performance
Conteneurs, type abstrait
Ensemble général
Interface
Implémentation
Dictionnaire
Pile
Interface
Implémentations
File
Interface
Implémentations
Double file
Interface
Implémentations
Files de priorité
Interface
Implémentations
Annexes
Les deux niveaux de syntaxe de Common Lisp
Common Lisp et Scheme
Objectifs de la conception
Syntaxe
Espaces de noms
Fonctionnalités en Common Lisp inexistantes en Scheme
Fonctionnalités en Scheme inexistantes en Common Lisp
Définitions locales
Les booléens
Noms de certaines constructions
Les nombres
Ramasse-miettes
Le problème de la gestion de la mémoire
Ramasse-miettes classiques
Algorithmes de marquage et balayage
Algorithmes copiants
Ramasse-miettes générationnels
Ramasse-miettes temps-réel
Conséquences sur la programmation
Index
Robert STRANDH
2001-09-28