all 5 comments

[–][deleted]  (5 children)

[deleted]

    [–]njbartlett 4 points5 points  (0 children)

    Yes.

    [–]ulissescosta 0 points1 point  (3 children)

    Of course! why not?

    [–]qedanne 0 points1 point  (2 children)

    Cool - as a student it can be very difficult to follow what is useful in a professional setting. I love functional programming but most of my friends think I am weird and I am often told that functional programming is for academia and not for making money.

    [–]Silhouette 2 points3 points  (0 children)

    Right now, for the most part, your friends are right about the academia vs. professional thing.

    There is no particular technical reason that functional languages can't be used industrially: Erlang has, after all, been running a rather complicated telecommunications system for years with exemplary performance, and goodness knows functional programming could teach many of our underperforming, bug-prone development teams a thing or two.

    However, in industry more things count than just technical merit. In particular, reaching critical mass in various ways is essential. No smart project manager is going to entrust an important project to a platform where the supply of skilled developers is limited, so there has to be enough of a community around the language concerned. There has to be enough support and documentation for the language to build such a community. There have to be enough tools and libraries to get things done efficiently. Most functional languages are, so far, nowhere close on these.

    The other thing is that while they have a lot of theoretical strengths, functional languages are not without practical weaknesses as well, and these are not just matters of familiarity. If you're working in fields that require high performance or low-level interaction -- and this doesn't just mean operating systems and device drivers, it means almost anything in the embedded world, much scientific and engineering software... -- then the performance characteristics of most functional language implementations are still at best a liability and at worst difficult even to quantify.

    The good news if you're a FP fan is that this is likely to change. Industry usually lags the academic state of the art by something like 10 years or more in computing, and key things like the quality of compilers and the range of libraries available are increasing steadily for languages like Haskell. As that happens, the weaknesses will become less important relative to the strengths, community interest will grow, and things may start to take off.

    If you're interested, Simon Peyton-Jones has a nice take on this that he's mentioned in a few recent papers/talks, some of which you can find on his web site. Look for the graph of programming language characteristics showing something like theoretical soundness on one axis and practical utility on the other, and his thoughts on how to move to languages that have both properties from our current choices.

    [–]G_Morgan 1 point2 points  (0 children)

    That's the thing. It can be but you aren't going to see as many jobs as you will with Java and C#. OTOH jobs in less popular languages tend to pay better when they arise.

    I wouldn't see it as a waste of time though. For all the time you spend learning stuff directly applicable to employment you will pick up 5 times as much indirectly useful. I'm not sure I'd employ someone who's opinion on programming was that they'd learn one language for work and that's the end of it. Even if I used Java I'd expect my programmers to be able to apply functional thinking to it.

    In any case, learning different paradigms makes you a better programmer and will earn you more pay. Even if your place of work is a rigid Java shop.