CSCE 121 Software Ideals and History
« previous | Friday, November 19, 2010 | next »
History is very important to know where we're going
(Dr. Stroustrup's) Ideals
These Ideals are unique to everybody
Aims of good design:
- Represent ideas directly in code
- Ditto for independent ideas
- Represent relationships between ideas in code
- Combine coded ideas freely, but only where they make sense
- Chop code into pieces; less likely to have errors
Results of good design:
- Correctness
- Maintainability
- Performance
Uses
Finding bugs: "The bug is always where you are not looking,–or you would have found it already"
Look where code has most departed from the ideals.
Go get a cup of coffee hot chocolate and think about it for a moment
Diversity of Languages
Reasons:
- diverse applications
- diverse backgrounds
- problems change and new ones arise
- computers change
- we learn more (better algorithms)
Early Languages: 1949
One language for each processor: NO PORTABILITY OF CODE
First Compiler
David wheeler
- exceptional problem solver (hardware, software, algorithms, library)
- wrote fastest sorting algorithm
Fortran: 1949
First language for humans (linear algebra)
Notation was largely machine independent (accidental result)
Cobol: 1960
For business programmers just as Fortran was for Mathematicians and Engineers
Focused on
- Copying
- Storing and retrieving records
- printing reports
First bug in computer (literally) was found on a Cobol machine
Algol: 1960
Introduced:
- Language description
- Scope
- Type
- Notion of programming for general purposes
Simula: 1967
Addressed all applications rather than a specific application
Introduction of classes, objects, inheritance, hierarchies (object-oriented design)
- interaction of objects rather than a "monolith"
C: 1978
(Relatively) high-level programming language
Performance becomes portable; made way for better universal operating systems (UNIX and Linux)
Based on Christopher's language CPL (that's what C stands for)
C++: 1985
General purpose language:
- Better than C
- supports abstraction
- supports object-oriented programming
- supports generic programming
Meant to "make life easier for the serious programmer": write "elegant and efficient code"
Made ISO standard in 1998 (C++98)
New standard coming out in 2011 (C++0x)