CS 538 Lecture Notes
Friday, January 28, 2000

The Evolution of Programming Languages (Continued from last lecture)

  1. Simula was introduced around 1967. It was the first programming language to introduce the idea of classes (encapsulations of data and operations). The language was designed for the purpose of running simulations. Classes would be used to simulate the various entities in the simulation. The name comes from "Simulation Algol". Professor Fischer pointed out how this 33-year-old idea, which now seems fundamental to us, was really radical at the time and slow to catch on.

  1. C was created in the early 1970s. It was the first widely used system language, being used to craft compilers, etc. It was one of the first expressive and efficient languages to program. It also introduced the idea of platform independence at the operating system level. The history of the name starts with a language known as BCPL (Basic Computer Programming Language). This language evolved into another language called B, which was developed by Bell Labs. C is a descendant of B, which is how it got its name. One of the drawbacks of C is that it is fairly easy to write incorrect code that will still run. For example, C will usually let you get away with writing a statement like if(a = b).

  1. C++ was developed in the mid-1980s as a successor to C. The biggest difference was the addition of classes, which had been missing from C. C++ is essentially compatible with C. While this allows flexibility for the programmer, it also means C++ inherited any bad traits C had instead of discarding them. The name of C++ comes from the increment operator. Technically, however, the name should be ++C. Professor Fischer said that when asked about this, the creator of C++ said it was true, but that he wasn't sure how the language ++C would be cataloged, so he named it C++, which would clearly fall under "C".

  1. Java is a product of the late 1990s. It was basically created to clean up the flaws in C++, especially security issues that arose with C++ pointers. The language is filled with C++ ideas, but has made them more simplistic, safer and cleaner. Java offers the truest platform independence of any language. The name of Java was something the designers picked while in a hurry to name the language.

Discussion: What attributes, concepts and issues are important in programming language design? (i.e. What's wrong with mainstream programming languages?)

Ideas offered by the class:
  • I/O - Computer users tend to like fancy input/output, but this is still difficult to accomplish with current programming language I/O routines.
  • Readability - As they grow larger, current programs become very difficult to read and interpret, making them difficult to work with and update.
  • Learning Curves - How can we make programming languages more intuitive to learn?

Ideas offered by Professor Fischer:
  • Productivity - It typically costs $10 - $100 per line of code to create a program from start to finish. This statistic remains remarkably consistent across programming languages. How can we make a language more efficient to program in?
  • Reliability - Programs today are extremely fragile. Small errors can cause an entire program to function incorrectly. How can we make programming languages more robust?
  • Speed - Much of the gains in computer performance in the last few years can be linked to parallelism (running multiple instructions in parallel). However, current programming languages do not take advantage of parallelism.


Previous || Next