FAQ terminology harmonisation

martin j logan martin@REDACTED
Thu Apr 3 01:16:57 CEST 2003


On Wed, 2003-04-02 at 03:58, Joe Armstrong wrote:
> 
> 
> 
> 
> 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
> selling.
> 
>   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.
> 
I agree. 


>   "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.

This is the place we need to sell the hardest. Erlang needs to shine
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 ...
> 

The thing is, erlang is a wonderful tool for capitalizing on economic
opportunities. Rapid Development, high ROI, low maintenance... The list
goes on. How do we position ourselves/Erlang?? How does Erlang 
capitalize??

>   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" ...

Joe, I fully agree with you on this one. 
I think that one way to have more of these would be to sell the "LM".
> 

Cheers,
Martin

>   /Joe
> 
>  
> > 
> > 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