HackerNews Readings
40,000 HackerNews book recommendations identified using NLP and deep learning

Scroll down for comments...

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

Prev Page 3/16 Next
Sorted by relevance

cgbonApr 9, 2012

The search results can also depend on the titles of popular books. "The C programming language" matches the TIOBE pattern, "Programming in Scala" does not.

mike_esspeonDec 6, 2010

"Programming in Scala" by Martin Odersky, Lex Spoon, Bill Venners.

Very easy read, explains a lot of functional programming concepts. This book made me a fan of Scala and functional programming.

jiaweihlionOct 20, 2015

There is also this gem of a quote by him[1]:

> 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

Odersky's Programming in Scala is a fantastic book, but unfortunately so far as I know it has not been updated for the last couple of versions of the language and libraries which have some significant changes.

Still, it stands out to me as the best introduction to the language.

lannaonDec 30, 2012

Programming in Scala, by Martin Odersky, et al (comprehensive)

Scala for the Impatient, by Cay Horstmann (introductory)

Scala in Depth, by Joshua Suereth (advanced)

hponJan 9, 2012

I found it essential to read Martin Odersky's Programming in Scala book - if you haven't then I recommend it. It makes many things clear that can be hard to pick up using only the free online resources.

There's also a new docs site and it's getting better all the time: http://docs.scala-lang.org/

defroostonJune 2, 2011

While definitely not small, the stairway book, "Programming in Scala" by Odersky, mentioned in the article, is an excellent tutorial style book. The second edition was just released in January.

daviddumenilonFeb 16, 2016

"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."

http://macstrac.blogspot.co.uk/2009/04/scala-as-long-term-re...

tilltheisonMay 12, 2011

"Programming in Scala" is a good one, I've been told. The first edition is available online at http://www.artima.com/pins1ed/ .

glasneronJune 21, 2011

- Programming in Scala by Odersky
- The Data Warehouse by Kimball
- Web Analytics 2.0 by Kaushik
- Quality Score in High Resolution by Danuloff

kev009onMar 31, 2012

I'm a C fan as well but really like Scala for certain domains. There is complexity in Scala but it's layered in a way that I think is able to support that complexity long term.

I think a lot of this is addressed in the "Programming in Scala" book.

zzyganonSep 1, 2009

I'm one of the ones that has too many books on my reading list.

Programming in Scala - Odersky et al.
Code Complete 2- re reading, its a good read actually
Godel Escher Bach - Hofstadter

michaelochurchonDec 27, 2011

Best book is hard. Best technical book is either:

Concepts, Techniques, and Models of Computer Programming: http://www.amzn.com/0262220695

or:

Programming in Scala: http://www.amzn.com/0981531644

letientai299onJan 16, 2017

Programming in Scala
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

> You also cannot write about learning resource, without mentioning "Programming in Scala" by Odersky, a wonderful book also meant for human beings. Its only problem is that it's a tome of information and you may not have the patience for that, but it's not a hard to digest book so if you've got the time and patience, then this is THE book you should read: http://www.artima.com/shop/programming_in_scala_2ed

+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

There is an awesome book called "Functional Programming in Scala" that has a lot of great questions to work along to, and is great for somebody interested in both Haskell and Scala but doesn't assume prior experience with things like combinators and monads. If you are pretty far down the Haskell route and want to learn about one of the more advanced type-level libraries, You may want to jump into http://eed3si9n.com/learning-scalaz/ and use https://twitter.github.io/scala_school/ as a quick reference or intro. If you have the time and desire, a lot of people swear by a cover-to-cover reading of Odersky's "Programming in Scala".

fauigerzigerkonOct 9, 2010

I'm not doing any actual work with Scala either. I read Programming in Scala a while back and played with it some but not much more. What I had in mind when I said C# diverges more was Linq.

muyyatinonAug 19, 2010

I've had experience with both Scala and OCaml (both which allow non-functional programming also). F# is the Microsoft version of OCaml.

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

As you are asking for books
- 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

Brian from Lucidchart here. I do think we have a fantastic dev team at Lucidchart which makes the switch to Scala easier. We've tried to keep a very high bar in our hiring.

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

While Functional Programming in Scala is great, it focuses on areas of Scala that I think are better tackled once you're more familiar with the core language - pattern matching, traits, case classes, variance, for comprehensions...

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

The problem is not the hardware: the hardware will read Free books just fine. The problem is that Amazon wants to sell you books that will only work on their platform, since those books subsidize their hardware. (Oddly, not much stops you from buying books from other stores, except that those stores all use different DRM. It's like heard immunity or something.)

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

I chose Scala/Play framework for the same reasons. Java might be awful, but the JVM is a beast.

>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

For whatever it's worth, that scalac fork hasn't been updated in over 5 months.

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

Calling Scala "purist language" sounds riddiculous to me. It is a hybrid of object-oriented and functional styles, with tons of weird hacks like case classes for pattern matching, implicits, type inference that kind of works, but is not full Hindley-Milner, Java bindings that require weird conversions between Java and Scala collection types, _ as a wildcard in few different places. Scala is the opposite of purism. There's a reason why Odersky's "Programming in Scala" has over 800 pages - even listing all the hacks used in the language is not trivial.

beastman82onMar 27, 2017

I learned by reading "Programming in Scala" by Martin Odersky who invented the language. https://www.artima.com/shop/programming_in_scala_3ed

taway_1212onMar 27, 2017

I learnt Scala from Odersky's "Programming in Scala" and can fully recommend it. I didn't have any functional language experience beforehand.

batistaonJan 20, 2012

I don't think Grails was much alive (in terms of adoption) at any point in time.

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

98% of younger than 18 year olds overestimate their knowledge. I know this from experience from programming forums. I began programming when I was 12 and I massively overestimated my knowledge when I was 18 years old. (I know there are rare exceptions.)

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 reading Programming in Scala. The free online, out of date but good enough to help you decide to go further or not first edition. I have the scala repl open alongside. Never programmed in Scala, don't know that I ever will, but it's interesting. http://www.artima.com/pins1ed/

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

Definitely Programming in Scala - http://www.artima.com/shop/programming_in_scala. You might find some parts of the book a little boring if you already have experience with functional programming, but it is one of the best books about programming languages I've read (I've only read the second edition, not the one that is available online, but I guess, the first one will be OK as an introduction too).

taudeonNov 19, 2013

Didn't James Strachan, the creator of Groovy, basically say that if he could do it over again, he'd create Scala?

(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

Was in same boat as you 3 years ago, new to the JVM.

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

To expand on this, Programming in Scala is based on Scala 2.8. We're now on 2.10 with 2.11 coming up (it's in RC mode right now).

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

Scala is definitely worth the time to learn properly, in my opinion. The convenience features are pretty good, and its a lot more usable than other FP languages due to the fact that you can "opt into" java-style code when it feels necessary.

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

Don't think that's the case with Ceylon or Kotlin, perhaps with some other "post-Scala" JVM language such as Gosu or Fantom, but definitely with Groovy. It's creator James Strachan wrote in http://macstrac.blogspot.com/2009/04/scala-as-long-term-repl... "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".

leftnodeonJune 22, 2011

I've given up PHP for Scala recently, and it doesn't seem too difficult yet. Do yourself a favor, pick up a copy of "Programming In Scala" by the languages author, and read it starting from page one, even if you think you're an expert programming.

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

> It's a book that is a PDF at some point before it hits printing presses. What is there to make at all? The kindle has been out for how many years? how is the book so different when reading it on an e-ink display?

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

The use of actors with mailboxes that annoys the author is:

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

He simply said that had Scala already existed...

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

I've been picking up Scala on-and-off for the past few months. "Programming in Scala: Second Edition" is one of the best tech books I've ever read. The authors assume you already know how to program, offer mutable & immutable approaches to nearly everything, anticipate esoteric questions in the footnotes, and even have a good sense of humor.

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

Does anyone know if there are any plans to update Odersky's "Programming in Scala" book? I'm intending to buy it in order to learn Scala, but if there's a second edition pending I'd rather hold off.

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!

Built withby tracyhenry

.

Follow me on