[erlang-questions] Erlang for youngsters

Torben Hoffmann torben.hoffmann@REDACTED
Thu Jun 19 23:47:17 CEST 2014

Hi Lee,

What would you use as the first language? Erlang or Elixir? And why?


Lee Sylvester writes:

> My 5 cents…
> I started using Google Go, as I needed concurrency with lightweight processes for cloud applications development.  Problem was, it was too immature.  I enjoyed the language, but I found I had to do so much grunt work that it was tiring and the road to completion was too long.  So, I looked into Erlang.  Same concurrent goodness. Same lightweight processes.  Much more mature.
> The first thing I did was read Learn You Some Erlang for Great Good.  Very good book, but very verbose.  Still, it was worth reading.  However, while Learn You Some Erlang helped me understand the grammar and the context of development in Erlang, it was Erlang/OTP in Action that grounded it and gave me a solid understanding in how apps should be written in Erlang.
> It took me a week to learn enough to write my first app.  It took two weeks for me to feel comfortable with the language and platform as a whole.  Now, I feel like Erlang is how platforms should be built.
> Recently, I jumped onto the Elixir bandwagon.  Elixir is very much like Erlang in many ways, but taken a step further, with a nicer syntax and some added goodness.  I think Elixir is where I’ll stay for some time :-)
> Btw, writing concurrent, fault-tolerant and scalable apps in Erlang is crazy simple.  I often laugh to myself when things just work and scale like I wanted them to, with so little effort.
> Cheers,
> Lee
> On 16 Jun 2014, at 20:56, Torben Hoffmann <torben.hoffmann@REDACTED> wrote:
>> Yuri Lukyanov writes:
>>> I'm not a teacher at all and I don't pretend to be objective here. But
>>> my and my colleagues' experiences with Erlang tell me that Erlang is
>>> simple to learn. Most of us came to the current company with _zero_
>>> experience in Erlang or any other functional programming experiences.
>>> I personally was a complete PHP guy. My first impression on Erlang was
>>> "it's very different and hard to learn". But in two weeks we was able
>>> to read and understand Erlang code and write simple stuff.
>>> My point is that Erlang is not hard-to-learn, but rather
>>> hard-to-realize-it-is-easy-to-learn. It's easier than one can imagine.
>>> Perhaps, that could be a statement to spread out.
>> What happened for you guys?
>> How did you approach the learning?
>> What problems did you look at?
>> What motivated you to look at Erlang in the first place?
>> All info on your transformation is interesting.
>> Cheers,
>> Torben
>>> Just thinking aloud.
>>> On Mon, Jun 16, 2014 at 11:51 AM, Torben Hoffmann
>>> <torben.hoffmann@REDACTED> wrote:
>>>> Hi,
>>>> 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
>>>> thing!
>>>> 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?
>>>> Cheers,
>>>> Torben
>>>> [1] https://www.youtube.com/watch?v=SYkbqzWVHZI
>>>> --
>>>> Torben Hoffmann
>>>> CTO
>>>> Erlang Solutions Ltd.
>>>> Tel: +45 25 14 05 38
>>>> http://www.erlang-solutions.com
>>>> _______________________________________________
>>>> erlang-questions mailing list
>>>> erlang-questions@REDACTED
>>>> http://erlang.org/mailman/listinfo/erlang-questions
>> -- 
>> Torben Hoffmann
>> CTO
>> Erlang Solutions Ltd.
>> Tel: +45 25 14 05 38
>> http://www.erlang-solutions.com
>> _______________________________________________
>> erlang-questions mailing list
>> erlang-questions@REDACTED
>> http://erlang.org/mailman/listinfo/erlang-questions

Torben Hoffmann
Erlang Solutions Ltd.
Tel: +45 25 14 05 38

More information about the erlang-questions mailing list