<div dir="ltr"><div>Another problem with going to straight into OTP behaviours is that they hide the concurrency, you can write a large full fledged application without a ! or receive in sight. There is of course nothing wrong with this per se, but sometimes people miss the fact that there is concurrency here and everything is running in separate processes and communicating with messages. They see gen_server:call as a function call. This is definitely a problem.<br>

<br></div>Robert<br><br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On 29 August 2014 02:17, zxq9 <span dir="ltr"><<a href="mailto:zxq9@zxq9.com" target="_blank">zxq9@zxq9.com</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 2014年8月28日 木曜日 16:43:13 Raoul Duke wrote:<br>
> also: (do you agree or not, i am curious) teach that one should reach<br>
> for OTP first, rather than assuming one will do it at the "low level"<br>
> of rolling your own stuff from "base" erlang-w/out-otp.<br>
<br>
</div>I know this wasn't directed at me, but its an important point, IMO.<br>
<br>
In my experience teaching someone OTP straight away results in the Erlang<br>
equivalent of boiler-plate. A lot of unnecessary gen_server stuff, for example.<br>
Its similar to a Java programmer starting out with Python and being class<br>
happy and writing setters and getters everywhere.<br>
<br>
I've found it better to instead pose different bits that OTP handles as<br>
problems first, in whatever language, and letting the person work through the<br>
issues involved themselves so they know where the problem areas actually are<br>
first. Then, showing them OTP is this "wow, thank goodness someone wrote all<br>
*that* already!" sort of experience, and they have a firm grip on just what<br>
tools are being provided instead of wandering around with this vague sense of<br>
problem->tool applicability.<br>
<br>
Fred seems to made a deliberate effort at this in LYSE and to great effect. The<br>
downside is that something like LYSE takes more time to get through than a<br>
blog tutorial intended for copypasta programming -- but that's time well spent<br>
by my way of thinking.<br>
<br>
-Craig<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>