Quelques informaticien(ne)s célèbres

76
Quelques informaticien(ne)s célèbres Yann-Gaël Guéhéneuc Département de génie informatique et de génie logiciel This work is licensed under a Creative Commons Attribution-NonCommercial- ShareAlike 3.0 Unported License [email protected] Version 1.0 2013/04/22

description

De brèves présentations de quelques femmes et hommes qui ont marqué l'histoire de l'informatique

Transcript of Quelques informaticien(ne)s célèbres

Page 1: Quelques informaticien(ne)s célèbres

Quelquesinformaticien(ne)s

célèbres

Yann-Gaël Guéhéneuc

Département de génie informatique et de génie logiciel

This work is licensed under a Creative Commons Attribution-NonCommercial-

ShareAlike 3.0 Unported License

[email protected] 1.02013/04/22

Page 2: Quelques informaticien(ne)s célèbres

Questions / commentaires ? Envoyez-les à

2/76

Questions / commentaires ? Envoyez-les à[email protected]

Page 3: Quelques informaticien(ne)s célèbres

Pourquoi est-ce important ? (1/2)

« Ceux qui oublient leur histoire sont condamnés à la revivre »

3/76

—George Santayanadans Life of Reason, Reason

in Common Sense, Scribner’s,1905, page 284

Page 4: Quelques informaticien(ne)s célèbres

Pourquoi est-ce important ? (2/2)

� Théorème de Pythagore� Loi d’Ohm� …

4/76

� …

� Vous connaissez le Prix Nobel…… connaissez-vous le Prix Turing ?

Page 5: Quelques informaticien(ne)s célèbres

Comment choisir ? (1/2)

� Centaines de femmes et d’hommes ont fait et font l’histoire de l’informatique– Choix difficile, impossible

5/76

– Critères d’inclusion• Importance historique• Continuité historique• Lien avec le génie logiciel

– Aucun critère d’exclusion !

Page 6: Quelques informaticien(ne)s célèbres

Comment choisir ? (2/2)

� Des suggestions d’autres informaticiens qui devraient apparaître ici ?– Envoyez un courriel à Yann-Gaël Guéhéneuc

6/76

[email protected]

Page 7: Quelques informaticien(ne)s célèbres

Quelques informaticien(ne)s célèbres

1936 Alan Turing1948 Claude Elwood Shannon1950 Grace Murray Hopper1960 John McCarthy1966 Frances E. Allen

1972 Dave Parnas1974 Manny Lehman1975 Frederick Brooks1986 Edward Yourdon1987 Barbara Liskov

7/76

1966 Frances E. Allen1967 Dahl et Nygaard1969 Charles A. R. Hoare1970 Edgar F. Codd

1987 Barbara Liskov1994 Erich Gamma1997 Grady Booch

Page 8: Quelques informaticien(ne)s célèbres

Alan Turing

� Alan Mathison Turing– Né le 23 juin 1912, décédé le 7 juin 1954– Machines de Turing, indécidabilité, problème de

l’arrêt, théorie de la calculabilité

Alan Turing*1912 †1954

8/76

l’arrêt, théorie de la calculabilité

Le Prix Turing est donné en son honneur

IEEE Milestone…

– http://en.wikipedia.org/wiki/Alan_Turing

Page 9: Quelques informaticien(ne)s célèbres

Alan Turing

� 1928– Hilbert introduit le problème de l’arrêt

9/76

� 1931– Gödel discute les limites des preuves et de la

calculabilité

Page 10: Quelques informaticien(ne)s célèbres

Alan Turing

� 1936– Turing introduit un concept de machines

connues désormais comme les « machines de Turing »

10/76

de Turing »– Turing démontre sur ses machines que le

problème de l’arrête est indécidable

Page 11: Quelques informaticien(ne)s célèbres

Alan Turing

� Problème de l’arrêt– Premier problème démontré indécidable– Utilisé pour démontré que d’autres problèmes

sont indécidables par réduction

11/76

sont indécidables par réduction

Page 12: Quelques informaticien(ne)s célèbres

Alan Turing

� Généralisation ≠ cas particuliers– Preuves de correction sont possibles sur des

problèmes particuliers mais pas de façon automatique, générale

12/76

automatique, générale

� Méthodes formelles ≠ tests– Démontrent la correction d’un algorithme

particulier– Démontrent la présence d’erreurs

Page 13: Quelques informaticien(ne)s célèbres

Alan Turing

� 1938−1945– Travaille à Bletchley Park

• British Government Code and Cypher School• Cinq contributions majeures

13/76

• Cinq contributions majeures– Décoder le code Enigma de l’armée allemande– Déduire la procédure d’initialisation des machines Enigma

par la marine allemande– Développer une méthode statistique pour rendre la

« Bombe » plus efficace– Développer une procédure pour décoder les

machines Lorenz SZ 40/42– Développer un brouilleur de voix

Page 14: Quelques informaticien(ne)s célèbres

Alan Turing

� 1952– Test de Turing

� 1966– ELIZA

Joseph Weizenbaum*1923 †12008

14/76

Page 15: Quelques informaticien(ne)s célèbres

Claude Elwood Shannon

� Claude Elwood Shannon– Né le 30 avril 1916 et décédé le

24 février 2001– Père de la théorie de l’information

Claude Elwood Shannon*1916 †12001

15/76

– Père de la théorie de l’information

National Medal of Science aux USA en 1966IEEE Medal of Honor en 1966…

– en.wikipedia.org/wiki/Claude_Shannon

Page 16: Quelques informaticien(ne)s célèbres

Claude Elwood Shannon

� 1830s– Télégraphe – Code Morse

16/76

Page 17: Quelques informaticien(ne)s célèbres

Claude Elwood Shannon

� 1830s– Une forme de compression sans pertes

17/76

Page 18: Quelques informaticien(ne)s célèbres

Claude Elwood Shannon

� 1948

« The fundamental problem of communication is that of reproducing at one point, either exactly or

18/76

that of reproducing at one point, either exactly or approximately, a message selected at another point. »

—Shannon, dans A Mathematical Theory of Communication, 1948

Page 19: Quelques informaticien(ne)s célèbres

Claude Elwood Shannon

� 1948– Théorie probabiliste quantifiant le contenu

moyen d’un message en information

19/76

– Entropie– Théorie des codes

• Compréssion• Détection et correction des erreurs

– Toutes les « communications » électronique !

– Cryptographie

Page 20: Quelques informaticien(ne)s célèbres

Grace Murray Hopper

� Grace Murray Hopper (contre-amiral)– Née le 9 décembre 1906, décédée le 1

janvier 1992

Grace Hopper*1906 †1992

20/76

– Mère du premier compilateur, du terme debugging, de COBOL et des standards

Defense Distinguished Service Medal aux USA en 1986

– Cf. http://en.wikipedia.org/wiki/Grace_Hopper

Page 21: Quelques informaticien(ne)s célèbres

Grace Murray Hopper

� 1944– La seconde guerre mondiale est sur le point

de finir– Les calculateurs ont fait leurs preuves…

21/76

– Les calculateurs ont fait leurs preuves…• Dehomag D11 (Allemagne/USA, 1930s) : gestion

des fiches d’identité• Zuse Z3 (Allemagne, 1941) : calcul du flottement

de décrochage• Colossus Mark 1 (Grande Bretagne, 1943) :

déchiffrement de messages• Harvard Mark I (USA, 1944) : production de tables

de calculs pour la marine de guerre

Page 22: Quelques informaticien(ne)s célèbres

Grace Murray Hopper

� Principe des calculateurs– Relais

électromécaniques ou

22/76

électromécaniques ou électromagnétiques

– Deux relais actifs rendent un troisième relais actif

• Relais « 3 » et « 6 » rendent relais « 9 » actifs pour une addition 1947

Page 23: Quelques informaticien(ne)s célèbres

Grace Murray Hopper

� 1950– Les calculateurs deviennent des ordinateurs

programmables avec des langages de plus haut-niveau que le microcode ou l’assembleur

23/76

haut-niveau que le microcode ou l’assembleur• UNIVAC I : recensement• A-0 (Arithmetic Language version 0)• Chargeur ou lieur plus que compilateur

� 1954– B-0 (Business Language version 0) aussi connu

comme FLOW-MATIC

Page 24: Quelques informaticien(ne)s célèbres

Grace Murray Hopper

� 1959– Conférence CODASYL (Conference on Data

Systems Languages)– COBOL comme successeur de FLOW-MATIC

24/76

– COBOL comme successeur de FLOW-MATIC– Proche de l’anglais

� 1970s– Avocate de tests standards pour les langages et

FORTRAN en particulier

Page 25: Quelques informaticien(ne)s célèbres

John McCarthy

� John McCarthy– Né le 4 septembre 1927– Décédé le 24 octobre 2011– Père de l’intelligence artificielle, de LISP, contributeur

John McCarthy*1927 †2011

25/76

– Père de l’intelligence artificielle, de LISP, contributeur aux systèmes à temps partagé, inventeur du « SaaS »

ACM Turing Award en 1971National Medal of Science aux USA en 1991

– Cf. http://en.wikipedia.org/wiki/John_McCarthy_(computer_scientist)

Page 26: Quelques informaticien(ne)s célèbres

John McCarthy

� Intelligence artificielle, 1956– Champion de la programmation logique– Collaboration avec Marvin Minsky

26/76

� Inventeur de LISP, 1960– Recursive Functions of Symbolic

Expressions and Their Computation by Machine, Part I, 1960

– Lambda calcul– Ramasse-miettes

Page 27: Quelques informaticien(ne)s célèbres

John McCarthy

� Système à temps-partagé– Multiprogrammation et multitâches– Changement de paradigme le plus important en

informatique en 1970

DEC PDP-1, c. 1960

27/76

informatique en 1970• Partage des ressources pour éviter la « perte de

temps de calculs »

– SaaS

• Software as a Service

• Architecture/ingénierie basée sur les services

Page 28: Quelques informaticien(ne)s célèbres

Frances E. Allen

� Frances E. Allen– Né le 4 août 1932– Pionnière de la compilation optimisée,

optimisation du code et parallélisation

Frances E. Allen*1932

28/76

optimisation du code et parallélisation

AWC Augusta Ada Lovelace Award en 2002ACM Turing Award en 2006

– Cf. http://en.wikipedia.org/wiki/Frances_E._Allen

Page 29: Quelques informaticien(ne)s célèbres

Frances E. Allen

� Avant 1966– Depuis les années 30

• Ordinateurs programmables

– Depuis les années 50

29/76

– Depuis les années 50• Premiers compilateurs par Grace Murray Hopper• Langages de programmation

– FORTRAN : premier compilateur complet– COBOL : premier langage compilé pour différentes

architectures machines (UNIVA II et RCA 501)

Page 30: Quelques informaticien(ne)s célèbres

Frances E. Allen

� Avant 1966– En 1955

• Grammaires non-contextuelles inventées par Noam Chomsky

30/76

Noam Chomsky

– En 1966• LR Parsing inventé par Donald Knuth

Page 31: Quelques informaticien(ne)s célèbres

Frances E. Allen

� En 1966– Program Optimization

• Introduction des graphes pour décrire les programmes et permettre leurs optimisations

31/76

� En 1970– Control Flow Analysis et A Basis for Program

Optimization

• Intervalles pour les analyses du flot de contrôle

� En 1974– Interprocedural data flow analysis

• Analyses inter-procédurales de programmes complets

Page 32: Quelques informaticien(ne)s célèbres

Dahl–Nygaard

� Ole-Johan Dahl– Né le 12 octobre 1931, †29 juin 2002– Co-créateur du paradigme des objets

Ole-Johan Dahl*1931 †2002

32/76

– ACM Turing Award en 2001– IEEE J. von Neumann en 2002

– Cf. http://www.olejohandahl.info/– Cf. http://en.wikipedia.org/wiki/Ole-Johan_Dahl

Page 33: Quelques informaticien(ne)s célèbres

Dahl–Nygaard

� Kristen Nygaard– Né le 27 août 1926, †10 août 2002– Co-créateur du paradigme des objets

Kristen Nygaard*1926 †2002

33/76

– ACM Turing Award en 2001– IEEE J. von Neumann en 2002

– Cf. http://www.ifi.uio.no/in_memoriam_kristen/– Cf. http://en.wikipedia.org/wiki/Kristen_Nygaard

Page 34: Quelques informaticien(ne)s célèbres

Dahl–Nygaard

� Paradigme des objets– Contexte

• 1961– Le langage de programmation impérative Algol

34/76

– Le langage de programmation impérative Algol

– Classes, objets, encapsulation, héritage, polymorphisme

• Simula I• Simula 67

Page 35: Quelques informaticien(ne)s célèbres

Dahl–Nygaard

� Programmation par objets– Smalltalk

• Xerox Parc, 1970–1983– GUI

35/76

– GUI– Icônes– WYSIWYG– Souris (cf. Stanford Research Institute)

• Alan Kay

• Typage dynamique• Réflexion• Ramasse-miettes

Page 36: Quelques informaticien(ne)s célèbres

Dahl–Nygaard

� Programmation par objets– C++

• AT&T Bell Labs• Bjarne Stroustrup

36/76

• Bjarne Stroustrup• 1980

• Typage statique• Héritage multiple

• Cf. http://www.approximity.com/ruby/ Comparison_rb_st_m_java.html

Page 37: Quelques informaticien(ne)s célèbres

Dahl–Nygaard

� Programmation par objets– Oberon

• ETH Zurich• Niklaus Wirth

37/76

• Niklaus Wirth• 1986

• Typage statique• Ramasse-miettes• Vérification des bornes des tableaux

Page 38: Quelques informaticien(ne)s célèbres

Charles A. R. Hoare

� Sir Charles Antony Richard Hoare – Né le 11 janvier 1934– Inventeur de QuickSort

Sir Charles Antony Richard Hoare*1934

38/76

– Inventeur de la logique de Hoare–– ACM Turing Award en 1980– IEEE J. von Neumann en 2011

– Cf. http://en.wikipedia.org/wiki/C._A._R._Hoare

Page 39: Quelques informaticien(ne)s célèbres

Charles A. R. Hoare

� QuickSort– Contexte

• 1960– En Union Soviétique, Hoare travaille à l’Université d’état de

39/76

– En Union Soviétique, Hoare travaille à l’Université d’état de Moscou en traduction automatique

– Il doit trier des mots à traduire pour les mettre en correspondance avec des mots déjà triés et traduits

– QuickSort

• O(n × log(n)) en moyenne, O(n2) au pire• Fonctionne bien avec un cache

Page 40: Quelques informaticien(ne)s célèbres

Charles A. R. Hoare

� Logique de Hoare– Contexte

• 1969– Étude de la correction d’un programme

40/76

– Étude de la correction d’un programme– Idée originale semée par Robert Floyd en 1967

– Vérification de la correction d’un programme

• Triplet de Hoare : {P} C {Q}• Pré-condition P, instruction C, post-condition Q• Ensemble de règles pour des langages impératifs…

Page 41: Quelques informaticien(ne)s célèbres

Edgar F. Codd

� Edgar Frank « Ted » Codd– Né le 23 août 1913 et décédé

le 18 avril 2003– Père de l’algèbre relationnelle

Edgar F. Codd*1923 †12003

41/76

– Père de l’algèbre relationnelle

ACM Turing Award en 1999

– http://en.wikipedia.org/wiki/Edgar_F._Codd

Page 42: Quelques informaticien(ne)s célèbres

Edgar F. Codd

� 1960s– Les bases de données deviennent possible

• Mémoire de stockage à accès direct

– Pas de modèles de données et de requêtes

42/76

– Pas de modèles de données et de requêtes standards

– Deux modèles dominants• CODASYL, modèle réseau

– Parcours « manuel »

• IBM/IMS, modèle hiérarchique– Relations 1:n seulement

(Microsoft Windows Registry)

Page 43: Quelques informaticien(ne)s célèbres

Edgar F. Codd

� 1970– « A Relational Model of Data for Large Shared

Data Banks »• Limites de l’approche CODASYL

Lawrence Joseph "Larry" Ellison*1944

43/76

• Limites de l’approche CODASYL• Introduction du concept de tables• Introduction du concept de relation (clés)

– IBM Future Systems implante SEQUEL en 1975– Relational Software Inc. livre Oracle en 1979

(SEQUEL devient SQL fin années 1970)

Page 44: Quelques informaticien(ne)s célèbres

Edgar F. Codd

� Aujourd’hui– SQL est un standard

• ANSI depuis 1986• ISO depuis 1987

44/76

• ISO depuis 1987

– Implanté par pratiquement toutes les bases de données existantes

– Interopérabilité• Attention aux extensions propriétaires• Attention aux ambiguïtés

Page 45: Quelques informaticien(ne)s célèbres

Edgar F. Codd

45/76

Page 46: Quelques informaticien(ne)s célèbres

Edgar F. Codd

� NoSQL– http://nosql-database.org/– http://www.10gen.com/nosql

46/76

Page 47: Quelques informaticien(ne)s célèbres

Dave Parnas

� Dave Parnas– Né le 10 février 1941– Père des critères de décomposition en

conception modulaire

Dave Parnas*1941

47/76

conception modulaire

IEEE Computer Society 60th Anniversary Award en 2007

– Cf. http://en.wikipedia.org/wiki/David_Parnas

Page 48: Quelques informaticien(ne)s célèbres

Dave Parnas

� Conception modulaire– Contexte

• 1972– Langages de

48/76

– Langages de programmation impératifs et par objets

– Diagrammes de flots – Décomposition des

programmes en modules, classes…

Page 49: Quelques informaticien(ne)s célèbres

Dave Parnas

– Critères• “[I]t is almost always incorrect to begin the

decomposition of a system into modules on the basis of a flowchart. We propose instead that one begins

49/76

of a flowchart. We propose instead that one begins with a list of difficult design decisions or design decisions which are likely to change. Each module is then designed to hide such a decision from the others”

• Information hiding = Encapsulation

Page 50: Quelques informaticien(ne)s célèbres

Dave Parnas

– Révision du critère en termes de• Cohésion• Couplage

50/76

• Concepts « inventés » par Larry Constantine en 1968 et publié en 1974, dans W. Stevens, G. Myers, L. Constantine, "Structured Design", IBM Systems Journal, 13 (2), 115-139, 1974.

• Un module doit avoir une forte cohésion et un fable couplage avec les autres modules

Page 51: Quelques informaticien(ne)s célèbres

Manny Lehman

� Meir M. « Manny » Lehman– Décédé le 29 décembre 2010– Père des lois de l’évolution

Manny Lehman*1925 †2010

51/76

Stevens Award en 2003

– Cf. http://www.doc.ic.ac.uk/news/archive/story/ manny-lehman

– Cf. http://www.ieeeghn.org/wiki/index.php/Oral-History:Meir_Lehman

Page 52: Quelques informaticien(ne)s célèbres

Manny Lehman

� Lois de l’évolution logicielle– Contexte

• 1974– IBM OS/360 et OS/370

52/76

– IBM OS/360 et OS/370

• Types de programmes– S : peuvent être spécifiés formellement– P : sont soumis à un processus itératif– E : sont partis intégrante de notre environnement

Page 53: Quelques informaticien(ne)s célèbres

Manny Lehman

– Huit lois1. Continuing change: E-type systems must be continually

adapted or they become progressively less satisfactory2. Increasing complexity: As an E-type system evolves its

complexity increases unless work is done to maintain or

53/76

complexity increases unless work is done to maintain or reduce it

3. Self regulation: E-type system evolution process is self regulating with distribution of product and process measures close to normal

4. Conservation of organisational stability: The average effective global activity rate in an evolving E-type system is invariant over product lifetime

Page 54: Quelques informaticien(ne)s célèbres

Manny Lehman

– Huit lois5. Conservation of familiarity: As an E-type system evolves all

associated with it must maintain mastery of its content and behaviour to achieve satisfactory evolution. The average incremental growth remains invariant as the system evolves

54/76

incremental growth remains invariant as the system evolves6. Continuing growth: The functional content of E-type systems

must be continually increased to maintain user satisfaction over their lifetime

7. Declining quality: The quality of E-type systems will appear to be declining unless they are rigorously maintained and adapted to operational environment changes

8. Feedback system: E-type evolution processes constitute multi-level, multi-loop, multi-agent feedback systems and must be treated as such to achieve significant improvement over any reasonable base

Page 55: Quelques informaticien(ne)s célèbres

Frederick Brooks

� Frederick Brooks– Né le 19 avril 1931– Père de la loi de Brooks

Frederick Brooks*1931

55/76

– IEEE J. von Neumann Medal en 1993– ACM Turing Award en 1999

– Cf. http://en.wikipedia.org/wiki/Fred_Brooks

Page 56: Quelques informaticien(ne)s célèbres

Frederick Brooks

� Principe de la loi de Brooks– Contexte

• 1956–1964– Gestionnaire du projet de développement du IBM OS/360

56/76

– Gestionnaire du projet de développement du IBM OS/360– Retards dans la livraison

– Livre• The Mythical Man-Month: Essays on Software

Engineering

– Principe• Adding manpower to a late software project

makes it later

Page 57: Quelques informaticien(ne)s célèbres

Frederick Brooks

– Raisons• It takes some time for the people added to a

project to become productive. Brooks calls this the "ramp up" time. New workers must first become

57/76

"ramp up" time. New workers must first become educated about the work that has preceded them; also integrate with a team composed of multiple engineers who must educate the new worker in their area of expertise in the code base, day by day

• Communication overheads increase as the number of people increases. The number of different communication channels increases along with the square of the number of people

Page 58: Quelques informaticien(ne)s célèbres

Frederick Brooks

– Commentaires, solutions• Brooks' Law often applies to projects that are already

late• The quantity, quality and role of the people added to

58/76

• The quantity, quality and role of the people added to the project also must be taken into consideration

• Good management and development practices also help to minimize the impact of Brooks' Law

• Rather than depending on heroes to carry the day with extraordinary efforts, Wiegers argues that a team of ordinarily-skilled individuals can repeatedly deliver timely results in the right work environment

Page 59: Quelques informaticien(ne)s célèbres

Frederick Brooks

– Critiques“How to quadruple your productivity with an army of student interns”

59/76

• Tolerate a little crowding• Locate next to a deep pool of hackers• Know who the best people are and only hire them• Pay well• Divide tasks to be as loosely-coupled as possible• Design your intern projects in advance

Page 60: Quelques informaticien(ne)s célèbres

Edward Yourdon

� Edward Yourdon– Né le 30 avril 1944– Promoteur des sept types de cohésion

Edward Yourdon*1944

60/76

– Cf. http://en.wikipedia.org/wiki/Edward_Yourdon

Page 61: Quelques informaticien(ne)s célèbres

Edward Yourdon

� Conception modulaire– Contexte

• 1972– Langages de

61/76

– Langages de programmation impératifs et par objets

– Diagrammes de flots – Décomposition des

programmes en modules, classes…

• 1987– Boom du paradigme de

la programmation par objets

Page 62: Quelques informaticien(ne)s célèbres

Edward Yourdon

– Critère de cohésion1. Accidentel : décrivant le niveau le plus faible où le

lien entre les différentes méthodes est inexistant ou bien créé sur la base d'un critère futile

62/76

bien créé sur la base d'un critère futile– Classes utilitaires

2. Logique : lorsque les méthodes sont reliées logiquement par un ou plusieurs critères communs– Toutes les classes qui traitent des matériels d’entrée,

souris, clavier, etc.

3. Temporel : lorsque les méthodes doivent être appelées au cours de la même période de temps– Une méthode appelée dans un « catch », etc.

Page 63: Quelques informaticien(ne)s célèbres

Edward Yourdon

– Critère de cohésion4. Procédural : lorsque les méthodes doivent être

appelées dans un ordre spécifique– Une méthode qui vérifie les permissions et une méthode

63/76

– Une méthode qui vérifie les permissions et une méthode qui ouvre un fichier

5. Communicationnel : lorsque les méthodes manipulent le même ensemble spécifique de données– Toutes les classes qui portent sur des dates, etc.

Page 64: Quelques informaticien(ne)s célèbres

Edward Yourdon

– Critère de cohésion6. Séquentiel : lorsque les méthodes qui manipulent

le même ensemble de données doivent être appelées dans un ordre spécifique

64/76

appelées dans un ordre spécifique– Un analyseur syntaxique : les entrées d’une classe

provient des sorties d’une autre

7. Fonctionnel : réalise le niveau le plus élevé lorsque la classe ou le module est dédié à une seule et unique tâche bien spécifique– Classes qui contribuent à remplir un même besoin

Page 65: Quelques informaticien(ne)s célèbres

Barbara Liskov

� Barbara Liskov– Née le 7 novembre 1939– Mère du principe de substitution de Liskov

Barbara Liskov*1939

65/76

– IEEE J. von Neumann Medal en 2004– ACM Turing Award en 2008

– Cf. http://en.wikipedia.org/wiki/ Liskov_substitution_principle

Page 66: Quelques informaticien(ne)s célèbres

Barbara Liskov

� Principe de substitution de Liskov– Contexte

• 1987– Boom du paradigme de la programmation par objets

66/76

– Boom du paradigme de la programmation par objets

– Principe• Let q(x) be a property provable about objects x

of type T. Then q(y) should be true for objects y of type S where S is a subtype of T

Page 67: Quelques informaticien(ne)s célèbres

Barbara Liskov

– Principe• Sous-typage comportemental différent et plus fort que la notion

de sous-typage en théorie des types• En théorie des types

– Contravariance des paramètres : un paramètre peut être « réduit »

67/76

– Contravariance des paramètres : un paramètre peut être « réduit » de S à T, pour éviter une confusion de la méthode a appeler

– Covariance du type de retour : le type de retour peut être « agrandit » de T à S, pour permettre aux méthodes gabarits de fonctionner avec les méthodes surchargées

• En plus– Les pré-conditions ne peuvent plus fortes dans un sous-type– Les post-conditions ne peuvent être moins forte dans S– Le sous-type S doit conserver les invariants du type T

Page 68: Quelques informaticien(ne)s célèbres

Barbara Liskov

– Mise en pratique dans Java• Java < 1.5

– Redéfinition /* Classe mère */ public T foo(String a, String b) {...}

68/76

/* Classe fille */ public T foo(String a, String b) {...}

– Surcharge/* Classe mère */ public T foo(String a, String b) {...} /* Classe fille */ public T foo(String a, Integer c) {...}

• Java > 1.5– Redéfinition

/* Classe mère */ public T foo(String a, String b) {...} /* Classe fille */ public S foo(String a, String b) {...}

Page 69: Quelques informaticien(ne)s célèbres

Erich Gamma

� Erich Gamma– Né en 1961– Père des patrons de conception logiciel

Erich Gamma*1961

69/76

Dahl-Nygaard Prizes en 2006

– Cf. http://en.wikipedia.org/wiki/Erich_Gamma– Cf. http://c2.com/cgi/wiki?ErichGamma

Page 70: Quelques informaticien(ne)s célèbres

Erich Gamma

� Patrons de conception logiciel– Contexte

• 1977 et 1979– Christopher Alexander

70/76

– Christopher Alexander– A Pattern Language: Towns, Buildings, Construction et

l’idée de « generative patterns »– The Timeless Way of Building et l’idée de perfection en

architecture

• 1990– Les programmes par objets sont parmi nous…

Page 71: Quelques informaticien(ne)s célèbres

Erich Gamma

� A Pattern Language: Towns, Buildings, Construction

– 253 patrons– Grammaire générative– « At the core... is the idea that people should design for

themselves their own houses, streets and communities.

71/76

themselves their own houses, streets and communities. This idea... comes simply from the observation that most of the wonderful places of the world were not made by architects but by the people »

� Design Patterns: Elements of Reusable Object-Oriented Software

– 23 patrons– Pas un langage ?– « Dynamic, highly parameterized software is harder to

understand and build than more static software »

Page 72: Quelques informaticien(ne)s célèbres

Erich Gamma

� Design Patterns: Elements of Reusable Object-Oriented Software

72/76

Software

– Dahl-Nygaard Prizes à • Ralph Johnson• Richard Helm• Erich Gamma• † John Vlissides

Page 73: Quelques informaticien(ne)s célèbres

Grady Booch

� Grady Booch– Né le 27 février 1955– Père de UML avec I. Jacobson et J. Rumbaugh

Grady Booch*1955

73/76

Stevens Award en 2003

– Cf. http://en.wikipedia.org/wiki/Grady_Booch

Page 74: Quelques informaticien(ne)s célèbres

Grady Booch

� UML– Contexte

74/76

Page 75: Quelques informaticien(ne)s célèbres

Grady Booch

– Three Amigos and their methods• Grady Booch,

– Booch Method (design)

• Ivar Jacobson

75/76

• Ivar Jacobson– Objecto Oriented Softwre Engineering, OOSE (use cases)

• James Rumbaugh– Object Modeling Technique, OMT (analysis)

• Rational Software Corporation

– UML

Page 76: Quelques informaticien(ne)s célèbres

À suivre…

� ACM A. M. Turing Award– Cf. http://awards.acm.org/homepage.cfm?

awd=140

AITO Dahl-Nygaard Prize

76/76

� AITO Dahl-Nygaard Prize– http://www.aito.org/Dahl-Nygaard/

� IEEE J. von Neumann Medal– Cf. http://www.ieee.org/about/awards/bios/

vonneumann_recipients.html