[erlang-questions] Beginners tutorials

Thu Jun 12 17:47:15 CEST 2014

As a not-so-noobie clawing my way up the Erlang learning curve, I concur with Loïc. 
One of the biggest challenges I had as I set out to learn Erlang without mentoring was making sense of Erlang source code that I found on the web. Here were these weird modules that seemed to relate to one another, but where do I enter the tangle of code to trace the logic of the program? I was studiously working through Programming Erlang and the other major works of the Erlang canon and learning much about Erlang syntax, but simply couldn't grasp the high-level logic of source I found on the web. Consequently, there was no way I could even think about writing a useful Erlang program.
It wasn't until I finally grasped the structure of OTP applications that it began to come together--- took months and months to reach that point. That still left the mysterious and scary process of creating Erlang releases. But, at least, I could sort of follow and admire the works of various Erlang gurus.
I venture that there is direct correlation between early success and noobie loyalty. Fortunately I'm a stubborn cus so I stuck it out through the hours and hours of frustration.  How many Erlang tire kickers drop out along the way?
Loïc's guide to building an Erlang release was a powerful epiphany. At last I felt maybe I could build something in Erlang of use to myself and maybe the world.
Jesse Gumm and I are working on the definitive Nitrogen text.  In it, we have a chapter called Erlang from the Top Down. The  whole premise of the book is to build success upon early success, learning Erlang as you go. Early days yet, but it's looking promising.
All the best,
-----Original Message-----
From: "Loïc Hoguin" <essen@REDACTED>
Sent: Thursday, June 12, 2014 11:10am
To: "Joe Armstrong" <erlang@REDACTED>, "Erlang" <erlang-questions@REDACTED>
Subject: Re: [erlang-questions] Beginners tutorials

The simple nodejs example works because it's a nodejs example and not a 
Javascript example. Someone who doesn't know Javascript (pretty much 
equivalent to someone who doesn't know programming at all) won't 
understand it. In particular it has a number of objects in it, and these 
are not what you start learning a language with.

Most people who look at Erlang necessarily have to learn a number of 
things that people who look at nodejs don't. You can't dumb it down as 
much as nodejs can.

The other issue would be that teaching someone to do that in Erlang 
would be counter-productive. Do you really want to teach people to do 
that and then tell them they're doing it wrong? I think the bigger 
difference here is that nodejs uses a scripting language vs Erlang's 
compiled/run in a VM language. There's simply more to do and learn 
before you can start something. You have to compile the file. You have 
to start the VM with the proper paths set. And so on. Since you have to 
do all that, why not explain it properly from the beginning?

That's why the Cowboy guide starts with building a release. It takes 
about five minutes to go from nothing to your first release running a 
hello world application. Of course that's not as fast as nodejs, but we 
simply can't go that fast anyway. We're not a scripting language. Still 
I think that's a pretty quick way to start.

The chapter is here if you want to take a look and provide feedback: 

On 06/12/2014 04:54 PM, Joe Armstrong wrote:
> Re: Garrett's great talk at EUC2014
> The point has been made many times before that
> "There are no easy Erlang getting started guides"
> So I thought I'd take a look at Node.js.
> The node js home page (node.js) starts with a simple example
> <quote>
> var http = require('http');
> http.createServer(function (req, res) {
> res.writeHead(200, {'Content-Type': 'text/plain'});
> res.end('Hello World\n');
> }).listen(1337, '');
> console.log('Server running at');
> To run the server, put the code into a file example.js and execute it
> with the node program from the command line:
> % node example.js
> Server running at
> </endquote>
> It's pretty easy to knock up an almost identical example in Erlang -
> using any of the well-known web
> servers in the background, unfortunately this has not been done, or if
> it has been done
> it's not easy to find the examples (or if there are examples I can't
> find them)
> I was vaguely thinking of making some examples that are more-or-less
> isomorphic to the
> node.js examples and then applying small transformation steps to turn
> then from idiomatic node.js code to idiomatic Erlang code.
> Although I could find a simple hello world example in node.js I could
> not find a tutorial that
> started with a simple example and then built on it in very small steps
> adding routing, authentication,
> database access and so on.
> Does anybody know of some examples of node.js that could be used for this.
> Cheers
> /Joe
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions

Loïc Hoguin
erlang-questions mailing list
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20140612/82bee419/attachment.htm>

More information about the erlang-questions mailing list