<html><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:10pt"><div class="" style=""><span class="" style=""><br style=""></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal; background-color: transparent;" class=""><span class="" style="">In the dark ages Ken Kahn demoed ToonTalk, which I thought was a pretty neat way of teaching concurrent programming (with actors) to kids. </span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal; background-color: transparent;" class=""><span class="" style=""><br class="" style=""></span></div><div style="background-color: transparent;" class=""><span class="" style=""><a
href="https://en.wikipedia.org/wiki/ToonTalk" class="" style="">ToonTalk - Wikipedia, the free encyclopedia</a><br class="" style=""></span></div><div style="width:450px; font-family: 'Georgia', 'Times', 'Times New Roman', 'serif';" contenteditable="false" id="enhancrCard_0" class=""><table class="" cellspacing="0" cellpadding="0" style="width:450px; height:auto; position: relative; margin-top:5px; margin-bottom: 5px; display: block;"><tbody class="" style=""><tr class="" style=""><td colspan="6" class="" style="height: 1px; background-color: #e5e5e5;"><div class="" style="height: 1px; background-color: #e5e5e5;"></div></td></tr><tr class="" style=""><td rowspan="2" class="" style="width: 1px; background-color: #e5e5e5;"><div class="" style="width: 1px; background-color: #e5e5e5;"></div></td><td class="" colspan="2" style="width: 100%; vertical-align: middle; font-family: 'Georgia', 'Times', 'Times New Roman', 'serif';"><div class=""
style="line-height:16.5px; background-color: #ffffff; width: 448px;"><div class="" style="word-wrap: break-word; word-break: break-all; padding: 7px 20px 0px 14px;"><span class="" style=""></span><span class="" style=""></span><a href="https://en.wikipedia.org/wiki/ToonTalk" class="" style="text-decoration: none !important; color: #000000 !important;"><span class="" style="margin: 0; font-weight: normal;margin-bottom: 4px; font-size: 18px; line-height: 21px; max-height: 43px; color: #000000; overflow: hidden !important; display: inline-block;">ToonTalk - Wikipedia, the free encyclopedia</span></a><div style="font-size: 13px; line-height: 20px; color: #999999; max-height: 81px; font-family: 'Georgia', 'Times', 'Times New Roman', 'serif';overflow: hidden;" class="">ToonTalk is a computer programming system intended to be programmed by children. The "Toon" part stands for cartoon. The system's presentation is in the form of animated characters, including
robots that can be trained by example. It is one of the few successful implementations ou...</div></div></div></td><td class="" rowspan="2" style="width: 1px; background-color: #e5e5e5;"><div class="" style="width: 1px; background-color: #e5e5e5;"></div></td></tr><tr class="" style=""><td class="" style="width: 100%; vertical-align: middle; font-family: 'Arial', 'Helvetica Neue', 'Helvetica', 'sans-serif';"><div class="" style="font-size: 0pt; padding: 3px 20px 9px 14px;"><a href="https://en.wikipedia.org/wiki/ToonTalk" class="" style="color: black; text-decoration: none !important;cursor:pointer !important;" target="_blank"><span class="" style="display: inline-block; line-height: 11px; max-width: 348px; min-width: 288px; overflow: hidden; max-height: 13px; word-break: break-all;"><span class="" style="vertical-align:middle; font-size: 9px; line-height: 11px; color: #999999; -moz-text-size-adjust: none; -ms-text-size-adjust: none;
-webkit-text-size-adjust:none; text-size-adjust:none;">View on <span style="font-weight: bold" class="">en.wikipedia.org</span></span></span></a></div></td><td class="" style="vertical-align: middle; width: 100px; font-family: 'Arial', 'Helvetica Neue', 'Helvetica', 'sans-serif';"><div class="" style="padding: 6px 20px 12px 0px; max-width: 100px; min-width: 80px; overflow: hidden; text-align: right; line-height: 11px; max-height: 13px; font-size: 0pt;"><span class="" style="vertical-align:middle; font-size: 9px; line-height: 11px; color: #999999; -moz-text-size-adjust: none; -ms-text-size-adjust: none; -webkit-text-size-adjust:none; text-size-adjust:none;">Preview by Yahoo</span></div></td></tr><tr class="" style=""><td class="" colspan="6" style="height: 1px; background-color: #e5e5e5;"><div class="" style="height: 1px; background-color: #e5e5e5;"></div></td></tr></tbody></table></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family:
HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal; background-color: transparent;" class=""><br class="" style=""></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal; background-color: transparent;" class="">Or this: <a href="http://www.toontalk.com/English/computer.htm" class="" style="">Computer scientists ask "What is ToonTalk?"</a></div><div style="width:450px; font-family: 'Georgia', 'Times', 'Times New Roman', 'serif';" contenteditable="false" id="enhancrCard_1" class="link-enhancr-attachment link-enhancr-element"><table class="link-enhancr-element" cellspacing="0" cellpadding="0" style="width:450px; height:auto; position: relative; margin-top:5px; margin-bottom: 5px; display: block;"><tbody><tr class="link-enhancr-element"><td colspan="6" class="link-enhancr-element"
style="height: 1px; background-color: #e5e5e5;"><div class="link-enhancr-element" style="height: 1px; background-color: #e5e5e5;"></div></td></tr><tr class="link-enhancr-element"><td rowspan="2" class="link-enhancr-element" style="width: 1px; background-color: #e5e5e5;"><div class="link-enhancr-element" style="width: 1px; background-color: #e5e5e5;"></div></td><td class="link-enhancr-element" colspan="2" style="width: 100%; vertical-align: middle; font-family: 'Georgia', 'Times', 'Times New Roman', 'serif';"><div class="link-enhancr-text-part link-enhancr-element" style="line-height:16.5px; background-color: #ffffff; width: 448px;"><div class="link-enhancr-element" style="word-wrap: break-word; word-break: break-all; padding: 7px 20px 0px 14px;"><span class="link-enhancr-element icon icon-shrink link-enhancr-toggle"></span><span class="link-enhancr-element icon icon-close link-enhancr-delete"></span><a
href="http://www.toontalk.com/English/computer.htm" class="link-enhancr-card-urlWrapper link-enhancr-element" style="text-decoration: none !important; color: #000000 !important;"><span class="link-enhancr-element link-enhancr-card-title" style="margin: 0; font-weight: normal;margin-bottom: 4px; font-size: 18px; line-height: 21px; max-height: 43px; color: #000000; overflow: hidden !important; display: inline-block;">Computer scientists ask "What is ToonTalk?"</span></a><div style="font-size: 13px; line-height: 20px; color: #999999; max-height: 81px; font-family: 'Georgia', 'Times', 'Times New Roman', 'serif';overflow: hidden;" class="link-enhancr-card-description link-enhancr-element">The Computer Science behind
ToonTalk ToonTalk is an interpreter for a concurrent constraint
programming language. </div></div></div></td><td class="link-enhancr-element" rowspan="2" style="width: 1px; background-color: #e5e5e5;"><div class="link-enhancr-element" style="width: 1px; background-color: #e5e5e5;"></div></td></tr><tr><td class="link-enhancr-element" style="width: 100%; vertical-align: middle; font-family: 'Arial', 'Helvetica Neue', 'Helvetica', 'sans-serif';"><div class="link-enhancr-element" style="font-size: 0pt; padding: 3px 20px 9px 14px;"><a href="http://www.toontalk.com/English/computer.htm" class="link-enhancr-card-url link-enhancr-element" style="color: black; text-decoration: none !important;cursor:pointer !important;" target="_blank"><span class="link-enhancr-element link-enhancr-view-on" style="display: inline-block; line-height: 11px; max-width: 348px; min-width: 288px; overflow: hidden; max-height: 13px; word-break: break-all;"><span class="link-enhancr-element link-enhancr-mobile-no-resize" style="vertical-align:middle;
font-size: 9px; line-height: 11px; color: #999999; -moz-text-size-adjust: none; -ms-text-size-adjust: none; -webkit-text-size-adjust:none; text-size-adjust:none;">View on <span style="font-weight: bold" class="link-enhancr-view-on-domain">www.toontalk.com</span></span></span></a></div></td><td class="link-enhancr-element" style="vertical-align: middle; width: 100px; font-family: 'Arial', 'Helvetica Neue', 'Helvetica', 'sans-serif';"><div class="link-enhancr-element link-enhancr-preview-wrapper" style="padding: 6px 20px 12px 0px; max-width: 100px; min-width: 80px; overflow: hidden; text-align: right; line-height: 11px; max-height: 13px; font-size: 0pt;"><span class="link-enhancr-element link-enhancr-preview-by link-enhancr-mobile-no-resize" style="vertical-align:middle; font-size: 9px; line-height: 11px; color: #999999; -moz-text-size-adjust: none; -ms-text-size-adjust: none; -webkit-text-size-adjust:none; text-size-adjust:none;">Preview by
Yahoo</span></div></td></tr><tr class="link-enhancr-element"><td class="link-enhancr-element" colspan="6" style="height: 1px; background-color: #e5e5e5;"><div class="link-enhancr-element" style="height: 1px; background-color: #e5e5e5;"></div></td></tr></tbody></table></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal; background-color: transparent;" class=""><span style="background-color: transparent;" class=""><br></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal; background-color: transparent;" class=""><span style="background-color: transparent;">Best,</span><br></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;
font-style: normal; background-color: transparent;" class="">Thomas</div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal; background-color: transparent;" class=""><br class="" style=""></div> <div class="qtdSeparateBR"><br><br></div><div class="yahoo_quoted" style="display: block;"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 10pt;" class=""> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 12pt;" class=""> <div dir="ltr" class="" style=""> <font size="2" face="Arial" class="" style=""> On Monday, June 16, 2014 2:47 PM, Fred Hebert <mononcqc@ferd.ca> wrote:<br class="" style=""> </font> </div> <blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; margin-top: 5px; padding-left: 5px;"
class=""> <br class="" style=""><br class="" style=""> <div class="" style="">There's a lot to discuss in this thread (and Joe's one last week). This<br clear="none" class="" style="">is a bit of a rambling from me, but yeah. <br clear="none" class="" style=""><br clear="none" class="" style="">On 06/16, Torben Hoffmann wrote:<br clear="none" class="" style="">> Why is Erlang HardToLearn?<br clear="none" class="" style="">> <br clear="none" class="" style=""><br clear="none" class="" style="">We should ask newcomers. When I started, Erlang was hard to learn for<br clear="none" class="" style="">specific reasons: terminology, availability of information (we had the<br clear="none" class="" style="">series of blog posts about an Erlang bank in OTP and the trapexit<br clear="none" class="" style="">cookbooks, and that was most of it if you didn't feel like paying for a<br clear="none" class="" style="">book)<br clear="none" class="" style=""><br
clear="none" class="" style="">Since I've learned the language, the context changed in massive ways.<br clear="none" class="" style="">LYSE is available, Cowboy has gained docs, Chicagoboss has a manual,<br clear="none" class="" style="">more books have come around, more tutorials have been published, more<br clear="none" class="" style="">talks have been made available.<br clear="none" class="" style=""><br clear="none" class="" style="">The problem isn't solved, but as a community, we shifted it to a new<br clear="none" class="" style="">different area. Newcomers will have had the difficult pressure point<br clear="none" class="" style="">somewhere else, and newcomers should therefore be able to tell us what<br clear="none" class="" style="">*they* found hard, without having more experienced people contradicting<br clear="none" class="" style="">them on many points -- We learned at a different time in a different<br clear="none" class=""
style="">context.<br clear="none" class="" style=""><br clear="none" class="" style="">We should ask people who have quit learning the language. Sometimes we<br clear="none" class="" style="">will disagree, sometimes it will be due to their background of areas of<br clear="none" class="" style="">interest, but there is a lot to for us to learn there.<br clear="none" class="" style=""><br clear="none" class="" style="">We should ask people who don't feel like learning it. We have pieces of<br clear="none" class="" style="">data, such as people not liking the documentation, but we don't know<br clear="none" class="" style="">*why* that is. Fixing the doc without fixing what's wrong is a bad idea,<br clear="none" class="" style="">the same way premature optimization is.<br clear="none" class="" style=""><br clear="none" class="" style=""><br clear="none" class="" style="">> how to think like an Erlanger.<br clear="none" class=""
style="">> <br clear="none" class="" style="">> <br clear="none" class="" style="">> I think that a learning resource focused on teaching people the Erlang model from the<br clear="none" class="" style="">> ground up would be a great improvement. A clear narrative around how do we solve a<br clear="none" class="" style="">> problem the Erlang way. Teaching the basic constructs is not the problem.<br clear="none" class="" style="">> <br clear="none" class="" style=""><br clear="none" class="" style="">Architecture is a definitive place where that needs to happen. I<br clear="none" class="" style="">remember fumbling around wondering "but what do I make a process?" --<br clear="none" class="" style="">not sure if it's still an issue.<br clear="none" class="" style=""><br clear="none" class="" style="">I remember (and still often encounter) the issue of algorithms and<br clear="none" class="" style="">datastructure. Everything you've
learned before tends to assume O(1)<br clear="none" class="" style="">access to mutable memory and it's no longer true. But then again, the<br clear="none" class="" style="">relevance of this depends who you want to teach to. People who already<br clear="none" class="" style="">program, or people who don't program yet.<br clear="none" class="" style=""><br clear="none" class="" style="">> My initial target for such a learning resources would be young people in the higher<br clear="none" class="" style="">> grades of elementary school, say 12-15 years. Why? Because I want to influence them<br clear="none" class="" style="">> before their minds are totally corrupted by other programming models.<br clear="none" class="" style="">> <br clear="none" class="" style=""><br clear="none" class="" style="">Ah, so you want to be the first one to corrupt their minds, then!<br clear="none" class="" style=""><br clear="none" class="" style="">Snark aside,
if we want to teach children, we should reach out to<br clear="none" class="" style="">organisms such as <a shape="rect" href="https://www.codeclub.org.uk/" target="_blank" class="" style="">https://www.codeclub.org.uk/ </a>(who do this *every<br clear="none" class="" style="">day*). We should look at what it is they do, ask them, see what they<br clear="none" class="" style="">recommend, and tell us what wouldn't work.<br clear="none" class="" style=""><br clear="none" class="" style="">We can also look at How To Design Programs<br clear="none" class="" style="">(<a shape="rect" href="http://www.ccs.neu.edu/home/matthias/HtDP2e/" target="_blank" class="" style="">http://www.ccs.neu.edu/home/matthias/HtDP2e/</a>), a book and site designed<br clear="none" class="" style="">to teach programming to new people. They show you how to animate rocket<br clear="none" class="" style="">ships in the first chapter. Erlang books (mine included) tell you what<br
clear="none" class="" style="">an atom is and why you should care. That's okay, they're not meant for<br clear="none" class="" style="">newcomers.<br clear="none" class="" style=""><br clear="none" class="" style="">Or we can try reinventing the wheel based on what we feel is really<br clear="none" class="" style="">important, but what we feel is really important likely doesn't overlap<br clear="none" class="" style="">super well to what is important to a teenager. There are people who<br clear="none" class="" style="">dedicate their lives to working on that problem, they're the ones from<br clear="none" class="" style="">whom we should be looking for for guidance.<br clear="none" class="" style=""><br clear="none" class="" style="">Many of us know Erlang, but few of us know how to teach. A lot of us<br clear="none" class="" style="">have forgotten what it is like to not know how to program.<br clear="none" class="" style=""><br clear="none" class=""
style="">> <br clear="none" class="" style="">> What is better about Elixir from a learning standpoint is, in my highly subjective<br clear="none" class="" style="">> opinion, that you can get started quite easily with the mix tool.<br clear="none" class="" style="">> <br clear="none" class="" style=""><br clear="none" class="" style="">If we want to reach out to crowds who aren't familiar with programming<br clear="none" class="" style="">at all, mix isn't gonna cut it either. Look at Scratch<br clear="none" class="" style="">(<a shape="rect" href="http://scratch.mit.edu/" target="_blank" class="" style="">http://scratch.mit.edu/</a>), look at Logo, look at Racket's graphical<br clear="none" class="" style="">language (<a shape="rect" href="http://docs.racket-lang.org/teachpack/2htdpimage-guide.html" target="_blank" class="" style="">http://docs.racket-lang.org/teachpack/2htdpimage-guide.html</a>),<br clear="none" class="" style="">look at
Arduino's documentation<br clear="none" class="" style="">(<a shape="rect" href="http://arduino.cc/en/Tutorial/HomePage" target="_blank" class="" style="">http://arduino.cc/en/Tutorial/HomePage</a>). You've mentioned elm, which<br clear="none" class="" style="">looks like it has another great intro.<br clear="none" class="" style=""><br clear="none" class="" style="">We have a long way to go, whether Elixir or Erlang is being used. Most<br clear="none" class="" style="">people still put Erlang's sweet spot into the 'server' area in Garrett's<br clear="none" class="" style="">data. Do we have to make the person we're gonna teach to care about<br clear="none" class="" style="">servers to have teaching Erlang worth their time? Because it looks like<br clear="none" class="" style="">otherwise, we might as well teach them a language more adapted to what<br clear="none" class="" style="">they care about, not one adapted to what we care about.<br clear="none"
class="" style=""><br clear="none" class="" style="">If we plan on reaching out to the already-programmign crowd, then yes, a<br clear="none" class="" style="">tool like Mix is useful. It would also be useful within Erlang for its<br clear="none" class="" style="">community. Rebar templates aren't even that far from allowing a lot of<br clear="none" class="" style="">that functionality, but the community hasn't banded together to do it.<br clear="none" class="" style=""><br clear="none" class="" style="">There are probably deep-rooted reasons for it -- many of us adopted<br clear="none" class="" style="">Erlang when you managed dependencies by downloading them and checking<br clear="none" class="" style="">them in your repo, used makefiles all the time, and whatnot. The stuff<br clear="none" class="" style="">rebar or erlang.mk do is already convenient enough for a lot of us to<br clear="none" class="" style="">have felt the pain eased away, at least to
the extent where we're not<br clear="none" class="" style="">compelled to help fix the problem anymore. The workarounds are nicer<br clear="none" class="" style="">than what we had before, so workarounds it will be. Forever.<br clear="none" class="" style=""><br clear="none" class="" style="">The same is true for the documentation. They're mostly reference manuals,<br clear="none" class="" style="">which by definition are to be used as a reference -- it is expected you<br clear="none" class="" style="">know their content and are only looking up additional information, or<br clear="none" class="" style="">data to help you recall what you already learned. They won't be good to<br clear="none" class="" style="">learn (the tutorials are nicer, but who knows about them?), and none of<br clear="none" class="" style="">the regulars will have any incentive to fix it.<br clear="none" class="" style=""><br clear="none" class="" style="">Anyway, that's a long rant
enough.<br clear="none" class="" style=""><br clear="none" class="" style="">Regards,<br clear="none" class="" style="">Fred.<div class="" id="yqtfd12035" style=""><br clear="none" class="" style="">_______________________________________________<br clear="none" class="" style="">erlang-questions mailing list<br clear="none" class="" style=""><a shape="rect" ymailto="mailto:erlang-questions@erlang.org" href="mailto:erlang-questions@erlang.org" class="" style="">erlang-questions@erlang.org</a><br clear="none" class="" style=""><a shape="rect" href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank" class="" style="">http://erlang.org/mailman/listinfo/erlang-questions</a><br clear="none" class="" style=""></div><br class="" style=""><br class="" style=""></div> </blockquote> </div> </div> </div> </div></body></html>