Should Everyone Learn to Write Software?

Everyone should be proficient in at least one procedural programming language, just as they should be proficient in at least one spoken language (of course many today don't even achieve that). Why?

All procedural languages use common constructs to represent both data and process, which are still at the heart of what computers operate on. While layer upon layer of abstraction has been added since Turing first envisioned his "universal machine", the underlying concepts are still the same - computers and software combine data with process to perform work. Language structures exist to test data (IF/THEN/ELSE) and execute different processes based on that data. Other structures repeat processes a preset number of times (DO WHILE/UNTIL and FOR/NEXT), and sub-processes can be isolated so they can be reused (FUNCTION). While different languages have been designed to do some things better than others, all have similar "flow of control" constructs.

Likewise, each has features for representing data. The concept of the "variable" is universal, although each may represent them differently. Some are "strongly typed", and clearly differentiate between variables that can contain different types of data (integer, string, float, etc.), while others such as JavaScript allow the same variable to be assigned any type.

Object oriented languages blur the distinction between process and data by supporting constructs that represent both. In these languages an "object" is an instance of a "class", which can contain both "properties" (data) and "methods" (process). The intention is to more closely model our reality by recognizing that things in the real world are comprised of both data (e.g. make, model, year, color) and process (accelerate, turn right, turn left, brake). Simply put, properties and methods are the nouns and verbs of the things we want to model.

Understanding a language that describes process, data, and objects allows one to understand, at least conceptually, what all software does today. This understanding removes much of the mystery of software and technology more generally. Just as knowing how a hammer works doesn't make me a carpenter, knowing how to write in one software language doesn't make me a software engineer; but it does help me understand what she does, which in turn allows me to participate more fully in a civilization awash in technology.

To view or add a comment, sign in

More articles by Mark Gerow

Others also viewed

Explore content categories