Paper of the Day: “Why Teach Programming Languages?”
by Olin Shivers


We continue our celebration (or perhaps examination) of Computer Science Education Week with today’s POTD.

Many computer science programs include a course on “programming languages”; these take a lot of different forms, from a broad survey of various popular languages to in-depth studies of semantics and interpreter implementation. In today’s POTD, Shivers argues for the importance of studying programming languages not just to computer science students, but to anyone who wants to understand the modern world.

To a great degree, then, the study of programming languages is where the student is exposed to the full spectrum of computational models that have been devised by the mind of Man. Students who do not possess these models are intellectually impoverished; they do not understand computation.

I also appreciate the paper’s take on a common fallacy one encounters in the field of software technology and programming education:

I once read an article by a senior academic stating that “nothing changes faster than Computer Science; our curriculum should therefore change with equivalent speed.” My immediate reaction was that “things that change rapidly” is just a long-winded way to say “ephemera:” that which is not of lasting value. Instead of chasing fads, we should focus on essentials—core fundamentals that retain value across shifts in technology and fashion.

By teaching the fundamentals of programming as embodied in the study of languages, their semantics, and how to interpret them, we can enable students to easily adapt to new fads and fashions as they arise. Compare the following to the “bootcamp” approach that became so popular in the last few years:

Someone who encounters, say, Ruby on the job needs the conceptual framework to say: “Oh, I see. It’s basically a single-inheritance, class-based object-oriented language,” and then rapidly and fluidly pass to the syntactic and semantic small details for this platform.

Is “full-stack developer” the new “programmer”?

Come back tomorrow for the next POTD!

This blog will never track you, collect your data, or serve ads. If you'd like to support the blog, consider our tip jars.


BTC: bc1qjtdl3zdjfelgpru2y3epa56v5l42c6g9qylmjx

ETH: 0xAf93BaFF53b58D2CA4D2b0F3F5ec79339f6b59F7