News for hackers. Stuff that matters.
Re:Mastering Time-to-Market with Haskell by almata on Tuesday November 22, 2016 @02:51AM (#13012411)
If you were a developer with 10 yoe looking for something new to get into, what would you choose at this moment and thinking about the near future: Haskell, Scala or F#?
Re:Mastering Time-to-Market with Haskell by slowmovintarget on Thursday November 24, 2016 @02:53PM (#13032375)
Near future: Scala.

There is more professional work being done in Scala, and it makes it more palatable to managers that it runs on the JVM and allows them to leverage some of the existing knowledge of their Java programmers.

In the financial world, however, F# use is on the rise.

I currently work in F# but not in finance, and the lack of mature libraries for common things (like JSON serialization!) makes it a major pain in the behind.

Were I told to select a functional language, "quick!", I would select Clojure when caffeinated, and Javascript (ES7) when not.

FWIW: I subscribe to the notion that dynamic typing with unit testing will get you a correct and working program faster than static typing. In the case of Clojure, you now have clojure.spec, which means you can write conformance criteria as functions and generate tests and test data.

http://games.greggman.com/game/dynamic-typing-static-typing/

https://news.ycombinator.com/item?id=10933524

Re:Mastering Time-to-Market with Haskell by icc97 on Tuesday November 22, 2016 @08:48AM (#13014064)
Haskell forces you to think in a certain way. So if you want to learn about functional programming, then when you're searching for programming examples all those examples will be in a functional style. You can then apply those styles to Scala or F#. Personally I'd lean towards Scala (on the back of Spark) - there's the Coursera Scala Functional Programming course [1] which will give you a good start.

  [1]: https://www.coursera.org/specializations/scala
Re:Mastering Time-to-Market with Haskell by cageface on Tuesday November 22, 2016 @05:37AM (#13013130)
I've always liked OCaml and with Facebook putting some real momentum behind it and the OCaml/JS story getting better and better all the time I'd say now is a good time to pick it up. It's more pragmatic than Haskell, simpler than Scala, and not tied to the .Net ecosystem like F#.
Re:Mastering Time-to-Market with Haskell by LeonidasXIV on Tuesday November 22, 2016 @03:43AM (#13012653)
It depends what you are looking for. If you are looking for work then Scala beats the other two hands down. Then comes F# and Haskell somewhere in the end.

If you're looking for enlightenment, pick up Haskell, maybe OCaml and skip F#.

Re:Mastering Time-to-Market with Haskell by pjmlp on Tuesday November 22, 2016 @05:26AM (#13013073)
Well, F# beats both OCaml and Haskell in industrial support and tooling, specially if we take .NET libraries into account.
Re:Mastering Time-to-Market with Haskell by lmm on Tuesday November 22, 2016 @08:57AM (#13014119)
(For me Scala is the present - I've been doing it full-time for about 6 years now.)

Short answer: whichever you can get a job in. That's more important than the design differences between them, which are relatively small.

Long answer: I wouldn't use F# because nice as it is you're eventually going to want HKT. Between Scala and Haskell I'd pick based on your learning style - Scala lets you write familiar comfortable code and incrementally adopt functional features, Haskell forces you to dive straight in and do things the Right Way from the start.

Re:Mastering Time-to-Market with Haskell by Steeeve on Tuesday November 22, 2016 @02:31PM (#13016812)
I would recommend none-of-the-above.

Having gone down the Haskell rathole, it's clear to me that the advertising is better than the product. It's complex and difficult to learn and the "less errors because of typing" mantra turns into 'how in the world am I supposed to find my error'. In practice, I very rarely run into errors caused by type problems.

I know nothing about F#, but that's actually my criticism of it. The F# community is small. I occasionally hear about people playing with F#, but even that is rare. (although it could be that I just don't know enough about it and F# and it's community is awesome)

Scala has a reasonably sized community and is being used in production plenty. I personally don't see any benefit beyond the fact that some people like the syntax better than Java and can do less boilerplate (which, if not paying attention could lead to higher resource consumption).

If I were looking for something new, I'd look into Go and Rust. Both have strong followings, a lot of active development to learn from, and strong job markets moving forward (IMO). Or alternatively reverse-expand back into C and start playing with embedded RTOSs - which has the benefit of both being very interesting and an area where senior people could make a significant impact.

... Now, if you really wanted one of the three - I would choose Haskell for learning, Scala for job market, F# if you are already a .net developer.

Re:Mastering Time-to-Market with Haskell by almata on Friday November 25, 2016 @02:13AM (#13034865)
Thanks Steeeve, really informative answer.
Re:Mastering Time-to-Market with Haskell by RBerenguel on Tuesday November 22, 2016 @08:22AM (#13013894)
I'd recommend Scala, even if you are not a JVM lover. The language itself is very un-java-ish, but you can hook it to Java libraries if needed, which is very handy
Re:Mastering Time-to-Market with Haskell by hellofunk on Tuesday November 22, 2016 @05:15AM (#13013034)
As far functional languages go, Erlang, Elixir and Scala would get you further career-wise, and if you want to play in the sorta-functional world, Swift is also a high-in-demand language that borrows a lot from Rust and Haskell.

However, Haskell and OCaml are the more classic functional, static-typed languages, and while Haskell has more job opportunities than OCaml, it is probably the steepest learning curve and highest time commitment of all these languages.

Re:Mastering Time-to-Market with Haskell by pjmlp on Tuesday November 22, 2016 @05:25AM (#13013070)
F# and Scala, given that we use both JVM and .NET stacks.
Re:Mastering Time-to-Market with Haskell by marcosdumay on Tuesday November 22, 2016 @09:31AM (#13014319)
If you don't know Haskell or Lisp, I do recommend that you learn those. Now, I don't think they will open any immediate job stream for you (at least not now - Haskell is improving on that direction), but if you want to improve as a developer, you should know those two.
Re:Mastering Time-to-Market with Haskell by almata on Tuesday November 22, 2016 @02:31PM (#13016802)
Many thanks for all these answers (I've upvoted all of them). Super useful. Really.