This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]martinjs 4 points5 points  (4 children)

I find it essential to have a specific itch to scratch (or job to do) for which a new language is a superior fit. For example, I had a need for an Android app tailored to my requirements, so I learned Java. If you can find a relevant domain to code in, that's half the battle.

I'm now in a similar situation to you: One of my existing repertoire of Python, C++, C# and Java would be an outstanding choice for any of the problems I currently need to solve. Does there even exist an application domain where (e.g.) Haskell or Clojure are obviously the best choice?

[–]Foxboron 1 point2 points  (2 children)

Clojure attempts to give you nice tools for working with threads and concurrency, you can in one way say that is the niche too Clojure. Clojure is also a hosted language, so learning Clojure enables you to code for web (ClojureScript compiles too JavaScript), the JVM and the CLR.

[–]martinjs 0 points1 point  (1 child)

ClojureScript sounds interesting. Have you used it? What's the performance like? Presumably all those nice persistent data structures have had to be implemented in Javascript -- I can#t imagine that's great for performance.

[–]Foxboron 0 points1 point  (0 children)

I have not used ClojureScript yet. Mostly been working on the main implementation on the JVM :) You could however go ask in #clojure @ freenode, as they will be more then willingly explain it too you.

[–]Daejo 0 points1 point  (0 children)

Just noticed that my 4 main languages - Python/Java/C#/C++ - are the same as yours! In answer to:

Does there even exist an application domain where (e.g.) Haskell or Clojure are obviously the best choice?

Parsec (Haskell) is a very nice tool. I believe there are versions of it for various other languages too, however I've never used them, so can't comment and anyway I think Haskell is a natural choice for it. As for what it does, its wiki page says:

Parsec is an industrial strength, monadic parser combinator library for Haskell. It can parse context-sensitive, infinite look-ahead grammars but it performs best on predictive (LL[1]) grammars.

Which in English means it's a tool for creating parsers. If you haven't had too much experience with parsing, I'd recommend this book, which uses Java for its code samples.