FAQ terminology harmonisation

Joe Armstrong joe@REDACTED
Wed Apr 2 11:58:06 CEST 2003

On 1 Apr 2003, martin j logan wrote:

> All, 
>     This thread has yielded quite a discussion. I must admit that I
> became quite sick reading Bjorns email proposing pointer syntax and
> destructive assignment, I did not catch the joke until I read further -
> scary.  While some of the suggestions about "nice-ing up" Erlang
> terminology might not sit well with most people on this list, I think
> the idea of making Erlang terminology intelligible and accessible to
> managers and the like is an issue that needs to be addressed. I know
> that all of the people on this list love the language the way it is and
> would like to see it spread. I also know what it is like to try to sell
> a C/C++ shop's management, and engineers for that matter, on something
> new like Erlang. This task is made more difficult when things like,
> letting processes crash being a good thing, are mentioned. It is
> difficult for them to wrap their minds, addled by years of C/C++
> programming:) around "not being defensive, just letting it crash, and
> spawn 20 thousand processes". This difficulty is compounded with those
> phrases are thrown in the mix with dynamic typing, run time code reload,
> and location transparency. Most of the time people look at you like you
> have been smoking something! Am I wrong here??? I don't think that we
> should compromise the basic foundations of the language. Erlang is
> functional, concurrent, a process is a process, a list is a list, and a
> node is a erlang virtual machine:) I just think that we should not be
> shy away from well chosen euphemisms - they should an important part of
> every would-be Erlang salesman's life. 

  I think  you're both right and wrong  here - it depends  who you are

  The sales pitch has to be two dimensional, i.e.

	Problem X Person

  To start with the problem domain  has to be suitable for Erlang - so
I spend  a great deal  of time listening  to what peoples  problem are
before recommending Erlang - often I recommend C - or even visual basic.

  You have to ask the question:  What is Erlang good at? - the answer
is not  *everything* - the answer  is that it is  good at distribution
and fault-tolerant stuff - it's  not good at sequential "poking around
in memory" stuff ...

  Then there  is the person - the  augment directed to a  "suit" or "a
unix guy" or "a java person" are just not the same.

  "suits" need special treatment ... (two sub-categories of suit are
VC (venture capitalist) and "LM" Line management

  If  I'm selling  to "VC"  I always  use the  "MAKE MORE  MONEY FAST"
argument - I present them with good hard evidence that Erlang projects
have a higher chance of succeeding than non-Erlang projects.

  "VC" are  more likely to  take risks, so  they like this  argument -
though they will press hard on details.

  The main objection of the "LM" is that "Erlang in not Java/C++" - if
they allow  Erlang they  are often  taking a big  personal risk  - they
actual stand to gain if they have large development teams and everything
takes a  long time  - their pay  = LengthOfTimeOFPROJECT X  #people in
project - so Erlang is a no no here.

  Selling to programmers is different - getting the "Early adopters is
easy" they *like* new stuff - it's the mainstream that's the problem -
they want "lots  of stuff for free" - they think  "Oh dear, their's no
GUI -  so I can't  use Erlang" -  the early adopters think  "Oh great,
their's no GUI - I'll write one myself ..."

  Arguments  have  to be  *careful*  matched  against  the Problem  X
Mindset of the  person you are trying to sell Erlang  to - if anything
the trend  is towards economic  rather than technical  arguments which
indicates a movement towards the main stream ...

  What does bite  are "statement by other people"  - press releases by
Nortel and  Ericsson where they say  "Erlang is great"  have much more
credibility  than anything  we  can say.  Unfortunately big  companies
don't usually  make a big deal  of "the technology  inside" (apart from
Intel) - since non of their customers actually care what's inside.

  Todays article  (New great stuff from Nortel  programmed in Erlang)
in Computer Sweden is a good example ...

  I still think the best method is "success stories" ...


> Here is how the other ninety nine and one half sees it:
> 1. Crashing is a great way to handle errors ==C++== seg faults on
> purpose.
> 2. 20000 processes ==average UNIX guy== real slow
> 3. don't be defensive ==Most other languages== sloppy incomplete error
> checking 
> 4. Dynamic typing combined with "don't be defensive" ==Most static
> typing theory junkies== just can't work.
> 5. Run time code reload on top of all of this gets you disbelieving
> looks and you are dismissed as being a crackpot:)
> This is not the way to sell something. I am not suggesting that we
> compromise what Erlang is, that would be a worse mistake than being bad
> sales people. I am saying that we get used to saying things in a more
> marketing friendly way. 
> Example:
> Erlang allows the programmer easily generate exceptions when a process
> gets into a bad state, these exceptions can be simply used to "reset the
> state of a process" instead of crashing the application.
> ok = demo:do() 
> allows state to be reset if demo:do were to return 'error'. The process
> is then immediately ready to do work again. This makes programming
> customers applications much easier and the apps themselves much more
> robust. The beauty is that it is all built in, saving you development
> time and headache - more ROI. 
> Just an idea maybe over the top - a bit:) but I think that saying things
> in a "nice" way needs to be contemplated. 
> My 2 cents,
> Martin 
> On Tue, 2003-04-01 at 00:22, Matthias Lang 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. 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)"
> > 
> >   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.
> > 
> >   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".
> > 
> >   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.
> > 
> >   list: array. Everyone knows what an array is. 
> > 
> > Any further suggestions?
> > 
> > Matthias
> >   

More information about the erlang-questions mailing list