Getting started with programming terminology

Sunday 17 February 2013This is nearly 12 years old. Be careful.

I sat in on a beginner’s programming class a few weeks ago, and I was struck by the bizarre words we routinely use, but which must sound like nonsense to beginners.

Take the simple program:

print "Hello, world!"

What is the word “print” doing here? Printing means to produce marks on a piece of paper. There’s no paper involved. And “Hello, world!” is a string? It certainly doesn’t look like a piece of string.

Expressions have no range of emotion at all, arguments aren’t debating anything. Comprehensions are incomprehensible, floats just lie there. You can’t put a price on values, dictionaries have no order.

It’s no wonder beginners think we’re all nuts.

Comments

[gravatar]
Russell Borogove 2:27 PM on 17 Feb 2013
It took me ridiculously long to realize that the "regular" in "regular expression" meant something like regulating rather than "standard" or "conventional".
[gravatar]
Russell Borogove 2:31 PM on 17 Feb 2013
And I distinctly remember my confusion and the instructor's frustration, at the age of 10, trying to understand how to type in a for-loop in BASIC. 4 X = 1 2 10? Wut? What are you saying?
[gravatar]
But Ned, we need those obscurities to keep people away from us when we're debugging why an IIS 3.0 Thread Pool keeps crashing or something similar. And you forgot, module .. eludom from Bliss.
[gravatar]
Following on from Russell's example; when I was learning BASIC as a child, I thought I could assign different values to the same variable in succession and the computer would pick one randomly.
[gravatar]
Another example I encountered recently when a non-programmer was paging through my Unicode book: They understood quite quickly the idea of assigning each character a number, but once they hit their first (hexadecimal) number with a letter in it hypothesized that the creators of Unicode hadn't left enough space between 9 and 10 and so switched to using letters to "insert" the character at the right place.
[gravatar]
If "print" is nonsense, then "puts" or "writeln" are downright absurdity. And what about oil' "dim" from Visual Basic? Also...what exactly is "visual" about Visual Basic?
[gravatar]
“Floats just lie there”.

Looked at slightly more oddly, that was what I got stuck on reading a Fortran book as a child (with nobody around who could help). “Floating point” numbers have an exponent so the point isn't floating - it's fixed right there. “Fixed point” numbers, on the other hand, had no exponent so you are free to interpret them by whatever conventions you want. Maybe the book should have left the idea of interpreting integers as fractional till later because I gave up at that point. Learned to program a few years later at school aged about 13, I think. Still remember the puzzlement over that book well over 40 years later, though.
[gravatar]
This programming class you took, was it public or private? And if it was static, I hope no one was too shocked.
[gravatar]
Was considering this the other day when thinking about how to teach my kids to code when they are ready. One of the major hurdles to my own understanding of programming was deciphering the terminology and vocabulary of computer programming, the various languages/paradigms, and the constructs and patterns that are commonly used.
We need a set of common analogies (eg a dictionary in the traditional sense) for teaching programming and helping newbies decipher our verbiage.
[gravatar]
We also keep in memory the data we want to forget when a program ends, and serialize data to a single file.
[gravatar]
It has to be said though, it's not the programmers' fault that most of these terms were based on hardware available 40 years ago.
[gravatar]
First, thanks for the belly laugh.

Second, I apologize for the shameless plug, but I believe I have developed a simple "programmable metaphor" that can be employed to teach anyone the essence of programming in a an hour or so.

It's sort of like a Functional-Programming-style Forth, and I have implementations in Python and Javascript. I wrote a blog post outlining how one might walk a non-programmer through it using common terminology: http://calroc.blogspot.com/2013/02/how-to-teach-anyone-to-program-using.html

I'd really appreciate any feedback on it (I've checked the "Email me future comments" box.) I've taught a few people tis way and it certainly seems to work great.
[gravatar]
@Aaron:

haven’t you noticed the visual GUI editor there? (as opposed to writing ugly, long and unreadable code that makes GUIs)
[gravatar]
I still feel the pain from banging my head against the wall long ago while trying to grasp the meaning of "context".

People esp. who don't own English as a first language, tend to skip the word they don't know and try to understand the meaning from the rest of the phrase. Sometimes dictionary helps. In this case it didn't. =)

Add a comment:

Ignore this:
Leave this empty:
Name is required. Either email or web are required. Email won't be displayed and I won't spam you. Your web site won't be indexed by search engines.
Don't put anything here:
Leave this empty:
Comment text is Markdown.