Programming in Scala
Martin Odersky, Lex Spoon, et al.
4.7 on Amazon
42 HN comments
The Art of Doing Science and Engineering: Learning to Learn
Richard W. Hamming and Bret Victor
4.7 on Amazon
40 HN comments
The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World
Pedro Domingos
4.4 on Amazon
40 HN comments
Operating Systems: Three Easy Pieces
Remzi H Arpaci-Dusseau and Andrea C Arpaci-Dusseau
4.7 on Amazon
40 HN comments
Start with Why: How Great Leaders Inspire Everyone to Take Action
Simon Sinek
4.6 on Amazon
36 HN comments
Java Concurrency in Practice
Brian Goetz , Tim Peierls, et al.
4.7 on Amazon
34 HN comments
Countdown to Zero Day: Stuxnet and the Launch of the World's First Digital Weapon
Kim Zetter, Joe Ochman, et al.
4.7 on Amazon
34 HN comments
Managing Humans: Biting and Humorous Tales of a Software Engineering Manager
Michael Lopp
4.4 on Amazon
33 HN comments
The Innovators: How a Group of Hackers, Geniuses, and Geeks Created the Digital Revolution
Walter Isaacson, Dennis Boutsikaris, et al.
4.6 on Amazon
31 HN comments
Elements of Programming Interviews: The Insiders' Guide
Adnan Aziz , Tsung-Hsien Lee , et al.
4.6 on Amazon
31 HN comments
Accelerated C++: Practical Programming by Example
Andrew Koenig , Mike Hendrickson, et al.
4.2 on Amazon
31 HN comments
The Ascent of Money: A Financial History of the World: 10th Anniversary Edition
Niall Ferguson
4.5 on Amazon
30 HN comments
Programming Rust: Fast, Safe Systems Development
Jim Blandy, Jason Orendorff, et al.
? on Amazon
28 HN comments
Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython
Wes McKinney
4.6 on Amazon
28 HN comments
Think Python: How to Think Like a Computer Scientist
Allen B. Downey
4.6 on Amazon
27 HN comments
cgbonApr 9, 2012
mike_esspeonDec 6, 2010
Very easy read, explains a lot of functional programming concepts. This book made me a fan of Scala and functional programming.
jiaweihlionOct 20, 2015
> I can honestly say if someone had shown me the Programming in Scala book by by Martin Odersky, Lex Spoon & Bill Venners back in 2003 I'd probably have never created Groovy.
[1] http://macstrac.blogspot.com/2009/04/scala-as-long-term-repl...
craigwblakeonApr 19, 2014
Still, it stands out to me as the best introduction to the language.
lannaonDec 30, 2012
Scala for the Impatient, by Cay Horstmann (introductory)
Scala in Depth, by Joshua Suereth (advanced)
hponJan 9, 2012
There's also a new docs site and it's getting better all the time: http://docs.scala-lang.org/
defroostonJune 2, 2011
daviddumenilonFeb 16, 2016
http://macstrac.blogspot.co.uk/2009/04/scala-as-long-term-re...
tilltheisonMay 12, 2011
glasneronJune 21, 2011
- The Data Warehouse by Kimball
- Web Analytics 2.0 by Kaushik
- Quality Score in High Resolution by Danuloff
kev009onMar 31, 2012
I think a lot of this is addressed in the "Programming in Scala" book.
zzyganonSep 1, 2009
Programming in Scala - Odersky et al.
Code Complete 2- re reading, its a good read actually
Godel Escher Bach - Hofstadter
michaelochurchonDec 27, 2011
Concepts, Techniques, and Models of Computer Programming: http://www.amzn.com/0262220695
or:
Programming in Scala: http://www.amzn.com/0981531644
letientai299onJan 16, 2017
by Martin Odersky, Lex Spoon, and Bill Venners.
Beside a good introduction into Scala, that book also teach me the principles in computer programing. It's worth read again several times.
irahulonNov 23, 2012
+1
The book is huge, but that's more to do with the fact that Scala is one kitchen sink of a language than the writing.
krenotenonFeb 12, 2015
fauigerzigerkonOct 9, 2010
muyyatinonAug 19, 2010
Scala is easier to learn if you know Java, and has excellent IDE support in both Eclipse and Intellij IDEA. "Programming in Scala" is a good introduction and reference for Scala (http://www.artima.com/shop/programming_in_scala), but doesn't cover the new features in Scala 2.8.
I had good experiences with OCaml also (which compiles down to machine code, so has the potential to be faster than Scala if performance is critical). I believe it has more advanced tail-recursion optimizations. It seemed that floating point arithmetic was slow because each number had to be stored on the heap separately.
gh0ztonMar 27, 2017
- Scala for the impatient (http://www.horstmann.com/scala/)
- Programming in Scala (https://booksites.artima.com/programming_in_scala_3ed)
I found those books very good resources. The Scala website lists a few others (https://www.scala-lang.org/documentation/books.html)
Aprt from that I found Daniel Westheides blog a very good starting point (http://danielwestheide.com/scala/neophytes.html)
pughbrionFeb 13, 2013
Our team has been able to come up to speed on Scala and get productive pretty quickly. Within a month, the team felt comfortable in Scala. Most team members read through Odersky's "Programming in Scala" book to get an overview of the language which was helpful. We've also had some team members go through the Coursera class.
Our experience is that there is a cost to Scala when it comes to new hires. Very few new hires have any meaningful Scala experience so they have to come up to speed on the language whereas with Java or PHP most new hires are already proficient in the language. In the end, however, we believe that the benefits of Scala, Play and Akka over the long term will outweigh the short term cost of training new hires. Even with our new hires, we find they are pretty comfortable and productive after a month of learning and using Scala.
nrinaudoonFeb 25, 2015
I find that the best book if you want a deep understanding of the language is Odersky's Programming in Scala. Complete, thorough, well written. It does expect you to have some programming experience, and some bits are perhaps over-detailed, but as long as you allow yourself to skip the bits that bore you, you're in for a treat.
jrockwayonOct 13, 2012
Publishers are also hesitant to offer their books in DRM-free format because book piracy would otherwise be rampant. (The fact that there's a torrent for every Kindle book ever just goes to show you how effective DRM is. Once again, it's another DRM scheme that only hurts legitimate users and publishers, but the lawyers tell everyone otherwise and so everyone is happy. It would be funny if it weren't so sad.)
There are some publishers that just offer ebooks as PDFs that you download from their website. My book is like that (though it has a PDF password that your reader can just ignore), and some other books I've bought are like that. "Programming in Scala" is just a pure PDF download after you give them your money. It's a nice system and the rest of the industry will catch on soon. For now, publishers seem to enjoy working with middlemen that take a 30% cut of the author's revenue, but people are getting tired of the middlemen and with that, DRM will slowly fade away and open ebook platforms will be the norm. Just give it ten years.
pkinskyonMar 13, 2014
>Though my tip though for the long term replacement of javac is Scala. I'm very impressed with it! I can honestly say if someone had shown me the Programming in Scala book by by Martin Odersky, Lex Spoon & Bill Venners back in 2003 I'd probably have never created Groovy.
-James Strachan
Negative1onFeb 16, 2015
From personal experience, it helps to know the Java ecosystem and the basic data structures but it won't hurt you too much if you don't. Read 'Programming in Scala' and you'll pick up on all the missing pieces pretty quickly.
mamononDec 28, 2018
beastman82onMar 27, 2017
taway_1212onMar 27, 2017
batistaonJan 20, 2012
It is as it ever was, there is even a new version out.
You'd be mostly on your own + SpringSource, though, don't expect a Rails/Django sized community, or even a Sinatra or CakePHP sized one...
Groovy itself, the component language, has also lost a lot of core developers and momentum, especially the project lead at most of the language's development:
"In July 2009, Strachan wrote on his blog that "I can honestly say if someone had shown me the Programming in Scala book by Martin Odersky, Lex Spoon & Bill Venners back in 2003 I'd probably have never created Groovy."[1] Strachan left the project silently a year before the Groovy 1.0 release in 2007."
nadamonNov 23, 2010
Also depends on the topic. A talented 18 years old can be a very good web designer. Or can solve tricky math/algorithmization problems well. On the other hand a 18 year old (except probably the caliber of Terry Tao) cannot do things where huge amount of experience, learned knowledge and maturity is needed. I am just reading the book 'Programming in Scala'. It is just plain impossible that a 18 year old could design that programming language and could write that book that way. When you read that book you feel the huge amount of knowledge and experience (in everyday programming, in other programming languages, in language design, in compiler writing and in computer science theory) which was needed to create it.
a3nonJan 17, 2014
I'm also re-reading Niven's Ringworld series, as a bridgehead to the rest of his Known Space material; I've never gone beyond Ringworld before. I'm in the third book at the moment. https://en.wikipedia.org/wiki/Known_Space
ondrasejonMay 12, 2011
taudeonNov 19, 2013
(a little Googling later...)
"Though my tip though for the long term replacement of javac is Scala. I'm very impressed with it! I can honestly say if someone had shown me the Programming in Scala book by by Martin Odersky, Lex Spoon & Bill Venners back in 2003 I'd probably have never created Groovy." [1]
[1] http://macstrac.blogspot.com/2009/04/scala-as-long-term-repl...
Edit: I should add that I'm considering using Groovy with a micro-framework called Ratpack (http://www.ratpack.io/), so I'm only bringing this up as a part of the conversation if someone's trying to figure out what they want to learn next.
virtualwhysonJuly 30, 2013
Started with a few pleasant months of pure Groovy, followed by 6 painful months with Grails (during the pre 2.x days). At that point I had my feet wet and realized that Groovy, as language, was not going to cut it (tried building a CRUD layer on top of Grails and Groovy's lack of static typing became a real thorn).
At the time James Strachan had ditched Groovy (the very language he had created, mind you) and was raving about the wonders of Scala. Interested I picked up the stairway book, Programming in Scala.
That changed my life as a programmer. Checked out Scalatra, Spray, Lift, and Play. Play wound up being the best fit.
I still get JIRA notifications for bug requests I created with Grails -- each one the devs just kick the can down the road (fix) to the next version, glad I left ;-)
saryantonApr 20, 2014
Fortunately, this means that the book is up-to-date with 2.8's major collections refactor.
I would say the biggest change to the standard library since then are the deprecation of scala.actors and their replacement by Akka actors. I think that's the only chapter in the book that's no longer relevant. There are a few smaller ones (replacement of scala.Application with scala.App) and a few nice additions (implicit classes aka Ruby monkey patching) but I can't think of anything substantial for a beginner.
rtpgonFeb 5, 2013
I can't quite vouch for Odersky's "Programming in Scala", however. For something presented much like the definitive source, it never went into the edge cases, and the chapters get smaller and smaller. The chapter on parsing is woefully incomplete, failing to explain how to use the base feature set apart from recognising a grammar (no info on usage). Explanations on certain things like implicits also left something to be desired.
These books might be good though.
vorgonMay 26, 2015
leftnodeonJune 22, 2011
I can't learn a new language quickly, so to learn I'm blogging about my experiences at http://leftnode.com and trying to write as many small programs as possible, moving into larger ones when I'm ready.
I'm trying to ignore many of the larger projects and in-depth Scala projects for the time being so I don't overwhelm myself and give up on learning the language.
vijucatonDec 6, 2013
Just anecdotal information : my Kindle regularly reports the infamous "Low memory" error and closes down the book when I try to read my 8 MB copy of "Programming in Scala, 2nd Edition". It definitely detracts from the reading experience, especially knowing upfront that you can read only a few pages before you hit the dreaded error.
I suppose Knuth's book would be equally, or more, "heavy" and the Kindle would choke on the pdf versions.
jongraehlonSep 18, 2009
1. Take a message from the mailbox (that may have been queued for a long time).
2. If the mailbox still has more than N items, then throw away the message.
This is a really dumb way to approximate a fixed size mailbox, and doesn't allow for an immediate refusal.
The questionable Scala code is pulled from recently written O'Reilly book on Scala. I haven't read it myself, but it's probably not as good as "Programming in Scala" (Odersky et al), which covers Actors+Concurrency in Chapter 30.
Needless to say, Scala also has access to all the Java concurrency primitives and libraries. I believe there's a Scala STM library as well.
shpxnvzonAug 22, 2009
Actually, Scala did already exist when Groovy was created. What Strachan really said is this:
"I can honestly say if someone had shown me the Programming in Scala book by by Martin Odersky, Lex Spoon & Bill Venners back in 2003 I'd probably have never created Groovy."
- http://macstrac.blogspot.com/2009/04/scala-as-long-term-repl...
That said, I still think Groovy and Grails are a potent combination for increasing productivity in traditional Java shops.
nirvdrumonNov 22, 2011
The book also weighs in at 883 pages and I was astonished how much of it I needed to read to even get started. Once I did, I very much like what I saw. But I was a big fan of ML back in grad school.
I do share some of the blog author's gripes though. Most of the popular Scala libraries are just a mess of DSL operators that have no real world association. I'm constantly having to look up what an operator means. I still have no clue how to use the Dispatch library, since the concepts it encapsulates are about 400 pages deeper into the book than I'm currently at. This, just to issue an HTTP GET request. I really thought there might be something on the lines of Ruby's rest-client library.
Additionally, my issues with versioning occur at a much simpler level. The release notes of any given Scala release are devoid of anything useful. Usually it's just a list of JIRA issue numbers (not the issue titles). And then there was this whole debacle around 2.9.0.1 and how SBT called the version. That took me 4 hours longer to work than was really necessary.
So, anyway, I do have some Scala projects. Incidentally they're all Java interop because I just can't wrap my head around how to use most of the Scala-specific libraries. But I've found it works really well in those situations. Deep down I really do like the language. The Scala ecosystem leaves a lot to be desired, but fortunately I can pull in stuff from elsewhere on the JVM.
frioonJuly 14, 2010
Alternatively, if someone knows a better community that could field this question, I'd really appreciate being pointed in that direction. One thing I've not really grokked about Scala is where to go to ask such things!