addressalign-toparrow-leftarrow-rightbackbellblockcalendarcameraccwcheckchevron-downchevron-leftchevron-rightchevron-small-downchevron-small-leftchevron-small-rightchevron-small-upchevron-upcircle-with-checkcircle-with-crosscircle-with-pluscrossdots-three-verticaleditemptyheartexporteye-with-lineeyefacebookfolderfullheartglobegmailgooglegroupsimageimagesinstagramlinklocation-pinm-swarmSearchmailmessagesminusmoremuplabelShape 3 + Rectangle 1outlookpersonJoin Group on CardStartprice-ribbonImported LayersImported LayersImported Layersshieldstartickettrashtriangle-downtriangle-uptwitteruseryahoo

Re: [ljc] Why hasn't Scala and functional programming taken off

From: Andy T.
Sent on: Friday, October 4, 2013 2:56 PM
As a (very) long term Java dev, the slow(ish) uptake of Scala seems to come down to:

1. Tooling, tooling, tooling. Working on a recent(ish) multi-language project, we ended up ditching Scala because it was just too jarring to move from components that would compile in fractions of a second, with deep IDE support to Scala, which was simply slow and 'clunky'. Java took off when command-line tools were the norm, but now we're in the world of continual deployment, sophisticated refactoring IDEs and debug tools that provide deep and 'instant' insights. Scala is coming on in leaps and bounds, but anything but parity is hard to get over.

2. Idiomatic code. Search for a Scala solution to a problem and it seems you're almost always hit by someone who's created another DSL out of obscure punctuation. Ok, so it's not really that bad, but when you're picking up a language, having to check up on syntax just to understand a five line example is a bit of a drag.

3. Documentation. It's a personal theory of mine that Java was as successful as it was because Javadoc provided a consistent, concise, easily understood insight into the entire ecosystem. It seems to me that Scaladoc hasn't quite worked out how to communicate the combination of syntax and function that can be expressed in Scala methods, and the result is overwhelming to a newcomer. Even something as simple as an int has slews of repeated methods that just serve to obscure the basic functionality you want to access.

None of these are dealbreakers, for sure. However, Java has a much shallower learning curve, and much lower 'cost of ownership' compared with Scala and that comparison will always slow adoption.

That said, when I'm coding yet another ETL component, it's hard not to sit there thinking "This would be so much cleaner in Scala".


On 4 October[masked]:17, Stephen Henderson <[address removed]> wrote:
I think you're being premature in the view that it "hasn't taken off" and I'd say 2-3 years from now the landscape could look quite different. Certainly I can see Scala joining the top tier of language with Java, C#, etc. though probably never overtaking java completely. I know for my company at least we're just hitting that tipping point where Scala is now the first choice for new projects.

Scala, Clojure, etc. are still relatively young languages and we're only just reaching the point where the quality of tooling and learning resources is good enough to make them serious commercial contenders. Tooling in particular is a big part of it - I personally find that I can still write java code much quicker than scala a lot of the time even though it's much more verbose, just because the IDE is so powerful. It's only in the last 12 months that Eclipse scala support is ready for prime time, and even now it's still missing useful things like documentation-on-hover that I take for granted with java.

I guess there's also the underlying problem that OO languages, java in particular, are still the standard being taught in university (yes, you might have one or two modules on FP but it's probably not what most coursework is done in). As the previous thread showed it's very hard coming from that background to switch to an FP way of thinking and I'd say most developers aren't going to want to put in that level of effort in their own time.

I attended a interesting talk recently that the BBC's tech department put together on FP in online media. They had a panel of media companies who are using FP languages to go through the reasons why they were making the switch and the challenges they found. There were a lot of big names there (ITV, Sky, Guardian, Daily Mail) and they all had pretty similar reasons - problems of concurrency, problems of scaling, etc. A couple of them had brought in "FP coaches" to help with the transition. I can see this approach becoming a lot more common too, though probably not to the same extent as aglie coaching in the last few years.

One place I can definitely see FP use expanding quickly is in big data processing. We've recently switched our analytics stack over to scalding (twitter's scala map-reduce framework) and it's been a massive success compared to our previous approach using Hive and java UDFs. Map-reduce tasks are very well suited to an FP - there's typically no real concept of "state" and it makes the jobs much easier to test locally before trying them out on a live cluster (very important if you're running clusters with[masked]s of nodes for multiple hours). It's also allowed us to make the analtyics codebase just part of the general code that any developer can work on rather than requiring a dedicated big data expert.


On 4 October[masked]:51, Joseph Odanmen <[address removed]> wrote:
Hello all,

I have enjoyed reading comments on how to get into FP and Scala and overcoming the habits of OO.

For a while now and reading people's comments, it would seem Scala and FP in general is a fantastic answer to the bottlenecks we have in OO, particularly multi-threading.

So my question is why hasn't Scala and indeed the FP approach to software development taken off in mainstream and commerical software development? Does Java have to fully FP to really get FP going? Scala isn't doing it.

I would love to get into Scala and FP but quite frankly, it is hardly used commercially.


Sent from my BlackBerry® smartphone on O2

Please Note: If you hit "REPLY", your message will be sent to everyone on this mailing list ([address removed])
This message was sent by Joseph Odanmen ([address removed]) from LJC - London Java Community.
To learn more about Joseph Odanmen, visit his/her member profile:
Set my mailing list to email me

As they are sent

In one daily email

Don't send me mailing list messages
Meetup, POB 4668 #37895 NY NY USA 10163 | [address removed]

Please Note: If you hit "REPLY", your message will be sent to everyone on this mailing list ([address removed])
This message was sent by Stephen Henderson ([address removed]) from LJC - London Java Community.
To learn more about Stephen Henderson, visit his/her member profile

To report abuse or block this person, please click here
Set my mailing list to email me As they are sent | In one daily email | Don't send me mailing list messages

Meetup, POB 4668 #37895 NY NY USA 10163 | [address removed]

Our Sponsors

  • Our Blog

    Read the latest news from the LJC

  • RecWorks Ltd

    Fixing Tech Recruitment using the Power of Community

  • jClarity

    Java/JVM Performance Analysis Tools & mentoring for Java related matters

  • LJC Aggrity

    Our LJC Aggrity site contains blog posts from our members

  • LJC Book Club

    Our Book club with book reviews from our members

  • Devoxx UK

    Java Community Conference in collaboration with the LJC, 8-10th June 16

  • SkillsMatter

    "Host, help organise, promote, film many of our meetings."

  • IBM

    Build Enterprise-grade apps at start-up speed.

  • New Relic

    New Relic makes sense of billions of metrics a day in real time.

  • Hazelcast

    Hazelcast is the leader in operating in-memory computing.

  • Java.Net

    We are an official Java User Group recognised by Oracle's JUG program

  • JRebel

    Free 3 month J-Rebel license.

  • O'Reilly

    40% discount on printed books and 50% on e-books.

  • Craft Rebellion

    Your choice of fresh craft beer, delivered. For 10% off use ‘LJC'

People in this
Meetup are also in:

Sign up

Meetup members, Log in

By clicking "Sign up" or "Sign up using Facebook", you confirm that you accept our Terms of Service & Privacy Policy