Wednesday, January 8, 2014

Scala is another JVM based programming language, which is quickly gaining popularity because of its interesting mix of object oriented and functional programming paradigm. Many companies has started using Scala for there strategic and mission critical development. One of the best known is Twitter, which is also one of the key factor in growing popularity of Scala programming language. If you are a Java, C++ or C# programmer, who is willing to learn Scala in your spare time, then you will be surprised to see how much helpful content is available for FREE on internet. By the way Java 8 is not far way, only couple of months to go and there are already some decent tutorials available online. If you are learning Java 8, you may like to see my list of resources on Java 8 as well. I personally prefer books to start with and that's why, when I recently started learning Scala, I did some research on Scala programming books, which are available for FREE download or online reading. I am surprised to see lots of good contents, including Scala for the Impatient from Cay Horstmann, which I already had. Other good FREE Scala books I found was Effective Scala, looks like inspired by Effective Java, from Marius Eriksen, Twitter Inc. This is not as exhaustive as Effective Java and I guess it will evolve into similar length, but still contains lots of good advice on Scala programming. One more Scala book which is available for free is Programming in Scala, First Edition by Martin Odersky, Lex Spoon, and Bill Venners, this is bit old, first published at December 10, 2008, but still a good book to have, given Martin, inventor of Scala is co-author. Another good tutorial cum book I found is Scala School, collection of lectures from Twitter to prepare experienced engineers to be productive Scala programmers. You can read this on-line. Best things about all these resources are that they are FREE, you don't need to spend single penny to get these tutorials, of-course if you like you can also purchase some more good books, I have mentioned in my earlier post about difference between Scala and Java programming language. Now let's see from where can you download these free Scala programming books and how good they are.

5 Free Good Books to Learn Scala Programming language

So here you go, my list of some of the best resources, tutorial and books to learn Scala programming language for free. Some of the books can be downloaded as PDF while others can be read online. If you know any other Scala book, which you think is a good resource to learn and its also available for FREE, you can share with us. Apart from these, you can also see tutorials, manuals, API reference from scala-lang.org and official Scala API documentation to learn more.

This is one of the few good books on Scala Programming language, written by Cay Horstmann, published by Addison-Wesley 2012. It's one of the best, compact introduction to Scala programming language for programmers who are already familiar with popular first class languages e.g. Java, C++ or C#. It contains small, chapter wise contents which are very easy to comprehend, a much needed requirement to understand a language like Scala, which initially looks cryptic to many Java developers. Once you gone through the book, you will most likely to use it as quick reference as well. To give you an idea about different levels of Scala programmers, level A1 is for Beginning application programmer, level A2 stands for Intermediate application programmer and level A3 is used for Expert application programmer. Similarly they have three levels for Scala library designer, where level L1 is for Junior library designer, level L2 is for Senior library designer and level L3 is used for Expert library designer. As part of level A1 contents you will learn following topics in Scala :

Now the best part is that you can get the A1 level chapters of this Scala book for free at typesafe. All you need to do is to enter your first name, last name, email address and company name. You need to thank Martin Odersky, the inventor of Scala for that. He has also written forward for this book and so impressed with basic concept of the book that he asked cay, if the first section could be made available as a free download on the Typesafe website, something Horstmann graciously assented to. So what are you waiting for, you can download FREE pdf of Scala for the Impatient here.

Programming in Scala First EditionThis is one of the first books in Scala programming language, comprehensive step-by-step guide by Martin Odersky, Lex Spoon, and Bill Venners. One of the highlight of this books is that it is co-written by the language's designer, Martin Odersky. It covers Scala in great details and can be used as reference as well. Like any good book, Programming in Scala flows well with each chapter building on concepts and examples described in earlier ones. Fantastic thing is that first edition of this books available for FREE, by the way if you like you can also get second edition of this book from book stores. I rate this book very precious free resource for Java cum Scala programmers. You can read this book on internet here.

Scala School from Twitter
Scala school is started as a series of lectures at Twitter to prepare experienced Java, C and C# programmers to be productive Scala programmers. Scala is a relatively new language, but draws on many familiar concepts. Thus, these lectures assumed that programmers already familiar with the concepts and showed how to use them in Scala. This is actually an effective way of getting new programmers up to speed quickly. This online tutorial cum blog cum book is the written material that was used in those lectures, you can read them one by one in the order they are presented to get most out of them. They are short, full of examples and very easy to understand, but same time not trivial. You can check out this book on-line here

Scala Tutorials for Java Programmers
This is one of the best Scala tutorials for Java developers, directly from source scala-lang.org. This book gives a quick introduction to the Scala language and compiler. It is intended for people who already have some programming experience and curious to learn Scala to see what they can do with this new programming language. It also assumed basic knowledge of object-oriented programming, especially in Java. They start right from Hello World program, which is what most Java programmer like to see:

objectHelloWorld {

def main(args:Array[String]) {

println("Hello,
world!")

}

}

From here they went on to explain how Scala programs are structured and comparatively analysis of Java vs Scala. It is good as gold and absolutely free as well. You can download PDF version in book like format here.

Thanks for listing the resources to learn Scala! As a Java programmer, I would like to learn languages related to Java. Hope some people might like to learn Javascript too. Below is the link, I found useful for Javascript, http://netultimateschool.com/javascript-operators/Thanks !

If anyone, who has strong background in Java, C# or C++ is looking to learn Scala, I would recommend following books, ofcourse they are not free, but you must there is nothing like FREE lunches in this world :)

1) Scala for the Impatient by Cay S. Horstmann, it's a concis language reference written by one of the best in the market. It offers a rapid, code-based and practical introduction of Scala as language and platform.

2) Programming in Scala: A Comprehensive Step by Step guide, 2nd edition by Martin Odersky. This is written by creator, promoter and father of Scala language himself. It starts with introducing functional programming from the practitioner's perspective, and shows you advanced language feature, patterns incorporated which can help you to become better, more productive developer.

3) Scala in Action by Nilanjan RayChaudhri is my how to do in Scala guide. It's comprehensive, readable and explain language concepts by exploring challenges you face in day to day work.

4) Programming Scala: Scalability = Functional Programming + Objects (Animal Guide) by Dean Wampler and Alex Payne clearly explains the advantages of Scala as a JVM language. You'll learn how to take advnantage of the wealth of Java class libraries to meet the practical needs of enterprise and Internet projects more easily. Packed with code examples, this book provides useful information on Scala's command-line tools, third-party tools, libraries, and available language-aware plugins for editors and IDEs.