Hacker Newsnew | comments | show | ask | jobs | submit login

The difference between Scala and Clojure, in my opinion, is primarily one of philosophy.

* Clojure is strongly and dynamically typed. Scala has a complex type system, which from what I understand many Scala developers don't fully understand or utilize it. Clojure doesn't suffer much in performance, however, because you can sprinkle in type hints for performance after the fact wherever it turns out to be necessary.

* Clojure is a Lisp. The benefits of that are a whole other discussion, but homoiconicity and macros are undoubtedly pretty cool.

* Scala is multi-paradigm, Clojure is unabashedly single-paradigm.

* Scala includes the kitchen sink, Clojure is highly opinionated about what it provides. As Brian Hurt says, "It's not what a programming language makes possible, it's what it makes easy." For one example, you can do immutability in Scala, but you're also free to go in and make a hairball of state if you want. Clojure has decided immutability is good, and forces you to manage state in a controlled way.

* Clojure is less complex (in the sense Stu Halloway uses the word in his talk on Simplicity, http://blip.tv/clojure/stuart-halloway-simplicity-ain-t-easy...)

Full disclosure: I'm a huge Clojure fan and author of Practical Clojure, and haven't used Scala on any nontrivial projects, so I'm probably somewhat biased.




> Scala has a complex type system, which from what I understand many Scala developers don't fully understand or utilize it.

"When we say that a language is expressive, we mean that it is easy to use. When we say that a type system is expressive, we mean that it isn't."

- Gilad Bracha

-----




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact

Search: