ABSTRACT

Programming languages are connected to an area of computing called software engineering, which asks a simple question: why is the production of software different from designing bridges, manufacturing aircraft, developing pharmaceuticals, or building houses? Architects and construction firms are able to pretty well predict how long it will take to build a house and how much it will cost, but the same cannot be done with software. Also, when it comes to building a house, there is an established marketplace of parts, concrete, structural beams, and so on; there are tools for all aspects of construction. The dream of software engineering is to find the right kinds of tools and “parts” so that creating programs and computing applications can become predictable, reliable, and have acceptably low cost. This dream has influenced the evolution of programming languages and industrial conventions for organizing software systems.