Objective-C
A better C
By Bread Cox - SmallTalk Programmer - Objective-C
By Bjarne Stroustrup - Pre-Processor - C++
Dennins M. Ritchie C Programming Language (Chapter 0)
Bjarne Stroustrup C++ Progamming Language (Chapter 0)
Apple Computers
Steve Jobs quits Apple and founds NeXT
Hire Objective-C Programmers which did not like C++
Steve Jobs went back to Apple with NeXT’s Objective-C Team
New Languages
- Type Safe?
- Features?
Sofware industry
Where are the woman?
The Future of Programming
1936 - Alan Turing
The first person to write code as we recognize as code.
Alan, writes a paper
Charles_Petzold-Annotated_Turing-Wiley%282008%29.pdf
- Binary (Reversed ¯_(ツ)_/¯ )
- Integer
add
and logicalnot
- Invents subroutine
- Invents and codes stack (burry and un-burry instead of push and pop)
- Invents floating point numbers
- etc…
“We shall need a great number of mathematicians of ability” because “there will probably be a good deal of work of this kind to be done.”
- Alan Turing
“One of our difficulties will be the maintenance of an appropriate discipline, so we do not lose track of what we are doing” - Alan Turing
1946
Number of Computers O(1)
Number of Programmers O(1)
1950
Core Memory
- Dencer memory
- Magnetize both directions
- Larger Memories
Tubes
- Radios
- Televisions
- Computers (possible to build with tubes)
1953
Fotran Creation
- No Indentation
- GOTO’s
- No Types
- Hand Written
- Cards
- Care-full with I’s O’s and 7’s
- Programmers Were not allowed to touch computers
- Computer Operators do not like programmers (because programmers want to try programs)
- The program output will come on the other day.
- To deal with that every programmer had 7 parallel program.
1958
- Functional Programming
- LISP
1960
IBM sold 140 model 70x computers running fortran
O(1E2) Computers in the world
O(1E3) Programmers in the world
- No Libraries
- No help
1960 Programmers
- Programmers were not trained on schools
- Engineers
- Scientists
- Mathematicians
- 30’s 40’s 50’s
- Understood projects
- Understood management
- Were trusted by business
1965
Very expensive machine rents from IBM
O(1E4) Computers in the world
O(1E5) Programmers in the world
Less than 20 years since Turing wrote his code
Where does all this people come from?
Not enough people
- Engineers, Scientists, Mathematicians
- No CS Grads
- Programmers drawn from:
- Best and brightest
- Accountants, Planners
- Understood management
- Understood business
- Not mathematicians
- Disciplined…
1966
IBM’s renting computers
Simula-67 - First Object Oriented Language
Object Orientation
1968
Dijkstra wrote a article to avoid GOTO;
Disciplined Mathematicians → C and Linux/Unix
1970
O(1E5) → Computers in the world
O(1E6) → Computers in the world
25 years
## Programmers Were Young
Lack of discipline, but with a lot of energy, crazy hours, hyper-focus and cheap
**Young boys need discipline**
**→ The Waterfall Model**
The average age of programmers went down by 20 years. Programmers are now in ther 20's
The number of programmers double every five years
We do not have enough teachers to teach everyone! That's why the area have so many mistakes.
## Before 80's
Programming Field
- Old People
- Programmers were disciplined professionals
- They didn't need a lot of management or process
- They knew how to manage their time, communicate, and work together
- They understood deadlines and commitments, **What to leave in and what to leave out**
Accomplishments
- IBM 360 Virtual Memory OS
- NASA: Mercury, Gemini, Apollo
- Structured, Functional, Object-Oriented
- Fortran, Cobol, Agol, Lisp, C, Unix
## Agile
Is the process used
Today
What have changed?
Sofware! _The iPhone represents the World economy_
## What's Changing
- Multicore
- Massive Parallelism
- Quantum Computers
## What Must Change
- Sofware Professionalism
1995
- Original cohort of disciplined professionals retires.
- First wave of career programmers comes of age (well over 40)
- We foresee the need to change
1995 - The Waterfall Era Change
- Scrum: Schwaber, Beedle, DeVos, et. al.
- XP: Beck, Cunningham
- FDD: Coad.
- Crystal: Cockburn
2001 - Snowbird Agile Manifesto
Agile Manifesto
Individuals and interactions over process and tools.
Working Software over comprehensive document.
Customer collaboration over contract negotiation.
Responding to change over following a plan.
Agile Requires Discipline
-
Working in fixed time boxes.
-
Estimating in relative units.
-
Customer Communication
-
Continuous Integration
-
Collaboration
-
Much more…
Extreme Programming (XP)
- The most technical disciplines
- TDD
- Refactoring
- Simple Design
- Acceptance Tests
- Metaphor
Many of us tough that these technical disciplines were the glue that made the whole agile process work properly. Without those technical - dare I say Mathematical disciplines, the code being produced would grow and evolve in ways that made it harder and harder to work with.
Lose track of what we are doing.
Turing: Discipline and Ability
Agile: Discipline
Agile: Craftsmanship
Agile: Professionalism
Business Loves and Understand
Business ♥️ Discipline
Business ♥️ SCRUM
Business ♥️ Certification
Business Do not Understand
So they won’t assume any risk.
Business 🚫 Programmers
Business 🚫 Tests
Business 🚫 Pair Programming
Business 🚫 Refactoring
Business 🚫 Simple Design
Flaccid Scrum
Scrum without value
Scrum without deliver
Scrum without technical practice
Scrum without order
The Invasion of Project Managers
Caused by certifications, which attracted the wrong people, PM’s
So the agile movement → project managers → craftsmanship technical practices
Agile were made by programmers,
Agile is not about Kanban, LEAN or any of that.
Agile is not about business people.
Agile is not about project managers people.
Irony
Kent Back at Snowbird stated a goal for Agile:
Healing of the divide between business and programming
Agile was about bringing business and programmers closer together
FAILED
What Must Change?
- Agile must Grow Up.
- Define our profession
- Choose our practices and disciplines
- Reunify Agile/Craftsmanship
- …And Lead!
Problem
The world depends on programmers
In ways they do not understand
In ways we do not understand
Your Grandmother
Interactions with a software system
- Buy things
- Sell something
- Get insurance
- Telephone Calls
- Car (over 10K lines of code)
- Microwave
- Wash your clothes
Software Engineers Are Killing People
The world depends on us, they do not understand, we do not understand.
WE RULE THE WORLD
Someday a software disaster will happen!
That day, politics will point their fingers will look at us and ask why that happen!
My boss made my do that
We had a deadline
Regulations
- What books we have to read
- What languages we have to use
- What platforms we can use
- What processors we have to use
- What process we have to follow
We’ll be regulated
Cause we’re dangerous
We kill people.
Regulate Ourselves Before!
- Take a oath(doctors, layers)
- Create a body that violate programmers