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.

» 14 reactions

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]
octopusgrabbus 2:33 PM on 17 Feb 2013

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]
James Tauber 2:40 PM on 17 Feb 2013

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]
James Tauber 2:44 PM on 17 Feb 2013

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]
Aaron 2:55 PM on 17 Feb 2013

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]
Ed Davies 3:02 PM on 17 Feb 2013

“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]
Ken Pespisa 3:43 PM on 17 Feb 2013

This programming class you took, was it public or private? And if it was static, I hope no one was too shocked.

[gravatar]
Stewart 4:28 PM on 17 Feb 2013

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]
GiacomoL 4:48 PM on 17 Feb 2013

We also keep in memory the data we want to forget when a program ends, and serialize data to a single file.

[gravatar]
GiacomoL 4:54 PM on 17 Feb 2013

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]
Simon Forman 5:31 PM on 17 Feb 2013

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]
Kwpolska 8:01 AM on 23 Feb 2013

@Aaron:

haven’t you noticed the visual GUI editor there? (as opposed to writing ugly, long and unreadable code that makes GUIs)

[gravatar]
anatoly techtonik 7:53 AM on 5 Mar 2013

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:

name
email
Ignore this:
not displayed and no spam.
Leave this empty:
www
not searched.
 
Name and either email or www are required.
Don't put anything here:
Leave this empty:
URLs auto-link and some tags are allowed: <a><b><i><p><br><pre>.