[erlang-questions] Erlang for youngsters

Torben Hoffmann torben.hoffmann@REDACTED
Mon Jun 16 09:51:22 CEST 2014


The wonderful thread on "Beginners tutorials"
(http://erlang.org/pipermail/erlang-questions/2014-June/079485.html) that Joe started
after the EUC last week has touched something in me and I want to get some feedback
on my ideas.

I think that Joe's original suggestion in the "Beginners tutorials" thread can do
something with regards to easing people into Erlang, but it cannot be the only thing.

I saw Garrett's wonderful talk at the EUC last week - Why the Cool Kid's Don't Use
Erlang (http://www.erlang-factory.com/euc2014/garrett-smith) - and it suggested a
number of things we, as a community, can do better.

One thing that stood out in relation to this thread was HardToLearn.

HardToLearn influences a lot of things, but it also drives the worry
FindingDevelopers, which bad for the career prospects for all of us.
See Garrett's talk (when online) and you will understand.

Why is Erlang HardToLearn?

One can point to documentation and say it is not optimal.
One can ask for books on Erlang Concurrency Patterns as Joe did.

But I feel there is a more fundamental problem that we need to address:
    how to think like an Erlanger.

Erlang is a concurrent functional language with a unique failure model.
More than 2 nines of the people being taught anything on programming will be exposed
to procedural or object oriented languages with exceptions and be told that threads
are hard (they are 'cause they will make you loose your hair).

I think that a learning resource focused on teaching people the Erlang model from the
ground up would be a great improvement. A clear narrative around how do we solve a
problem the Erlang way. Teaching the basic constructs is not the problem.

My initial target for such a learning resources would be young people in the higher
grades of elementary school, say 12-15 years. Why? Because I want to influence them
before their minds are totally corrupted by other programming models.

I don't think we would have to dumb anything down in particular for this group - we
just have to find a cool example and organise the learning around how to become so
good that one can solve such a problem.
Some sort of game will probably be the best candidate, say, some sort of Transport
Tycoon clone?!?!

And now for the controversial part of my idea: this should probably be done using
Elixir plus something for the GUI.
Yes, I said the other E word, so I'm ready to be stoned ;-) [1]

Why Elixir?

Programming Elixir requires the same understanding of the Erlang concurrency model in
order to program well. Otherwise you are just doing Ruby-on-BEAM, which is kinda lame
and misses the boat totally.

So using Elixir would allow us to expose people to the Erlang model, which I think is
the main point. The more people that uses the BEAM, the better for the
FindingDevelopers problem.

What is better about Elixir from a learning standpoint is, in my highly subjective
opinion, that you can get started quite easily with the mix tool.

Furthermore, the Elixir syntax is more familiar to youngsters. I asked my 12 year old
son to have a look in the "Introducing Elixir" book and his initial reaction was
"That's easy to read, it looks like lua." Minimising the amount of surprise is a good

Given that I think games are awesome for teaching there needs to be some sort of GUI
element at some point and here I'm leaning towards Elm (http://elm-lang.org) since it
is functional, but other suggestions are most welcome.

Am I on the right track to anything with this?
Is there a need for such a learning resource?
Is Concurrent, Functional Programming relevant enough to warrant putting some energy into?


[1] https://www.youtube.com/watch?v=SYkbqzWVHZI
Torben Hoffmann
Erlang Solutions Ltd.
Tel: +45 25 14 05 38

More information about the erlang-questions mailing list