Some Well-known computer scientists
-
Upload
yann-gael-gueheneuc -
Category
Documents
-
view
2.003 -
download
4
description
Transcript of Some Well-known computer scientists
Some
Well-known
Computer Scientists
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
Version 1.0
2013/04/22
Why Is It Important? (1/2)
“Those who cannot remember the past are
condemned to repeat it”
3/76
—By George Santayanain Life of Reason, Reason in
Common Sense, Scribner's,
1905, page 284
Why Is It Important? (2/2)
� Pythagoras’ theorem
� Ohm’s law
� …
4/76
� …
� You know the Nobel Prizes…
… do you know the Turing Awards?
How to Choose? (1/2)
� Hundreds of women and men made and are
making the history of computer science
– Difficult choice, impossible choice
5/76
– Inclusion criteria
• Historical importance
• Historical continuity
• Link to software engineering
– No exclusion criteria!
How to Choose? (2/2)
� Suggestions for other computer scientists to
appear here
– Please send an e-mail to Yann-Gaël Guéhéneuc
6/76
Some Well-known Computer Scientists
1936 Alan Turing
1948 Claude Elwood Shannon
1950 Grace Murray Hopper
1960 John McCarthy
1966 Frances E. Allen
1972 Dave Parnas
1974 Manny Lehman
1975 Frederick Brooks
1986 Edward Yourdon
1987 Barbara Liskov
7/76
1966 Frances E. Allen
1967 Dahl et Nygaard
1969 Charles A. R. Hoare
1970 Edgar F. Codd
1987 Barbara Liskov
1994 Erich Gamma
1997 Grady Booch
Alan Turing
� Alan Mathison Turing
– Born June 23rd, 1912, died June 7th, 1954
– Turing machines, undecidability, halting problem, computability
Alan Turing
*1912 †1954
8/76
problem, computability
The Turing Award is given in his honour
IEEE Milestone
…
– http://en.wikipedia.org/wiki/Alan_Turing
Alan Turing
� 1928
– Hilbert introduced the decision problem
9/76
� 1931
– Gödel give results on the limits of proofs and computability
Alan Turing
� 1936
– Turing introduce a concept of machines now known as “Turing machines”
– Turing prove with his machines that the halting
10/76
– Turing prove with his machines that the halting problem is undecidable
Alan Turing
� Halting problem
– First problem proven undecidable
– Used to prove that other problems are undecidable by reduction
11/76
undecidable by reduction
Alan Turing
� Generalisation ≠ particular cases
– Correctness proofs are posibles but on particular problems and not automatically in the general case
12/76
general case
� Formal methods ≠ tests
– Prove the correctness of a particular algorithm
– Prove the presence of errors
Alan Turing
� 1938−1945
– Work at Bletchley Park
• British Government Code and Cypher School
• Five major contributions
13/76
• Five major contributions
– Decode the Enigma code of the German army
– Decode the indicator procedure of the Enigma use by the
German navy
– Develop a statistical method to make the “Bombe”
more efficient
– Develop a procedure to decode the
Lorenz SZ 40/42 machines
– Develop a voice scrambler
Alan Turing
� 1952
– Turing test
� 1966
– ELIZAJoseph Weizenbaum
*1923 †12008
14/76
Claude Elwood Shannon
� Claude Elwood Shannon
– Born April 30th, 1916, died February 24th, 2001
– Father of the information theory
Claude Elwood Shannon
*1916 †12001
15/76
– Father of the information theory
National Medal of Science in the USA in 1966
IEEE Medal of Honor in 1966
…
– en.wikipedia.org/wiki/Claude_Shannon
Claude Elwood Shannon
� 1830s
– Telegraph – Morse Code
16/76
Claude Elwood Shannon
� 1830s
– A form of lossless compression
17/76
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, in A Mathematical
Theory of Communication, 1948
Claude Elwood Shannon
� 1948
– Probabilistic theory quantifying the average information content of a message
19/76
– Entropy
– Code theory
• Compression
• Detection et correction of errors
– All electronic “communication”!
– Cryptography
Grace Murray Hopper
� Grace Murray Hopper (rear admiral)
– Born the 9th of December, 1906, died the 1st of January, 1992
– Mother of the first compiler, of the term
Grace Hopper
*1906 †1992
20/76
– Mother of the first compiler, of the term “debugging”, of COBOL and of standards
Defense Distinguished Service Medal in the USA in 1986
– Cf. http://en.wikipedia.org/wiki/Grace_Hopper
Grace Murray Hopper
� 1944
– WWII is almost over
– Computers showed their usefulness
21/76
• Dehomag D11 (Germany/USA, 1930s):
handling of identify cards
• Zuse Z3 (Germany, 1941): flutter
(dynamic aeroelasticity of wings)
• Colossus Mark 1 (Grande Bretagne,
1943): decoding of messages
• Harvard Mark I (USA, 1944): production
of calculus tables for the Navy
Grace Murray Hopper
� Principle of the first computers
– Electromechanical or
electromagnetic relays
22/76
electromagnetic relays
– Two active relays make
a third relay active
• Relays “3” et “6” make
relay “9” active for a sum
1947
Grace Murray Hopper
� 1950
– Computers become programmable with higher-level languages than microcode or assembly
• UNIVAC I: census
23/76
• UNIVAC I: census
• A-0 (Arithmetic Language version 0)
• Loader or linker more than a compiler
� 1954
– B-0 (Business Language version 0) also known as FLOW-MATIC
Grace Murray Hopper
� 1959
– Conference CODASYL (Conference on Data Systems Languages)
– COBOL as successor of FLOW-MATIC
24/76
– COBOL as successor of FLOW-MATIC
– Close to English
� 1970s
– Advocated standards tests for programming languages, FORTRAN in particular
John McCarthy
� John McCarthy
– Born the 4th of September, 1927
– Died on the 24 October, 2011
– Father of artificial intelligence, LISP, contributor to time-
John McCarthy
*1927 †2011
25/76
– Father of artificial intelligence, LISP, contributor to time-
sharing computing, inventor of “SaaS”
ACM Turing Award in 1971
National Medal of Science in the USA in 1991
– Cf. http://en.wikipedia.org/wiki/John_McCarthy_(computer_scientist)
John McCarthy
� Artificial intelligence, 1956
– Champion of logic programming
– Collaboration with Marvin Minsky
26/76
� Inventor of LISP, 1960
– Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I, 1960
– Lambda calculus
– Garbage collection
John McCarthy
� Time-sharing systems
– Multiprogramming and multitasking
– Most important change of paradigm in computer science in 1970
DEC PDP-1, c. 1960
27/76
science in 1970
• Sharing of resources to avoid “waiting computation
time (cycles)”
– SaaS
• Software as a Service
• Architecture/engineering based on services
Frances E. Allen
� Frances E. Allen
– Born on the 4th of August, 1932
– Pioneer of optimising compilation, code optimisation, and parallelisation
Frances E. Allen
*1932
28/76
optimisation, and parallelisation
AWC Augusta Ada Lovelace Award en 2002
ACM Turing Award en 2006
– Cf. http://en.wikipedia.org/wiki/Frances_E._Allen
Frances E. Allen
� Before 1966
– Since the 1930s
• Programmable computers
– Since the 1950s
29/76
– Since the 1950s
• First compilers by Grace Murray Hopper
• Programming languages
– FORTRAN: first complete compiler
– COBOL: first programming language compiled for different
computer architectures (UNIVAC II et RCA 501)
Frances E. Allen
� Before 1966
– In 1955
• Context-free grammar invented by Noam Chomsky
– In 1966
30/76
– In 1966
• LR Parsing invented by Donald Knuth
Frances E. Allen
� In 1966
– Program Optimization
• Use of graphs to describe programs and to allow their
optimisations
31/76
� In 1970
– Control Flow Analysis et A Basis for Program
Optimization
• Intervals for control-flow analyses
� In 1974
– Interprocedural data flow analysis
• Interprocedural analyses of whole programs
Dahl–Nygaard
� Ole-Johan Dahl
– Born 12 October 1931, †29 June 2002
– Co-inventor of the object-oriented paradigm
Ole-Johan Dahl
*1931 †2002
32/76
– ACM Turing Award in 2001
– IEEE J. von Neumann in 2002
– Cf. http://www.olejohandahl.info/
– Cf. http://en.wikipedia.org/wiki/Ole-Johan_Dahl
Dahl–Nygaard
� Kristen Nygaard
– Born 27 August 1926, †10 August 2002
– Co-inventor of the object-oriented paradigm
Kristen Nygaard
*1926 †2002
33/76
– ACM Turing Award in 2001
– IEEE J. von Neumann in 2002
– Cf. http://www.ifi.uio.no/in_memoriam_kristen/
– Cf. http://en.wikipedia.org/wiki/Kristen_Nygaard
Dahl–Nygaard
� Object-oriented paradigm
– Context
• 1961
– Algol imperative programming
34/76
– Algol imperative programming
– Classes, objects, encapsulation, inheritance, polymorphism
• Simula I
• Simula 67
Dahl–Nygaard
� Object-oriented programming
– Smalltalk
• Xerox Parc, 1970–1983
– GUI
35/76
– GUI
– Icons
– WYSIWYG
– Mouse (cf. Stanford Research Institute)
• Dynamic typing
• Reflection
• Garbage collection
Dahl–Nygaard
� Object-oriented programming
– C++
• AT&T Bell Labs
• Bjarne Stroustrup
36/76
• Bjarne Stroustrup
• 1980
• Static typing
• Multiple inheritance
• Cf. http://www.approximity.com/ruby/
Comparison_rb_st_m_java.html
Dahl–Nygaard
� Object-oriented programming
– Oberon
• ETH Zurich
• Niklaus Wirth
37/76
• Niklaus Wirth
• 1986
• Static typing
• Garbage collection
• Array bounds checking
Charles A. R. Hoare
� Sir Charles Antony Richard Hoare
– Born January 11th, 1934
– Inventor of QuickSort
Sir Charles Antony Richard Hoare
*1934
38/76
– Inventor of the Hoare logic
–
– ACM Turing Award in 1980
– IEEE J. von Neumann in 2011
– Cf. http://en.wikipedia.org/wiki/C._A._R._Hoare
Charles A. R. Hoare
� QuickSort
– Context
• 1960
– In Soviet Union, Hoare works at Moscow State University in
39/76
– In Soviet Union, Hoare works at Moscow State University in
automatic translation
– He must sort words to be translated to map them with words
already translated
– QuickSort
• O(n × log(n)) in average, O(n2) worst case
• Works well with a cache
Charles A. R. Hoare
� Hoare logic
– Context
• 1969
– Study program correctness
40/76
– Study program correctness
– Original idea sown by Robert Floyd in 1967
– Verification of the correctness of a program
• Hoare triplet: {P} C {Q}
• Pre-condition P, instruction C, post-condition Q
• Set of rules for imperative languages…
Edgar F. Codd
� Edgar Frank “Ted” Codd
– Born August 23rd, 1913, died April 18th, 2003
– Father of relational algebra
Edgar F. Codd
*1923 †12003
41/76
– Father of relational algebra
ACM Turing Award en 1999
– http://en.wikipedia.org/wiki/Edgar_F._Codd
Edgar F. Codd
� 1960s
– Databases become possible
• Direct-access storages
– No standard data models or query models
42/76
– No standard data models or query models
– Two dominant models
• CODASYL, network model
– “Manual” traversal
• IBM/IMS, hierarchical model
– Relations 1:n only
(Microsoft Windows Registry)
Edgar F. Codd
� 1970
– “A Relational Model of Data for Large Shared Data Banks”
• Limits of the CODASYL approach
Lawrence Joseph "Larry" Ellison
*1944
43/76
• Limits of the CODASYL approach
• Introduction of the concept of tables
• Introduction of the concept of relation (keys)
– IBM Future Systems includes SEQUEL in 1975
– Relational Software Inc. release Oracle in 1979
(SEQUEL becomes SQL at the end of the ’70s)
Edgar F. Codd
� Today
– SQL is a standard
• ANSI since 1986
• ISO since 1987
44/76
• ISO since 1987
– Implemented by almost all existing databases
– Interoperability
• Careful with proprietary extensions
• Careful with ambiguities
Edgar F. Codd
45/76
Edgar F. Codd
� NoSQL
– http://nosql-database.org/
– http://www.10gen.com/nosql
46/76
Dave Parnas
� Dave Parnas
– Born February 10th, 1941
– Father of the criteria to divide a program into modules in a modular design
Dave Parnas
*1941
47/76
modules in a modular design
IEEE Computer Society 60th Anniversary Award in 2007
– Cf. http://en.wikipedia.org/wiki/David_Parnas
Dave Parnas
� Modular design
– Context
• 1972
– Procedural and object
48/76
– Procedural and object
programming languages
– Flow diagrams
– Decomposition of
programs in modules,
classes…
Dave Parnas
– Criteria
• “[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
Dave Parnas
– Rewriting of the criteria in terms of
• Cohesion
• Coupling
50/76
• Concepts “invented” by Larry Constantine in 1968
and published in 1972 in W. Stevens, G. Myers, L.
Constantine, "Structured Design", IBM Systems
Journal, 13 (2), 115-139, 1974.
• A module must have a strong cohesion and be weakly coupled to other modules
Manny Lehman
� Meir M. “Manny” Lehman
– Died December 29th, 2010
– Father of the laws of software evolution
Manny Lehman
*1925 †2010
51/76
Stevens Award in 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
Manny Lehman
� Laws of software evolution
– Context
• 1974
– IBM OS/360 et OS/370
52/76
– IBM OS/360 et OS/370
• Types of programs
– S: can be formally specified
– P: follow an iterative development process
– E: are embedded in our environment
Manny Lehman
– Eight laws
1. Continuing change: E-type systems must be continually
adapted or they become progressively less satisfactory
2. 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
Manny Lehman
– Eight laws
5. 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 evolves
6. 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
Frederick Brooks
� Frederick Brooks
– Born April 19th, 1931
– Father of Brooks’ Law
Frederick Brooks
*1931
55/76
– IEEE J. von Neumann Medal in 1993
– ACM Turing Award in 1999
– Cf. http://en.wikipedia.org/wiki/Fred_Brooks
Frederick Brooks
� Principle of Brooks’ Law
– Context
• 1956–1964
– Manager of the IBM OS/360 development project
56/76
– Manager of the IBM OS/360 development project
– Delays in the delivery
– Book
• The Mythical Man-Month: Essays on Software
Engineering
– Principle
• Adding manpower to a late software project makes it later
Frederick Brooks
– Rationale
• 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
Frederick Brooks
– Comments, solutions
• Brooks' Law applies to projects that are already late
• The quantity, quality and role of the people added to
the project also must be taken into consideration
58/76
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
Frederick Brooks
– Critics
“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
Edward Yourdon
� Edward Yourdon
– Born April 20th, 1944
– “Inventor” of seven types of cohesion
Edward Yourdon
*1944
60/76
– Cf. http://en.wikipedia.org/wiki/Edward_Yourdon
Edward Yourdon
� Modular design
– Context
• 1972
– Procedural and object
61/76
– Procedural and object
programming languages
– Flow diagrams
– Decomposition of
programs in modules,
classes…
• 1987
– Object-oriented
programming is
increasingly popular
Edward Yourdon
– Cohesion criteria
1. Accidental: the weakest cohesion in which their is
no links between methods or their link is based on a
useless criteria
62/76
useless criteria
– Utility classes
2. Logic: when methods are linked logically by one or
more common criteria
– All classes pertaining to I/O, to user interactions...
3. Temporal: when methods must be called within a
common time-frame
– A method and the method called in on of its catch
statement, and so on
Edward Yourdon
– Cohesion criteria
4. Procedural: when methods must be called in a
specific order
– One method that check user rights and one method that
63/76
– One method that check user rights and one method that
opens a file subsequently
5. Communicational: when methods process the
dame set of data
– All classes pertaining to dates...
Edward Yourdon
– Cohesion criteria
6. Sequential: when methods that process the same
set of data must be called in a specific order
– A parser: inputs to one class are the outputs of another
64/76
– A parser: inputs to one class are the outputs of another
7. Functional: highest level of cohesion, when a class
or module is dedicated to a unique task
– Classes that contribute in implementing some
requirements
Barbara Liskov
� Barbara Liskov
– Born November 7th, 1939
– Mother of the Liskov’s substitution principle
Barbara Liskov
*1939
65/76
– IEEE J. von Neumann Medal in 2004
– ACM Turing Award in 2008
– Cf. http://en.wikipedia.org/wiki/ Liskov_substitution_principle
Barbara Liskov
� Liskov’s substitution principle
– Context
• 1987
– Object-oriented programming is increasingly popular
66/76
– Object-oriented programming is increasingly popular
– Principle
• 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
Barbara Liskov
– Principle
• Behavioural sub-typing is different and stronger than
the concept of sub-typing in type theory
• In type theory
67/76
• In type theory
– Contravariance of parameters: a parameter of type T can
accept object of type S, where S is a sub-type of T
– Covariance of return type: the return type can be “enlarged”
from T to S
• In addition
– Pre-conditions cannot be stronger in a sub-type
– Post-conditions cannot be weaker in a sub-type
– The sub-type S must preserve the invariants of type T
Barbara Liskov
– Implementation in Java
• Java < 1.5
– Redefinition
/* Mother class */ public T foo(String a, String b) {...}
68/76
/* Daughter class */ public T foo(String a, String b) {...}
– Overriding
/* Mother class */ public T foo(String a, String b) {...}
/* Daughter class */ public T foo(String a, Integer c) {...}
• Java > 1.5
– Redefinition/* Mother class */ public T foo(String a, String b) {...}
/* Daughter class */ public S foo(String a, String b) {...}
Erich Gamma
� Erich Gamma
– Born in 1961
– Father of the software design patterns
Erich Gamma
*1961
69/76
Dahl-Nygaard Prizes in 2006
– Cf. http://en.wikipedia.org/wiki/Erich_Gamma
– Cf. http://c2.com/cgi/wiki?ErichGamma
Erich Gamma
� Software design patterns
– Context
• 1977 et 1979
– Christopher Alexander
70/76
– Christopher Alexander
– A Pattern Language: Towns, Buildings, Construction and the
idea of generative patterns
– The Timeless Way of Building and the idea of perfection in
architecture
• 1990
– Object-oriented programs are becoming mainstream
Erich Gamma
� A Pattern Language: Towns, Buildings, Construction
– 253 patterns
– Generative grammar
– “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 patterns
– Not a language?
– “Dynamic, highly parameterized software is harder to
understand and build than more static software”
Erich Gamma
� Design Patterns: Elements of Reusable Object-Oriented Software
72/76
Software
– Dahl-Nygaard Prizes à
• Ralph Johnson
• Richard Helm
• Erich Gamma
• † John Vlissides
Grady Booch
� Grady Booch
– Born February 27th, 1955
– Father of the UML with Jacobson et Rumbaugh
Grady Booch
*1955
73/76
Stevens Award in 2003
– Cf. http://en.wikipedia.org/wiki/Grady_Booch
Grady Booch
� UML
– Context
74/76
Grady Booch
– Three Amigos and their methods
• Grady Booch,
– Booch Method (design)
• Ivar Jacobson
75/76
• Ivar Jacobson
– Object Oriented Software Engineering, OOSE (use cases)
• James Rumbaugh
– Object Modeling Technique, OMT (analysis)
• Rational Software Corporation
– UML
To Be Continued
� 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