I started playing with the Scala programming language recently. For most new languages I want to learn, I try them out solving problems from Project Euler — a fun site with various challenging math problems that typically require programming to solve. For example: What is the largest prime factor of the number 600851475143 ?
Typically after solving a few problems, I find the language is not for me and I shelve it. This happened several months ago the first time I played with Scala. However, after reading a few big sites are adopting the language and more about its core features and structure; it peeked my interest again. After solving fifteen Project Euler problems using Scala, I got hooked on the language.
So the past month or so I’ve been investigating and learning the language more and seeing what role it can play in my world. I’ve already started using it instead of Python as a general scripting language. One of the great abilities of Scala is its flexibility to use scripting, interactive or compiled.
What I like about Scala…
- Blend of Functional and Pure Object Oriented
- Plus real Object Oriented constructs allowing larger more structured systems
- Legible and Concise Style, not nearly as verbose as Java
- Statically Typed and Compiled (Easier Refactoring, contributes to consistent programmer’s behavior)
- Compiles to JVM Byte Code, can run in tried and true server engines, plus extendable to use any Java Libraries within Scala
Developer Ecosystem is Young
I think overall the developer ecosystem is still very young, I keep running into various stumbling blocks when trying to do some fairly basic items. A few areas that need growth is documentation, working examples, and deeper explanations for all programming levels. My best guess is its just full of too many experts and a very high barrier to entry.
Ruby and Rails showed how some great documentation, good examples and tutorials can help a platform develop and greatly improve adoption. I’m not sure if Scala is right for the same level of main stream adoption, but getting developers excited and a few quick wins starting off can only help generate enthusiasm.
I don’t want to quibble about the various issues I found, but plan to start documenting some of my experiences and learnings to help contribute to a healthier ecosystem.
- Book: Programming in Scala — This is a great introduction to Scala, lots of good examples and comparisons to Java, highly recommended.
- Scala in the Enterprise — A list of companies and case studies currently using Scala in their Enterprise, including Twitter, Siemens, Sony and Xerox.
- Getting Started with Scala — a quick introduction showing the various ways you can write and run Scala