Hacker News new | past | comments | ask | show | jobs | submit login

Since there are a lot of comments that disagree with the post, I'll say that I largely agree with its essential premise which is that a language's perceived difficulty shouldn't be based simply on the initial learning curve, but on how much it helps (or hinders) once it has been properly absorbed.

My only evidence for this statement is my own experience. I am well on the right side of the java curve as the article describes and over the first hump and well down it on the scala curve.




In support for your statement I'll add my own experience.

As a language expert, I've become more proficient with Perl the language than most people I know who program in the language daily. Perl has a tremendous number of nooks and crannies to explore and is so complex that as far as I know there are no other implementations of the language besides the original. However, having mastered Perl, I am still far less productive using it than any of the other several dynamic languages out there that let you accomplish the exact same things but without all the extra complexity.

Scala had the opposite effect for me. Having reached a certain level of proficiency with it, many times I feel like I can express my ideas in code faster in Scala than I can in any other language. If Scala had faster compile times and a more Unixy library (not likely, given its Java heritage), I would even replace my use of scripting languages with it for small tasks!


When you say you "can express my ideas in code faster in Scala than [you] can in any other language", I'd love to see you expand on this. Why is it more productive for you than say, F#, or Haskell, or Python, or Clojure?

I don't say this to dispute your findings -- as someone potentially interested in learning Scala, I'm genuinely interested in any specifics you can provide. Thanks!


Well, a lot of coding comes down to data structures and algorithms, and I feel that Scala has the best out-of-the-box collections library experience of any language I've used. This makes it easy for me to choose an appropriate data structure and write my code as a series of transformations on it. I also like to think in terms of objects and Scala has the best fusion of OO and functional that I've ever seen. Finally, for most problems I like having a type system to help catch errors and to help shape the design process, and I like the IDE and tooling support that comes with it.

That said, I've never written a line of F# and have written very little Haskell and Clojure. Clojure also seems like a fine language to get things done if it is more your cup of tea. If I were to pick a Lisp for development, Clojure would definitely be it.


I think Scala is a wonderful language, however it is one of many.

Data structure and collections support in scala is equivalent to any functional language. I would be interested in hearing where you think Scala offers more.

F# is another functional language that balances OOP in a way that works well. It is different to but homomorphic with Scala's OOP functional synthesis. Both allow a very unique style with algebraic types, matching objects, structural recursion and monad syntax.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: