source: trunk/doc/xpday_fp.txt @ 2

Revision 2, 2.8 KB checked in by dom, 5 years ago (diff)

Importing revision 150 of XP Dojo from BerliOS

Line 
1XP ET PROGRAMMATION FONCTIONNELLE
2
3  Nicolas Charpentier, Dominic Williams
4
5PLAN DE LA PRESENTATION (1h30)
6
7- Introduction aux langages fonctionnels
8- Survol du langage Erlang
9- Testabilité
10  - complexité des tests orientés objet
11  - simplicité des tests fonctionnels
12  - symbiose entre TDD et programmation par cas
13  - lamba, the ultimate mock
14  - programmation concurrente
15- DSL
16- Questions, discussion
17
18INTRO
19
20- La place du langage dans XP
21- Lisp (1958), ML (1977), Haskell (1987), Erlang (1991)...
22- Le paradigme fonctionnel
23  - fonctions pures (pas d'effets de bord, pas d'état)
24  - valeurs immuables, évaluation
25  - transparence référentielle
26- Les caractéristiques:
27  - fonctions de premiÚre classe
28  - pas d'assignation
29  - filtrage (programmation par cas)
30  - style récursif
31  - clÃŽtures lexicales
32  - structures natives (notamment listes)
33  - constructeur d'ensemble
34  - typage dynamique (ou inférence)
35  - gestion de mémoire automatique (ramasse-miette)
36- Programmes courts, concision, expressifs, corrects et robustes
37
38SURVOL DU LANGAGE ERLANG
39
40- Langage 'industriel' supporté par Ericsson
41- Langage fonctionnel
42- Support 'natif' de parallélisme
43- Fonctionnement
44  - Machine virtuelle
45  - ByteCode chargé dynamiquement
46  - Machine virtuelle embarque un interpreteur
47- Librairies fournies dans le package:
48  - compilateur, debuggeur, profiler,
49  - Base de données reparties (Mnésia)
50  - ORB Corba
51  - Serveur HTTP
52  - GS: interfae graphique basée sur TK
53- Extensions pour la programmation distribuée
54  - Framework OTP
55  - Communication entre les machines virtuelles
56
57TESTABILITE
58
59- tests canoniques
60- les problÚmes avec les objets:
61  - initialisation
62  - types de retour multiples ou complexes
63  - interrogation de l'état
64  - propagation des effets (modÚle, relations)
65  - héritage
66- les solutions fonctionnelles:
67  - structures de données dynamiques
68  - filtrage
69
70Exemple de test unitaire fonctionnel:
71
72unique_test() ->
73  [] = unique([]),
74  [1, 3, 8] = unique([1, 3, 8]),
75  [1, 3, 6, 12] = unique([1, 1, 3, 1, 6, 12, 6, 1]).
76
77PROGRAMMATION PAR CAS (logique)
78
79- Exemple: contains/2
80
81LAMBDA, THE ULTIMATE MOCK
82
83- Test, code... et abstraction
84- Objet: héritage, interfaces... et mocks
85- Fonctionnel: fonction d'ordre supérieur
86  - interface intrinsÚque
87  - passage nécessaire en argument
88  - lambda
89  - filtrage et typage dynamique
90- Exemple: first/2
91
92PROGRAMMATION CONCURRENTE
93
94- Beaucoup d'applications sont multi-threadées
95- Sont elle testable ?
96  - oui mais pas facilement
97- Est on certain du résultat ?
98  - non
99- Faiblesses conceptuelles du 'multithreading'
100  - Développement thread-safe et YAGNI
101  - Décourage l'encapsulation
102
103- ModÚle Erlang
104  - Processus léger
105  - Processus isolés
106  - Aucunes données partagées
107  - Basé sur l'échange de messages asynchrones
108   
109
110DSL
111
112QUESTIONS
Note: See TracBrowser for help on using the repository browser.