Language Books/Tutorials for popular languages

programming-languages

It wasn't that long ago that I was a beginning coder, trying to find good books/tutorials on languages I wanted to learn. Even still, there are times I need to pick up a language relatively quickly for a new project I am working on. The point of this post is to document some of the best tutorials and books for these languages. I will start the list with the best I can find, but hope you guys out there can help with better suggestions/new languages. Here is what I found:

Since this is now wiki editable, I am giving control up to the community. If you have a suggestion, please put it in this section. I decided to also add a section for general be a better programmer books and online references as well. Once again, all recommendations are welcome.

General Programming

Online Tutorials
Foundations of Programming By Karl Seguin – From Codebetter, its C# based but the ideas ring true across the board, can't believe no-one's posted this yet actually.
How to Write Unmaintainable Code – An anti manual that teaches you how to write code in the most unmaintable way possible. It would be funny if a lot of these suggestions didn't ring so true.
The Programming Section of Wiki Books – suggested by Jim Robert as having a large amount of books/tutorials on multiple languages in various stages of completion
Just the Basics To get a feel for a language.

Books
Code Complete – This book goes without saying, it is truely brilliant in too many ways to mention.
The Pragmatic Programmer – The next best thing to working with a master coder, teaching you everything they know.
Mastering Regular Expressions – Regular Expressions are an essential tool in every programmer's toolbox. This book, recommended by Patrick Lozzi is a great way to learn what they are capable of.
Algorithms in C, C++, and Java – A great way to learn all the classic algorithms if you find Knuth's books a bit too in depth.

C

Online Tutorials
This tutorial seems to pretty consise and thourough, looked over the material and seems to be pretty good. Not sure how friendly it would be to new programmers though.
Books
K&R C – a classic for sure. It might be argued that all programmers should read it.
C Primer Plus – Suggested by Imran as being the ultimate C book for beginning programmers.
C: A Reference Manual – A great reference recommended by Patrick Lozzi.

C++

Online Tutorials
The tutorial on cplusplus.com seems to be the most complete. I found another tutorial here but it doesn't include topics like polymorphism, which I believe is essential. If you are coming from C, this tutorial might be the best for you.

Another useful tutorial, C++ Annotation. In Ubuntu family you can get the ebook on multiple format(pdf, txt, Postscript, and LaTex) by installing c++-annotation package from Synaptic(installed package can be found in /usr/share/doc/c++-annotation/.

Books
The C++ Programming Language – crucial for any C++ programmer.
C++ Primer Plus – Orginally added as a typo, but the amazon reviews are so good, I am going to keep it here until someone says it is a dud.
Effective C++ – Ways to improve your C++ programs.
More Effective C++ – Continuation of Effective C++.
Effective STL – Ways to improve your use of the STL.
Thinking in C++ – Great book, both volumes. Written by Bruce Eckel and Chuck Ellison.
Programming: Principles and Practice Using C++ – Stroustrup's introduction to C++.

Accelerated C++ – Andy Koenig and Barbara Moo – An excellent introduction to C++ that doesn't treat C++ as "C with extra bits bolted on", in fact you dive straight in and start using STL early on.

Forth

Books
FORTH, a text and reference. Mahlon G. Kelly and Nicholas
Spies. ISBN 0-13-326349-5 / ISBN 0-13-326331-2. 1986
Prentice-Hall. Leo Brodie's books are good but this book
is even better. For instance it covers defining words and
the interpreter in depth.

Java

Online Tutorials
Sun's Java Tutorials – An official tutorial that seems thourough, but I am not a java expert. You guys know of any better ones?
Books
Head First Java – Recommended as a great introductory text by Patrick Lozzi.
Effective Java – Recommended by pek as a great intermediate text.
Core Java Volume 1 and Core Java Volume 2 – Suggested by FreeMemory as some of the best java references available.
Java Concurrency in Practice – Recommended by MDC as great resource for concurrent programming in Java.

The Java Programing Language

Python

Online Tutorials
Python.org – The online documentation for this language is pretty good. If you know of any better let me know.
Dive Into Python – Suggested by Nickola. Seems to be a python book online.

Perl

Online Tutorials
perldoc perl – This is how I personally got started with the language, and I don't think you will be able to beat it.
Books
Learning Perl – a great way to introduce yourself to the language.
Programming Perl – greatly referred to as the Perl Bible. Essential reference for any serious perl programmer.
Perl Cookbook – A great book that has solutions to many common problems.
Modern Perl Programming – newly released, contains the latest wisdom on modern techniques and tools, including Moose and DBIx::Class.

Ruby

Online Tutorials
Adam Mika suggested Why's (Poignant) Guide to Ruby but after taking a look at it, I don't know if it is for everyone.
Found this site which seems to offer several tutorials for Ruby on Rails.
Books
Programming Ruby – suggested as a great reference for all things ruby.

Visual Basic

Online Tutorials
Found this site which seems to devote itself to visual basic tutorials. Not sure how good they are though.

PHP

Online Tutorials
The main PHP site – A simple tutorial that allows user comments for each page, which I really like.
PHPFreaks Tutorials – Various tutorials of different difficulty lengths.
Quakenet/PHP tutorials – PHP tutorial that will guide you from ground up.

JavaScript

Online Tutorials
Found a decent tutorial here geared toward non-programmers. Found another more advanced one here. Nickolay suggested A reintroduction to javascript as a good read here.

Books
Head first JavaScript
JavaScript: The Good Parts (with a Google Tech Talk video by the author)

C#

Online Tutorials
C# Station Tutorial – Seems to be a decent tutorial that I dug up, but I am not a C# guy.
C# Language Specification – Suggested by tamberg. Not really a tutorial, but a great reference on all the elements of C#
Books
C# to the point – suggested by tamberg as a short text that explains the language in amazing depth

ocaml

Books
nlucaroni suggested the following:
OCaml for Scientists
Introduction to ocaml
Using Understand and unraveling ocaml: practice to theory and vice versa
Developing Applications using Ocaml – O'Reilly
The Objective Caml System – Official Manua

Haskell

Online Tutorials
nlucaroni suggested the following:
Explore functional programming with Haskell
Books
Real World Haskell
Total Functional Programming

LISP/Scheme

Books
wfarr suggested the following:
The Little Schemer – Introduction to Scheme and functional programming in general
The Seasoned Schemer – Followup to Little Schemer.
Structure and Interpretation of Computer Programs – The definitive book on Lisp (also available online).
Practical Common Lisp – A good introduction to Lisp with several examples of practical use.
On Lisp – Advanced Topics in Lisp
How to Design Programs – An Introduction to Computing and Programming
Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp – an approach to high quality Lisp programming

What about you guys? Am I totally off on some of there? Did I leave out your favorite language? I will take the best comments and modify the question with the suggestions.

Best Solution

I know this is going to seem old-fashioned, but I don't think much of using online tutorials to learn programming languages or platforms. These generally give you no more than a little taste of the language. To really learn a language, you need the equivalent of a "book", and in many cases, this means a real dead-tree book.

If you want to learn C, read K&R. If you want to learn C++, read Stroustrup. If you want to learn Lisp/Scheme, read SICP. Etc.

If you're not willing to spend more than $30 and a few hours to learn a language, you probably aren't going to learn it.

Related Question