Greenville Java Users Group
Last modified: 2016-02-06
- Scala embraces both Functional and Object Oriented Programming. It has first-class functions, immutable collections, and some nice OO features (some of which Java has adopted)
- Scala has a stronger type system than Java, including higher-kinded types and declaration site variance. It also supports type classes through use of implicits. A significant number of Scala programmers half-jokingly say they practice "TDD" only instead of "Test-Driven Development" they mean "Type-Driven Development." They feel that the strictness of the type system means that when they actually get a program to compile, it works perfectly the first time.
- Scaladoc turns comments in your code into a web site describing your API.
- You can do anything in Scala. If you are an academic researching programming language features, Scala lets you try out your craziest ideas! A good Style Guide is critical for writing Scala in a team setting.
- In many ways, it fulfills the role of Haskell for the JVM. If you like category theory and monads, you've come to the right place!
- You can easily call Java from Scala, though the reverse can sometimes be messy.
Documentation and other resources are linked from the Scala web site. But perhaps the best introduction is the Coursera course, Functional Programming Principles in Scala which is taught by Martin Odersky - the creator of the language. It's hard, but it's fun! You'll think differently after taking that course.