Learning Scala - Week 1
September 22, 2013
I decided to learn Scala. It was more a spontaneous decision than well thought out. I have heard many good things about it, it seems to do a decent job at Twitter, other start-ups and established companies, it runs on top of the JVM and Coursera just started a course "Functional Programming Principles in Scala". I will write a short recap about my journey every weekend.
This are basically two new things at the same time for me. Coursera and Scala. Functional programming is not something new to me but I never used a purely functional programming language or focused on learning everything about it. I am aware how it works, the advantages and disadvantages and how to use it if necessary.
Finishing the first week, I have not seen much of Scala. Defining a function, some recursion, nothing spectacular. This is not necessarily bad. A lot of time was used to explain fundamentals of functional programming and I believe someone who has no experience with it really needs those explanations before starting with anything else. And I have high hopes in this course, especially since we are talking about Martin Odersky, who, beside the one - or one of the people - who came up with a programming language could explain the fundamental ideas better?
The homework looks ridiculous compared to what you learn. It would be interesting to see someone without programming background trying to complete the assignments - if you are fitting in this category or know someone I would love to hear your thoughts. As far as I can tell you get enough hints but concentrating on Scala, deciding how to implement something and not knowing if the problem with your implementation is caused by a wrong implementation or if the solution you came up with is wrong can surely be confusing. Maybe the course is meant for people with a math and / or programming background but currently I do not believe it is well suited for beginners.
Scala runs on top of the JVM which means I had, for the first time in many years, a reason to install Java on my notebook. If you follow the instructions closely you will end up installing Eclipse. I do not want this to become a discussion of IDEs or why, of all IDEs I have worked with, Eclipse is the last one I would want to use.
Something that currently did not happen - and I have seen the same thing in many Java books - is an explanation how you setup a project, file system structure and run it using command line tools. Maybe it will follow in a later lesson and was just skipped for simplicity, at least I hope so. I have seen to many people not being able to run a Java project when you take away their IDE with explanations ranging from "I never needed to do this" to "let the sysops guys handle this, it is not my job". In my opinion this is a lack of base knowledge.
The material for the second week looks promising. I hope to talk a bit more about Scala and less about everything else next week.