That paper is a classic, indeed, but I think Wadler left out a few
important, but related, reasons:
- fashion trends in languages.
- the hesitant manager problem: "Nobody ever got fired for buying
IBM."
Bob
On Tue, 2008-07-22 at 17:05 -0400, Dan Bron wrote:
> Though I only came across it today, apparently Philip Wadler's "Why No One
> Uses Functional Languages" [1] is a classic paper in the field. It asserts
> there are seven major reasons no one uses functional languages (such as ML
> and Erlang):
>
> * Compatibility
> * Libraries
> * Portability & Availability
> * Packagability
> * Tools
> * Training
> * Popularity
>
> and two red herrings ("reasons" people give that such languages are
> unpopular, but don't actually contribute to their unpopularity):
>
> * Performance
> * "They don't get it"
>
> I think Philip hit the nail on the head. It's like he's been reading the J
> Forums, rather than the ML (or Erlang, or whatever) Forums. In fact, I don't
> think his analysis is limited to functional languages -- the paper has almost
> nothing specific to functional languages in it. His 7 features are
> make-or-break for any fledgling or obscure language.
>
> So how do we think J fares? In my opinion:
>
> * Compatibility:
>
> Poor. This means talking to the outside world, and while J
> has the ability to make arbitrary system calls, very little
> is provided in the way of robust, full featured interfaces
> to other systems. Compare with, e.g., Dyalog APL, which has
> the entire .NET stack available in a namespace, and an APL
> program can be deployed as a web application with a single
> click, etc.
>
> * Libraries:
>
> Poor to middling. (Now, keep in mind I'm comparing the
> system libraries and the nascent JAL to, e.g., the libraries
> available in Java, .NET, or Perl. This may improve in time.
> OTOH maybe we should be more proactive in improving it.)
>
> * Portability & Availability:
>
> Good. J runs on Windows, Linux, and Apple, and is easy
> to install and maintain. That's poor compared to C, but I
> doubt anyone's going to ditch J because you can't run it
> on an Amiga.
>
> * Packageability:
>
> Middling. We have Package Manager, but
> if you read the paper you'll see it would be considered
> inefficient by Wadler.
>
> Though I disagree packagability is important. I think
> we can consider J like a JVM or the .NET framework: a
> platform to be installed separately. Then J applications
> can be installed as a directory of scripts (a la JAL) which
> build upon the platform. I personally don't think there
> would be too much value in a tool which converted a J
> installation + application script to a single executable.
>
> * Tools:
>
> Unknown. I don't use the profiler or debugger enough to
> know if they're sufficient. But maybe the fact that
> I don't use them should tell me something.
>
> * Training:
>
> Excellent. I've never met a more newbie-friendly
> programming community than J. We also have the Wiki,
> various papers, and several books in print.
>
> * Popularity:
>
> This is the variable I'm trying to solve for.
>
>
> -Dan
>
> [1] The original paper is available from:
>
> http://homepages.inf.ed.ac.uk/wadler/papers/sigplan-why/sigplan-why.ps
>
> and, for anyoen who doesn't have a PS reader, I've posted a PDF version
> here:
>
> http://dan.bron.us/sigplan-why.pdf
>
> (I used the very convenient http://www.ps2pdf.com/ website)
>
> PS: I discovered the paper through the F# FAQ, which says it is designed to
> be a functional language that addresses Wadler's complaints:
>
> http://research.microsoft.com/fsharp/faq.aspx#Goals
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm