Media Studies 110 Electronic Coursebook for Students
Media Studies Program, University of Virginia Home

7. Programming Languages

Overview

For much of the early history of computing, programming tools were essentially unreadable by most human beings. Examples of such software tools include punch cards, paper tape, binary code and machine code. Responding to demands for greater usability, what we now recognize as programming languages with English-like words and grammar were created in the 1950s and 1960s. These languages have come to be referred to as procedural. Modern computers rely on several kinds of programming languages for applications and operating systems, including machine code, full procedural languages such as Fortran and C, and quasi-programming languages including markup languages like HTML and scripting languages like JavaScript. Current programming tools also rely on abstract models that are not much like language: this is particularly important for object-oriented languages like Java and C++.

We will also review some concepts and metaphors that are important for understanding the development of programming, including operating systems, applications, algorithms, subroutines, loops, conditionals, interpretation, and compilation.

The early history of programming (1920s-1950s)

Programming concepts

From codes to languages (1950s-1990s)

Beyond language (1980s - )

STUDY QUESTIONS

  1. What are the differences between the kinds of programming functions that can be carried out in binary code, machine code, and assembly language?
  2. What kinds of skills have computer programmers and engineers been expected to have as computers and programming tools have changed over time?
  3. What is the importance of Ada Lovelace to the history of programming languages?
  4. What is the role played by corporate and government interests in the development of programming languages? What makes some languages popular today and what accounts for the abandonment of other languages?

SYNTHESIS QUESTIONS

  1. What are the philosophical differences between procedural and object-oriented programming? What effects might these two paradigms have on the way computers are used?
  2. In what ways are programming languages like or not like human languages?
  3. When we speak of the "interpretation" of programming languages, we mean finding a single correct reading of the code. This does not seem very similar to interpretation as it applies to literary texts or to most uses of natural language. What other similarities and differences do you see in these two concepts of interpretation?
  4. Programming languages mediate the relationship between software designers and computers; what sorts of changes have taken place in this relationship during the history of computing?

READINGS FOR MONDAY