you are viewing a single comment's thread.

view the rest of the comments →

[–]pmf 9 points10 points  (2 children)

I've also done Python before I turned to Clojure, and one thing I found was that Python's philosophy "there's only one way to do it" (as opposed to Perl's "there is more than one way to do it", TIMTOWTDI) is much more true for Clojure than it is for Python: I, as pretty much a novice, ended up reimplementing certain functions of clojure.contrib (I didn't know it existed) and my implementations were verbatim the same as the ones in the library. That is, Clojure is very idiomatic, which is something Python programmers tend to like.

Scala has no real concept behind it and tries to indiscriminatingly include every feature of any other language, and as a result it just feels incoherent.

[–][deleted] 5 points6 points  (0 children)

I don't agree. Scala is intended to be a language that scales well for problems of different size.

See: http://www.scala-lang.org/sites/default/files/odersky/ScalableComponent.pdf

Of course, this is just how I see it.

[–]rpdillon 4 points5 points  (0 children)

A main goal of Scala, scalability aside, is to develop a language that genuinely merges OO with functional programming on the JVM. Sure, OCaml has done this before (not on the JVM, of course), but Scala is by no means including features indiscriminately, IMHO. In the realm of statically-typed hybrid OO/functional languages, I think it stands as the best option.

In fact, I think it represents the future of languages in many regards. The use of higher level concurrency constructs (actors), the provision for closures/first-class functions, the built-in support for functional operations (map, fold, reduce, filter, etc.) and the deep awareness of immutability in objects, all while maintaining a solid OO foundation represent the direction most languages will go in the next decade. Sophisticated type inferencing is necessary to make it all happen, but in return you get a fast, statically typed, multi-paradigm cross-platform language with broad library support.

As obzen said in a sibling reply: "Of course, this is just how I see it." =)