[erlang-questions] Erlang newbie questions
Tue Oct 18 18:13:13 CEST 2011
Oh, yes, there is another confusion I might have created with my post. I
used "OTP application" to refer to behavior(application). Sorry for not
On 10/18/2011 05:51 PM, CGS wrote:
> Hi Garrett,
> I think you misunderstood me. I specified that "Erlang application"
> does not refer to "OTP application". It's true that I haven't
> specified what exactly is "Erlang application" in my context, but at
> least I mentioned that it's not about "OTP application".
> Nevertheless, your remark is correct that "single threaded"
> application can barely be considered as Erlang application, but, can
> anyone say you are not able to create a single threaded "Erlang
> application" by the mean of pure application and not as OTP designed it?
> Just to give an example, I created a simple "application" which is not
> OTP and I am calling it from YAWS <erl> tag. The "application" (which
> consists in a single module with two functions) accepts entries,
> formats the entries and sends messages to a server (where I used the
> full OTP design). It is an application by definition (it can be used
> as independent entity - how you launch it does not matter here - and
> it has a specific task) even if it is few lines only. So, that's what
> I called "Erlang application" (disregarding what's behind gen_tcp). It
> is single threaded, so, here we are at my definition of "single
> threaded Erlang application".
> I hope I was clear now and I apologize if I created any confusion. If
> my post still generates confusions, please, let me know.
> On 10/18/2011 04:27 PM, Garrett Smith wrote:
>> Hi CGS,
>> On Tue, Oct 18, 2011 at 3:32 AM, CGS<> wrote:
>>> The main point for entering the discussion is the fact that many who
>>> here were saying that if something crashes in your application
>>> doesn't kill
>>> your application like in C. I beg to differ on this point. If your
>>> application is single threaded, then your application (I do not
>>> speak here
>>> about OTP application) will crash if an error occurs there.
>> I'm inclined to argue that a "single threaded" application isn't a
>> valid Erlang app :)
>> I'll be slightly pedantic here -- just because I think it's worth
>> * When you run "erl" you start an OTP facility -- it's not an optional
>> feature; it's fundamental to an Erlang system
>> * A "single threaded" app would presumably be an app that's run using
>> "erl" with -s or -eval. That'll work for running an application, but
>> it's not the right way :)
>> * The right way to run an Erlang app is to create an OTP application
>> and include that app in a release, which is specified when you run
>> "erl" with the -boot option
>> If you run your Erlang application this way, you get all the benefits
>> people have been describing.
>> This is admittedly a bit of a bugaboo for me, but I think the
>> dichotomy that people draw between "Erlang" and "OTP" is overall not
>> helpful. The so called OTP patterns that are treated as
>> optional/advanced are fundamental to the way the Erlang runtime is
>> designed. So I tend to blur the two together into a single "Erlang" :)
>> I think with some improvements in tooling and documentation, the
>> headaches associated with using "OTP" will go away, which will be a
>> huge boon for developers -- especially those new to Erlang.
More information about the erlang-questions