<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jan 26, 2015 at 3:24 PM, Leonard Boyce <span dir="ltr"><<a href="mailto:leonard.boyce@lucidlayer.com" target="_blank">leonard.boyce@lucidlayer.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div id=":12t" class="" style="overflow:hidden">I'm sure to get some hate for this, but I often find it easiest to<br>
explain in imperative programming terms to people new to the language;<br>
<br>
module == class<br>
public methods go in -exports([])<br>
private methods are not exported and are only callable from within the<br>
module itself</div></blockquote></div><br>The only problem with such an explanation is that it isn't precise, which may lead people to make the wrong train-of-thought later on in the process. The imprecision is due to how many OOP-languages conflate different concepts[0] such as class, module, encapsulation, namespace, scope, and package into the very same thing. In Erlang, you would only ascribe some of those properties to a module, but not all of them. Also, the term "class" means different things depending on your programming language background. And some languages with OOP concepts do not have a notion of class, while they do have the module concept.</div><div class="gmail_extra"><br></div><div class="gmail_extra">On the other hand, it may propel some learners to a better position quickly, so it falls both ways.<br><br clear="all"><div>[0] Even the concept of OO is not that well defined. I love to point out Jonathan Rees on OO: <a href="http://www.paulgraham.com/reesoo.html">http://www.paulgraham.com/reesoo.html</a> in which he describes how different OO concepts are cherry picked to form the viewpoint that *your* language is object oriented.</div><div><br></div>-- <br><div class="gmail_signature">J.</div>
</div></div>