5 ms·
Anyone who's done some Haskell care to comment on whether scala is worth learning? I read the scala book a few years ago, then I decided to go to the source fi
by boothead 14y ago
Anyone who's done some Haskell care to comment on whether scala is worth learning?
I read the scala book a few years ago, then I decided to go to the source first and learn Haskell. However, I don't see many Haskell employment opportunities available in my area or industry (London, Hedge funds/algorithmic trading). I have however seen an up tick in FP jobs in general, mainly scala or F#.
So, those in the know: What should I learn if I want to land a decent FP job? Scala, F#, something else? Or should I continue to wait for Haskell's inevitable word domination?
- arianvanp 14y agoYou'll definitely catch a job sooner with knowledge of F#/Erlang/OCaml or Scala. Though knowing haskell isn't a con! If haskell is on your CV, they know you've got the right mindset. Learn scala wouldn't be difficult for you except from a few quirks : In scala, you explicitly define the order of evaluation, whilst haskell is lazy (we don't care). But the scala course last year on coursera covered that in the first lecture. I come from a java background, but moved to haskell last year. I like both worlds, so scala was lovely to experiment with. If you come from a functional and also an OO background, you can get the gist of scala in a matter of days. If you want a decent FP job, one shouldn't learn a specific language, but adapt the FP mindset. from there, it shouldn't be difficult to switch languages and adapt to the technology that they use at the company you want to work for. In your spare time, just try experimenting with as many languages as possible.
- boothead 14y agoYes I've definitely seen evidence that Haskell has become a marker language on one's CV of the right attitude (somewhat taking over from python a few years ago). In fact one recruiter reported back that a client said "He's done some Haskell, we'll definitely interview him" (that ended up being the job I landed too).
- papsosouid 14y ago>Erlang/OCaml I have to disagree there. Haskell usage outpaced ocaml's nearly a decade ago now. And ocaml has been sitting at a virtual standstill since then, while haskell is moving at warp speed. Look at how many financial institutions use haskell, look at all the talks at conferences that are about haskell. Ocaml and erlang don't even come close to that level of usage or discussion. F# and scala certainly have big leads over haskell, largely due to their platforms.
- kailuowang 14y agonot much help here as I didn't really learn Haskell, but from my experience I saw more scala job postings than F#. another fun language you could consider is clojure
- polymatter 14y agotl;dr. For job in London, Scala (unless you need to use .NET libs). To get good at FP, Haskell. In my limited viewpoint, I've seen much more Scala than F#, but that could just be my circles. Though I have also seen some cunning people advertising Scala positions as a crude heuristic to get better Java programmers to apply. For learning FP though, Haskell is the way to go. Specifically, with Learn You a Haskell For Great Good. I came at Scala after having learnt a reasonable amount of Haskell, but I think if I were learning FP with Scala it would be far too easy to mix up imperative and functional and find it harder to learn the functional style.
- rdouble 14y agoScala is fine to learn if you need it for work, but it is not very interesting if you already know functional and OO programming.
- happy_dino 14y agoEven if you know both “paradigms”, Scala's incredibly well-done fusion of those concepts is what makes the language interesting, imho. You can learn FP and OOP everywhere, but which language combines FP and OOP in such a seamless a way Scala does?
- rdouble 14y agoRuby
- happy_dino 14y agoI wouldn't say that. Not typed, not really functional and mutability everywhere.
- rdouble 14y agoYes, but it does combine its functionally inspired features seamlessly with its object-orientedness.
- michaelochurch 14y agoYes, Scala's worth learning. If you've used a JVM language (e.g. Clojure) and know Haskell, it should be a snap. I liked the "stairway book", of which Odersky himself is an author. Scala the language is great. There are wide variations in Scala code, given that it's a meeting point between about 4 languages (Java, Ocaml, Erlang with its actor model, and now Lisp with macros). Some Scala code is very good, some is bad. But yes, I would say that it's absolutely worth it to learn the language itself. No question.
- boothead 14y agoThat was very much the experience at a previous place I worked: they tried scala, but didn't really embrace it. They ended up with somewhat more concise Java code :-)
- michaelt 14y agoI'm in London and I've had more unsolicited contact from recruiters looking for Scala devs than anything else since I put my scala experience on my linkedin profile. Drop me an e-mail (address in my profile) if you'd like their details.
- taligent 14y agoScala will easily dominate the JVM largely due to web use cases. When you have companies like Twitter, LinkedIn, FourSquare behind it there is that air of credibility and longevity which companies look for when committing to a new technology. Plus the popularity of frameworks like Play doesn't hurt.
- sultezdukes 14y agoScala is never going to "dominate" the JVM.
- happy_dino 14y agoSure, except in talent and thought leaders.
- laureny 14y ago> When you have companies like Twitter, LinkedIn, FourSquare behind it How come none of these companies list a single Scala job on their web site?
- ratherbefuddled 14y ago> How come none of these companies list a single Scala job on their web site? Twitter and Foursquare seem to list many scala jobs. Have you looked? https://twitter.com/jobs/positions?jvi=oUebXfw0,Job https://twitter.com/jobs/positions?jvi=oUebXfw0,Job https://twitter.com/jobs/positions?jvi=o2nHWfwM,Job https://twitter.com/jobs/positions?jvi=o2nHWfwM,Job https://www.jobscore.com/jobs/foursquare/software-engineer/a_c2QE8Emr35TgeJe4bk1X https://www.jobscore.com/jobs/foursquare/software-engineer/a...
- laureny 14y ago> Scala will easily dominate the JVM largely due to web use cases. Not sure what you mean by that. The web situation on Scala is murky at best. First, it looked like Lift was becoming the de-facto standard web framework on Scala (which doesn't mean much in comparison to web frameworks on other platforms such as Java). Then Play switched to Scala and Typesafe decided to adopt it instead of Lift. Play 2 was (and still is) quite controversial because a lot of Play 1 users see the move to Scala as a step backward because templates take so long to compile right now. The result is that the web landscape on Scala is heavily fragmented and while Play 2 seems to be the standard on it today, this does very little to support your point that "Scala will dominate the JVM largely due to web use cases". Either way, Scala has been around for ten years and it still has a less than 5% mindshare on the JVM.
- webreac 14y agoHaskell is for native application, it can use C libraries. Scala runs on java VM and can use any java library. It is slightly less concise than haskell. Like haskell, it has very clean theoretic foundations. It benefits also from a good framework (Play) and from a good eclipse integration.
- noelwelsh 14y agoI don't work in finance, and I can't tell you if anyone is looking for FP developers in your particular speciality. However I do know that finance in general has growing demand for FP. Some pointers: Lennart Augustsson has been spreading the gospel of Haskell at Standard Chartered, and Credit Suisse prior to that. I'm not sure which area he works in, but you might find Haskell jobs there. Most of the major banks are recruiting for Scala developers. For example, Morgan Stanley were/are looking for Scala developers for their core technology team. Scala is also growing in popularity in media companies: the Guardian, Mind Candy, etc. [I'm part of a London based Scala specialist called Underscore (http://underscoreconsulting.com/ http://underscoreconsulting.com/).]
- boothead 14y agoThanks for the comment, I think I've seen your blog before actually! I know a few FP specific recruiters in London, and my feeling is that FP is not quite widespread enough that you could jump directly from one contract to the next without being in Java/C# land at least a little bit. Almost all of the FP jobs I've seen are <an imperative language>, F#/Scala/clojure experience considered beneficial. Are you working more with greenfield projects or transitions from Java would you say?
- noelwelsh 14y agoDefinitely having Java helps. I'm of the belief that any competent dev should be able to pick up Java in a few weeks. Not everyone shares this opinion, and more importantly HR types rely on keyword scanning and will probably throw away a CV that doesn't mention it. As for projects, it's a mix. As I'm not heavily involved in the finance side I can't really say what the mix is. On the media side I'd say it's perhaps 50/50.
- mogrim 14y agoJava the language, definitely. But Java the language + Spring or Android or whatever framework your project is based on? Not sure that "a few weeks" would be enough for that.
- 14y ago
- laureny 14y agoScala is worth learning but from what I can see, the Scala job market is as nonexistent as the Haskell one.
- papsosouid 14y agoIf you want to get a job doing FP, F# is a better bet. Most scala jobs are places that treat scala as java++, and using anything beyond the most basic FP concepts will be off-limits. I found my haskell job by making it. They were doing stuff in PHP that had no business being in PHP. I did it in haskell instead.
- boothead 14y agoReally? What do you do (no detail in your profile)?
- papsosouid 14y agoWeb development. We use snap.
- boothead 14y agoWho's we if you don't mind me asking? How's your experience of snap been? I'm thinking of building a little SaaS effort on the side and would want to use Haskell for at least the backend, and maybe even the front end with fay.
- papsosouid 14y ago>Who's we if you don't mind me asking? I can't say. But nobody you would have heard of, just a small marketing/web dev type place. >How's your experience of snap been In 15 years of web development, this is the closest I have come to being happy with the results of my work. I'm sure part of that is just my experience letting me do things better as time goes on, but a good portion of it is that haskell and snap are less irritating that the other options I've used. I found frameworks in the java/RoR style to be more of a hindrance than a help, so snap suits me well personally. It is more like a library than a framework, it basically just takes care of the "what kind of monad stack do I need here and how do I nest components" problem for you, and then gives you some components you can choose to use or not as you see fit.
- mafribe 14y agoI too suggest that Scala is worth learning, coming from Haskell. The integration of OO with FP that Scala achieves is magnificent, and any future mainstream language will be measured against it. I would also argue that Scala, which has been influenced heavily by Haskell, improves on Haskell in some domains, in particular, modularisation and generic programming facilities. And then there's the JVM.
- worldimperator 14y agoIn the context of Finance, I have read about Haskell and other functional programming languages several times before, so I was wondering what were the specific benefits of doing financial stuff in functional languages? Is it because complex solutions are easier to prove to be correct? And how does the (more or less purely) functional approach there work out with the fact that they basically do I/O all the time, meaning (I guess) high frequency input of financial data, computing and then output from and to standardized existing interfaces? Edit: What I mean by that is - everytime I read FP books, IO is basically what everybody tries to explain on the last few pages and is rather ashamed to do at all. That makes it hard to imagine how those languages come to use in real world scenarios, that's why I'm asking ;-)