<html>
<head>
<meta content="text/html; charset=windows-1252"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p>It might help to read "Erlang & OTP in Action" and work
through the exercises. It provides a pretty thorough,
step-by-step view of building a meaningful application in Erlang.<br>
</p>
<br>
<div class="moz-cite-prefix">On 12/15/16 7:04 AM, IRLeif wrote:<br>
</div>
<blockquote
cite="mid:CAJYp+xt3su6Q4ob_GVTsngDUKqSWZV+3SM6B-MjEzmV0bhfqvQ@mail.gmail.com"
type="cite">
<div dir="ltr">
<div>Dear Erlang community,</div>
<div><br>
</div>
<div>This is my first email to the mailing list. I apologize in
advance if this is odd or off-topic.</div>
<div><br>
</div>
<div>Coming from an object-oriented and data-centric background,
I have cognitive difficulties when it comes to
conceptualizing, thinking about and designing systems
consisting of modules, processes and key-value data stores.</div>
<div><br>
</div>
<div>My brain reverts to thinking about classes, objects,
inheritance trees, encapsulation and SQL-style relational data
models. I'm afraid this could lead to unidiomatic Erlang
system architectures and implementations, which would be
undesirable.</div>
<div><br>
</div>
<div>Here are some of the essential complexities I have
difficulties grasping:<br>
<br>
</div>
<div>A) Identifying discrete modules and processes and finding
good names for them.</div>
<div>B) Appointing supervisor and worker modules; defining
process hierarchies.</div>
<div>C) Deciding which processes should communicate with each
other and how.</div>
<div>D) Designing a sensible persistent data model with Mnesia
or other NoSQL data models (e.g. using CouchDB).</div>
<div>E) Deciding which processes should read and write
persistent data records.</div>
<div>F) Incorporating global modules/"shared facilities" like
event handlers, loggers, etc.</div>
<div>G) Visualizing the system architecture, processes and
communication lines; what kind of graphics to use.</div>
<div>H) Organizing source code files into separate projects and
directory structures.</div>
<div><br>
</div>
<div>Questions:</div>
<div><br>
1) How do you unlearn "bad habits" from object-oriented way of
thinking?</div>
<div>2) How do you think and reason about process-centric
systems designs?<br>
3) When designing a new system, how do you approach the above
activities?</div>
<div><br>
</div>
<div>I would appreciate any practical tips, examples, "mind
hacks" and resources that might help.</div>
<div><br>
</div>
<div>Kind regards,</div>
<div><br>
</div>
<div>Leif Eric Fredheim</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
erlang-questions mailing list
<a class="moz-txt-link-abbreviated" href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a>
<a class="moz-txt-link-freetext" href="http://erlang.org/mailman/listinfo/erlang-questions">http://erlang.org/mailman/listinfo/erlang-questions</a>
</pre>
</blockquote>
<br>
<pre class="moz-signature" cols="72">--
In theory, there is no difference between theory and practice.
In practice, there is. .... Yogi Berra</pre>
</body>
</html>