<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
<META NAME="GENERATOR" CONTENT="GtkHTML/3.18.3">
On Wed, 2009-02-25 at 08:35 +0000, Rob Charlton wrote:
Michael Richter wrote:
> Why do you think people stay away from functional programming
> languages in droves?
The reason nobody has asked this is that for one of several reasons the
answer is fixed in advance:
1) The development team is a team of programmers who know X
2) We are writing a system for operating system Y for which the only
applicable language choice is X
3) We are extending / improving product Z which is written in X and
we're not about to re-write it
4) The CTO is a fan of language X and has already hired X experts to get
the job done
5) The engineering manager wants to play it safe, follow the herd, and
develop the system like "everyone else does", using language X
6) We are doing work for a customer, and the customer says use language X
To me this is answer #3 from my original post: the needs of the user.
<LI TYPE=1 VALUE=1>If the development team is most familiar with/capable of X, then X is the only rational choice in a competitive (read: non-academic) environment. Time to market kills quality dead in almost, but not quite, all business situations.
<LI TYPE=1 VALUE=2>Again this is a user need. The choice was made because their (presumably rational) choice of platform dictated their choice of language.
<LI TYPE=1 VALUE=3>No expansion needed.
<LI TYPE=1 VALUE=4>This is a variant of your 1, albeit a variant that is unfortunate.
<LI TYPE=1 VALUE=5>This is similarly a variant of your 1, one that is less unfortunate. It is a relatively sound engineering principle to go with proven technology unless the proven technology proves incapable of the task.
<LI TYPE=1 VALUE=6>Again this is a user need. Presumably the customer in question is using one of your six explanations in their own decision.
There is a rock solid business case for picking Erlang in a lot of
circumstances which the CEO/CTO/CFO/Engineering manager could be
convinced of I'm sure, but they would have to put aside the
considerations above which may not be possible.
You get no disagreement from me on this. I would never choose Erlang for any of my embedded work nor my device drivers back when I did those two. But for a lot of my software I'd have murdered my own grandmother in a slow and gruesome fashion to have access to something like Erlang. (The closest I got was using QNX for a while whose message-passing style made me understand and appreciate Erlang instantly on contact.)<BR>
For my own company, we started using Erlang because we believed in the <BR>
ideas in Joe's thesis paper and wanted to give it a try. We can't use it <BR>
for all our work: the Symbian OS development that we do pretty much <BR>
dictates C++ and Lua, Blackberry dictates Java, other embedded phone <BR>
work dictates C. But our server products can be written in whatever we <BR>
like. And we like Erlang :)<BR>
And I am insanely jealous. Trust me. <IMG SRC="cid:1235555301.30881.39.camel@isolde" ALIGN="middle" ALT=":D" BORDER="0"><BR>
<TABLE CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<B>Michael T. Richter</B> <<A HREF="mailto:email@example.com">firstname.lastname@example.org</A>> (<B>GoogleTalk:</B> email@example.com)<BR>
<I>When debugging, novices insert corrective code; experts remove defective code. (Richard Pattis)</I>