Cursul 07 – 29 martie
Alan Turing
◦ 'On computable numbers, with an application to the Entscheidungsproblem‘
First code we could recognize
◦ Binary
◦ Ran on electronic machines
◦ Uses variables, macros, subroutines
2
Bletchley Park – The Bombe
Used to crack Enigma Code
Created using
electro-mechanical relays
Clock rate ~ 100 ms
3
Colossus- first programmable computer
4
Designed by Alan Turing
Worked in base 32
Used Cathode Ray Tubes for memory
5
6
Turing writes code
◦ Uses binary base 32
◦ Uses add and not
◦ Floating point
◦ Subroutines
◦ Stack (for data and subroutine return addresses)
◦ and many more
7
“We shall need a great number of
mathematicians of ability”, “there will
probably be a good deal of this work to be done” – Turing, Lecture on the ACE
“One of our difficulties will be the
maintenance of an appropriate discipline, so that we do not lose track of what we a re
doing” – Turing, Lecture on the ACE
8
Computers in the world: O(1)
Programmers in the world: O(1)
9
One of the first working computers
◦ Vacuum tubes for processing
◦ 12 Mercury Delay Lines for memory (audio)
◦ 32 instructions/words of 32 bits per line
◦ Frequency ~ 1Mhz
10
Memory is expensive
◦ 1-10 $ per BIT
Cheaper versions: Magnetic-core memory
11
12
John McCarthy – LISP
◦ (defun factorial (n)
◦ (if (= n 0) 1
◦ (* n (factorial (- n 1)))))
13
In this decade, IBM sold 140 computers
◦ Fortran
◦ LISP
14
Computers in the world: O(1e2)
Programmers in the world: O(1e3)
Programmers were:
◦ Mathematicians
◦ Engineers
◦ Scientists
◦ Etc.
15
16
More than 10000 IBM 1401 computers sold in the 1960s
Decimal Machine
Computers in the world: O(1e4)
Programmers in the world: O(1e5)
In less than 20 years, the number of programmers increased by a factor of 100000
Though most were not mathematicians, they were experienced, disciplined professionals
17
IBM produces 1000 IBM 360 each month
18
First object oriented programming language
Created by Ole-Johan Dahl, Kristen Nygard
◦ Objects
◦ Classes
◦ Inheritance
◦ Virtual procedures
◦ Garbage collection
◦ etc.
19
Edsger Dijkstra
(physicist) – GOTO Considered Harmful
Beginning of structured
programming
20
Ken Thompson, Dennis Ritchie, mathematicians
21
Computers in the world: O(1e5)
Programmers in the world: O(1e6)
Tens of thousands of CS and EE graduates (among the first series)
◦ All were young
◦ Almost all male
22
Until now
◦ Programmers were disciplined
◦ Didn’t need much management
◦ Could manage their own time, work in groups and communicate
◦ They understood deadlines
They used a form of Agile development
◦ Agile is the process used by disciplined professionals in the wild
23
Young, inexperienced programmers, need top down supervision
Average age of programmers drops by 10 years
Winston Royce describes the waterfall development model
◦ an example of a flawed, non-working model
24
Number of programmers increases
exponentially (roughly doubles every 5 years)
Tens of millions of programmers
Half of them have less than 5 years experience
25
Hardware
Demographichs
26
Software
27
Original programmers start retiring
First generation of career programmers are now about 40 years old
These career programmers foresee the need for change
◦ Scrum – Schwaber, Beedle, DeVos, et al.
◦ XP – Beck, Cunningham
◦ FDD – Coad
◦ Crystal - Cockburn
28
29
Working with fixed time spans
Customer communication
Collaboration
Estimating in relative units
Continuous integration
etc.
Agile is NOT a process
It is a set of promises
30
The most technical
◦ TDD
◦ Acceptance tests
◦ Simple design
◦ Refactoring
31
Turing mentioned discipline
Agile is about
◦ Discipline
◦ Craftsmanship
◦ Professionalism
Business understands discipline but does not understand computer programmers or our
disciplines
32
Software craftsmanship is an approach to software development that emphasizes the coding skills of the software developers
themselves.
A response to the problems of the
mainstream software industry, including financial concerns over developer
accountability.
A previously rigorous approach becomes increasingly engineering in nature
33
All images and examples courtesy of Robert Cecil Martin and Wikimedia Commons
Robert C. Martin, Engineering Notebook columns for The C++ Report
Robert C. Martin, The Future of Programming
34