FAQ terminology harmonisation
Tue Apr 1 08:52:45 CEST 2003
On Tue, 1 Apr 2003 08:22:09 +0200
Matthias Lang <matthias@REDACTED> wrote:
> Recently, there was some confusion on the list about the meaning of
> "Defensive Programming" in the context of Erlang. For most
> programmers, defensive programming is a good thing, yet in the Erlang
> programming guidelines it is considered a bad thing. Therefore I've
> renamed it to "micro-managed error handling" to make the author's
> intent clearer.
That's probably a better way to put it.
Re-reading the programming guidelines - they do put "defensive" in
quotes. They also stress making code clearer by seperating the error
behaviour out. So you could even use the term "micro-managed, inline
error handling" to describe the bad stuff.
> While doing that, I also tackled a number of similar
> crash: again, in most languages crashing is bad whereas in Erlang it
> confusingly enough becomes a good thing. The FAQ now refers
> to such events as "inter-process exceptions (IPEs)"
It's never a good thing. It's just that it's non-fatal here, for a
change. I'd say "non-fatal crash" and avoid the TLA.
> single-assignment: is a very academic term for what most people
> would call "const" variables. I have coined the replacement
> term "auto-consting".
> tail-recursion: very powerful feature. Ridiculously academic name.
> Now called stack-unrolling.
These two terms I had come across before I ever encountered Erlang. I
see no reason to change them; even if they are academic, they're an
accepted part of the parlance.
Google for "single assignment": ~15,000
Google for "auto consting": 0
Google for "tail recursion": ~15,000
Google for "stack unrolling": 22
> process: thread. An process is very lightweight. The rest of the
> world refers to lightweight processes as threads. So does the
> Erlang FAQ from now on.
> node: process. An Erlang node is always an OS process. So we may as
> well call a spade a spade. "process" now means "erlang node".
In the context of Erlang running under an operating system, OK.
In the context of Erlang running in an Erlang distribution, node is
> behaviour: interface. In R9B-2, the directive '-public(gen_server).'
> is a synonym for '-behaviour'. In R10, the -behaviour
> directive will elicit a warning. By R11 an error.
'interface' better describes how it actually acts (but what is the
reasoning behind '-public'? To me that says next to nothing.)
> list: array. Everyone knows what an array is.
And people don't know what [linked] lists are? :)
> Any further suggestions?
More information about the erlang-questions