FAQ terminology harmonisation

Chris Pressey cpressey@REDACTED
Tue Apr 1 08:52:45 CEST 2003

On Tue, 1 Apr 2003 08:22:09 +0200
Matthias Lang <matthias@REDACTED> wrote:

> Hi,
> 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
> problems:
>   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
still clearer.

>   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?
> Matthias


More information about the erlang-questions mailing list