CP4P - History of Computers and Programming
CP4P - History of Computers and Programming
CP4P - History of Computers and Programming
FOR PROGRAMMERS
History of Computers and Programming
News of the Week i
Lecture
1. Where are we going?
2. How did we get here?
3. What is Hardware exactly?
4. What is Software exactly?
5. Why do we have all those
programming languages?
Activity
Selection of questions about software concepts.
Choose:
• one from Algorithms and Pseudocode
• one from ICT Past, Present, and Future
• Write 250+ words for each.
There are no right answers, just good arguments.
New Technology: What and How
What to do with new technology? (besides more social media)
• AI, Blockchain, 5G & Smart Cities, Neural Nets, Qubits
• MIT Technology Review, SOSCIP:SDDS AI video editing
on Western culture
4.
3.1
3.
1. Information
Computers
4.2
2. Mass Media
4.1 Global Industrial
History of Discovery
History of Invention
“But what ... is it good for?”
IBM Power
midrange
DEC PDP-11/70
minicomputer Google search,
PayPal, big data &
1970s 4MB RAM
analytics.
Clouds: Tencent,
Google, MS Azure,
IBM z16 (2022), 200 cores, 40TB RAIM, AI on CPU. Alibaba
Mainframes run 68% of the world’s production workloads at 6% of total IT costs
IBM "Investment Protection": backward compatibility with previous platforms
IBM PC Model 5150 & VisiCalc
See Note G in
"Sketch of The Analytical Engine, with notes upon the Memoir by th
e Translator"
. Switzerland
Ada's 1842 algorithm had the essential
elements of programming languages
Ada Lovelace
1815 – 1852
Dr. Grace Hopper
1906 – 1992
The First Software Engineer
Margaret Hamilton
lead software engineer
on Project Apollo
1965 – 1972
Designed Apollo
Guidance Computer to
run tasks by real-time
priority instead of
expected sequence.
Hamilton with all the
AGC program listings.
She is 5'6" 168cm tall.
How many women in ICT?
https://www.menti.com/h6mte2hj1t
A. <17%
B. 17% - 24%
C. 25% - 26%
D. 27% - 29%
E. 30%
F. >30%
Programming: from brain to binary
• Programming is for humans. Coding is for computers.
• Use comments so the humans understand the code.
• The human mind, as it turns out, is messy. — Ellen Ullman, Life in Code
• Programming is
• Analysis to understand the problem
• Creating an algorithm (logical steps) to solve the problem
• Implementing the algorithm in a programming language, i.e. code
• "the art of algorithm design and the craft of debugging errant code."
— Ellen Ullman, Life in Code
1960s… 3GL Programming Languages
• COBOL (1959) COmmon Business - Oriented Language
• Code compiled into platform instructions (Grace Hopper)
• OLTP processing, efficient I/O, decimal arithmetic
• 70% of all business transactions, 43% banking systems
• 220B lines of COBOL extant, +1.5B new lines / year
IDENTIFICATION DIVISION.
PROGRAM-ID. SHOOT_FOOT.
PROCEDURE DIVISION.
* shoot self in foot
SUBTRACT FOOT FROM LEG GIVING CRUTCH.
STOP RUN.
1970s… 3GL Structured Programming
Control Structures: { scope } instead of GOTO / label
• C (Kernighan & Ritchie, 1978. The C Programming Language )
LOGO
5+GL Programming Languages
• low-code
4GL with GUI
• flows from design
to modeling the
architecture
to adding 3GL logic
to deployment
• no-code is LOGO, Scratch for adults
History of Computers and Programming
projected
−0.232 seconds
loop time
3GL Programming Languages
FORTRAN (IBM, 1954) FORmula TRANslation
First widely used high-level, general purpose, language
Continues to be up-to-date (Object Oriented, parallel computing)
Widely used for computationally intensive tasks, high-
performance computing, benchmarking supercomputers.
! Fortran 2018 is latest version
program shootFoot ! Classic programmer joke
print *,'Shoot extremity...19 times out of 20'
end program shootFoot
Short history of Programming Languages (read L8R)
1970s: structured programming with subroutines, code blocks, and control patterns. GOTO was outlawed but it
took until the 1980s to go away.
• C (Kernighan & Ritchie, 1978. The C Programming Language aka K&R)
• The first portable systems programming language; created to rewrite UNIX.
-- SQL
CREATE TABLE helloworld (word1 TEXT, word2 TEXT); -- Data Definition
INSERT INTO helloworld VALUES ("Shoot","Foot"); -- Data Manipulation
SELECT * FROM helloworld WHERE word1 = "Shoot"; -- Data Query
Shoot|Foot output
from Hello World to Shoot Foot
# Python
print "Shoot foot!" # you can see why people like this at first
for part in body: # but it's just another programming language
if part == foot: # with COLON TAB instead of {braces}
gun.shoot(part) # OOP and oops: shot both feet
// Java
System.out.println( gun.shoot( body.getFoot() )));
// C#
Console.WriteLine ( gun.shoot( body.getFoot() ))); // Java and C++