Sei sulla pagina 1di 25

digital society

week 4: what is software?


part a: introduction
Learning objectives

• explain the difference between software and hardware


• explain the difference between software and algorithms
• describe the history of software
• explain how software is made
• instructions
• libraries
• Documentation
• (data)
digital society
week 4: what is software?
part b: what is an algorithm?
Algorithm: a set of steps for solving a problem or completing a specific task
117
286
=====
702
9360
23400
=====
33462
Babylonian method for computing square roots

Hero of Alexandria, 10CE-70CE


t=t-1
No

Identify location
where I was at Are the car keys
time t at this location?
No

Are my car keys in


Are my car keys in
my pocket?
my pocket? Yes!
Yes!

Problem solved
digital society
week 3: what is software?
part c: a brief history of software
Ada Lovelace
Programming the first computers
Punched cards and punched tape
Stored programme concept

John von Neumann


Assembly
HELLO CSECT The name of this program is ‘HELLO’
* Register 15 points here on entry from op/sys or caller
USING *,12 Tell assembler what register we are using for pgm
STM 14, 12, 12 (13) Save registers 14, 15, and 0 thru 12 in callers save area
LR 12, 15 Set up base register with programs entry point address
LA 15, SAVE Point at own save area
ST 15, 8 (13) Set forward chain
ST 13, 4 (15) Set back chain
LR 13, 15 Now switch to new save area

WTO ‘Hello world’ Write to Operator

L 13, 4(13) point at caller’s provided save area


LM 14, 12, 12 (13) restore register as on entry
SR 15, 15 set register 15 to 0 so that return code is zero
BR 14 return to caller

SAVE DS 18A Define 18 fullwords for calling


END HELLO end of program
FORTRAN

PROGRAME HELLO

WRITE (UNIT=*, FMT=*) ‘Hello World’

END
Emergence of computer science

John McCarthy, taught one of the


earliest computer science courses
in the United States
digital society
week 3: what is software?
part d: making software
Software crisis
The major cause of the software crisis is that the machines have become several orders of
magnitude more powerful! To put it quite bluntly: as long as there were no machines,
programming was no problem at all; when we had a few weak computers, programming became
a mild problem, and now we have gigantic computers, programming has become an equally
gigantic problem.

— Edsger Dijkstra, 1972

• Over-budget
• Over-time (or never delivered)
• Inefficient
• Low quality
• Not meeting requirements
• Unmanageable projects
• Code not maintained
Mythical man month
Software engineering

FORTRAN (1957)
LISP (1958)
ALGOL (1960)
COBOL (1960)
BASIC (1964)
C (1969-73)
Prolog (1972)
C++ (1985)
Women and code

Grace Hopper
digital society
week 3: what is software?
part e: conclusion
Democratization of code?
1990s
High level languages

Low level languages

Assembly languages

Machine code
1940s

Potrebbero piacerti anche