<div dir="ltr">I have always contended that we should start teaching Erlang by teaching OTP and going back to processes as needed later. Yes this might be akin to teaching a script to solve a problem instead of the why however quick easy success builds confidence. <div>
<br></div><div>Just my 2 cents</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jun 16, 2014 at 9:50 AM, Garrett Smith <span dir="ltr"><<a href="mailto:g@rre.tt" target="_blank">g@rre.tt</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">On Mon, Jun 16, 2014 at 9:51 AM, Torben Hoffmann<br>
<<a href="mailto:torben.hoffmann@erlang-solutions.com">torben.hoffmann@erlang-solutions.com</a>> wrote:<br>
<br>
</div>-snip-<br>
<div class=""><br>
> I think that a learning resource focused on teaching people the Erlang model from the<br>
> ground up would be a great improvement. A clear narrative around how do we solve a<br>
> problem the Erlang way. Teaching the basic constructs is not the problem.<br>
><br>
> My initial target for such a learning resources would be young people in the higher<br>
> grades of elementary school, say 12-15 years. Why? Because I want to influence them<br>
> before their minds are totally corrupted by other programming models.<br>
><br>
> I don't think we would have to dumb anything down in particular for this group - we<br>
> just have to find a cool example and organise the learning around how to become so<br>
> good that one can solve such a problem.<br>
> Some sort of game will probably be the best candidate, say, some sort of Transport<br>
> Tycoon clone?!?!<br>
<br>
</div>I don't have enough experience teaching programming to this age group<br>
to provide anything more than a hunch. But I suspect that the Erlang<br>
way, which is hard enough for very seasoned programmers to grok, might<br>
be a bit ambitious for these young learners.<br>
<br>
I'm speaking in particular about the model that emerges when you<br>
isolate processes. It changes everything: your approach to building<br>
software (move from state oriented to activity oriented), error<br>
handling (move from defensive measures to assertive/let-it-crash),<br>
program structure (from monolith to system), and so on. The benefits<br>
of this shift are hard to get across, in my experience anyway. I wish<br>
it wasn't, or I wish I was better at communicating.<br>
<br>
I think maybe just teaching a new language might be enough ambition<br>
for this group. I don't mean to throw cold water on this. Just<br>
thinking out loud.<br>
<div class=""><br>
> And now for the controversial part of my idea: this should probably be done using<br>
> Elixir plus something for the GUI.<br>
> Yes, I said the other E word, so I'm ready to be stoned ;-) [1]<br>
><br>
> Why Elixir?<br>
><br>
> Programming Elixir requires the same understanding of the Erlang concurrency model in<br>
> order to program well. Otherwise you are just doing Ruby-on-BEAM, which is kinda lame<br>
> and misses the boat totally.<br>
><br>
> So using Elixir would allow us to expose people to the Erlang model, which I think is<br>
> the main point. The more people that uses the BEAM, the better for the<br>
> FindingDevelopers problem.<br>
><br>
> What is better about Elixir from a learning standpoint is, in my highly subjective<br>
> opinion, that you can get started quite easily with the mix tool.<br>
><br>
> Furthermore, the Elixir syntax is more familiar to youngsters. I asked my 12 year old<br>
> son to have a look in the "Introducing Elixir" book and his initial reaction was<br>
> "That's easy to read, it looks like lua." Minimising the amount of surprise is a good<br>
> thing!<br>
<br>
</div>All of these points are true -- Elixir has a huge advantage here.<br>
Which is why I'm afraid you must be stoned.<br>
<div class=""><br>
> Given that I think games are awesome for teaching there needs to be some sort of GUI<br>
> element at some point and here I'm leaning towards Elm (<a href="http://elm-lang.org" target="_blank">http://elm-lang.org</a>) since it<br>
> is functional, but other suggestions are most welcome.<br>
<br>
</div>All I can say for sure is that if you can create a simple developer<br>
experience around building anything related to *Minecraft* you have a<br>
chance at capturing the minds of an entire generation of programmers.<br>
<div class=""><br>
> Am I on the right track to anything with this?<br>
> Is there a need for such a learning resource?<br>
> Is Concurrent, Functional Programming relevant enough to warrant putting some energy into?<br>
<br>
</div>What does the 12 year old say?<br>
<div class="HOEnZb"><div class="h5">_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</div></div></blockquote></div><br></div>