[erlang-questions] Potion: was "Erlang for youngsters"

Richard A. O'Keefe ok@REDACTED
Sun Aug 17 06:53:46 CEST 2014

On 17/08/2014, at 3:56 PM, Michael Turner wrote:
> Has anyone ever done any /science/ on what makes a language easily learned, especially by children?

The Psychology of Programming Interest Group would be the right
people to ask about that.

For example, the PPIG2014 conference in June had a paper
"Educational Programming Languages: The Motivation to Learn
with Sonic Pi" by Arabella Jane Sinclair.
Check http://www.sussex.ac.uk/Users/bend/ppig2014/

> A very cool thing about the web is that enables this kind of research as never before. Iterating over the standard core concepts and styles in programming languages, one might propose syntax and semantics for each concept, provide a code snippet for it, throw it out to many untutored eyes and ask, "What do you guess this would do?"

To be honest, I would not expect anything of value from that.
When I was learning to program, three common mistakes made by
others were
 - treating "IF (expr) stmt" as a declarative "WHENEVER
   expr becomes true, do stmt"
 - treating "WHILE (expr) stmt" as a declarative "AS SOON AS
   expr, stop doing stmt."
 - treating "var = expr" as a declarative and assuming that
   the order of such statements did not matter.
"Untutored eyes" found no real concept in the brain behind them
of what such things *might* mean.  If someone doesn't "get" some
syntax, maybe they don't have the concept and wouldn't "get" it
no matter *what* the syntax was.  To me it's obvious that
    prices := items par collect: [:each | each totalPrice]
is a parallel map, but it *cannot* be understood by anyone who
doesn't already know what a parallel map *is*, and such a one
has already been exposed to some programming language, so dear
old "familiar = better" lifts its hoary head and starts biting again.

As a teenager, I was motivated to learn how to build ham radios
and did learn enough electronics to do so.  I was *not* motivated
enough to learn Morse Code -- I could transmit on 144 MHz and
above without that -- so I didn't.  (My licence lapsed years ago,
but I was ZL1TQW for a little while.)  I and some others in the
school computer club were sufficiently motivated to learn
portapunch Fortran, *not* something ever designed to be child-friendly.

LOGO was learnable by schoolchildren, even ones sufficiently
immature to think that naming variables and procedures with
swearwords was funny.  For that matter, micro-PROLOG was learnable
by schoolchildren.

With the possible exception of joke languages like Intercal and
Brain*uck, I suspect that "youngsters" can learn *any* programming
language their elders would be willing to use *IF* they want to,
and they'll want to if they believe that something of value to
*them* will be the outcome.

I hate saying this.  No, it makes me *SICK* to say this, but
there is a sense in which the most learnable language at the
moment is Javascript.  There's pretty much immediate payoff
from putting even a modest amount of Javascript into a web page.

> We might frame each of these snippets with a theory about what works, only to discover that the misconceptions that arise about it are telling us something very interesting about some other aspect of coding entirely, not the one we're trying to explore.

Now *that* I believe.  The one software engineering experiment I
tried, where the research question "are nice_identifiers easier
to read than uglyNastyOnes" didn't get answered, but "are students
willing to read 2 pages of code without a syntax-colouring editor
and a debugger" was.  (The answer was "no.")

> The results of such experiments might finally put to rest (in the minds of the rational, anyway) many of these syntax religion conflicts,

Bet you $50 it doesn't happen in my lifetime?

One problem is that programming languages are tangled up
with libraries and application areas.  People are always
going to think "Foo [which happens to provide extensive
high-quality libraries for the things I mostly do] is easy
to use and understand for my purposes, therefore Foo syntax
is the best."

More information about the erlang-questions mailing list