Ask HN: Good Programming Books to Teach Programmers New Languages?
What are some good books to teach a programmer a new language they've never used before? For example, I'm decent at Java, but haven't gotten into Python much yet. It seems like all the Python books I've skimmed are one of two types: so basic that they spend most of the time teaching basics of programming, which I'm already familiar with, or so advanced that they already require good working knowledge of the language.
I'm looking for a good balance between these: a book that assumes you know about programming basics, but focuses on what's DIFFERENT about the new language.
7 comments
[ 3.1 ms ] story [ 34.1 ms ] threadFor Python, I believe you're looking for http://www.diveintopython.org/
The author assumes you know how to program, and teaches you how to program in Python. He does this by, at the beginning of a section, presenting a working chunk of code between 10-30 lines long. Then he spends the rest of the section explaining what those lines do, and explaining when you'd want to use those techniques. I liked this approach because I knew where he was going in each chapter, and I could use my own experience as a programmer to figure out what was going on, and skip his explanation if I already figured it out.
This book covers up to Python 2.5, but you could then read about the changes in Python 2.6/3.0 at:
http://www.python.org/doc/
"Programming Erlang" is a good introduction to both the language and the way of thinking about programs as highly distributed, multi-node systems: http://www.pragprog.com/titles/jaerlang/programming-erlang
"Real World Haskell" is a very fun book, with a ton of good lessons to absorb, and impressive real-world example code. Some of the later material is pretty dense, though, and I'd plan on spending some real effort working through it, especially if you haven't used any similar languages before. (I've done SML, Lisp, and Prolog, and I still had to work hard to understand parts of RWH.) http://www.realworldhaskell.org/blog/