CSCE 121 Software Ideals and History

From Notes
Jump to navigation Jump to search

« 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)