title: Language Books/Tutorials for popular languages
body: <p>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:</p>
  
  <p><em>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.</em></p>
  
  <h2>General Programming</h2>
  
  <p><strong>Online Tutorials</strong><br>
  <a href="http://codebetter.com/blogs/karlseguin/archive/2008/06/24/foundations-of-programming-ebook.aspx" rel="nofollow noreferrer">Foundations of Programming</a> 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.<br />
  <a href="http://freeworld.thc.org/root/phun/unmaintain.html" rel="nofollow noreferrer">How to Write Unmaintainable Code</a> - 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.<br>
  <a href="http://en.wikibooks.org/wiki/Wikibooks:Programming_languages_bookshelf" rel="nofollow noreferrer">The Programming Section of Wiki Books</a> - suggested by Jim Robert as having a large amount of books/tutorials on multiple languages in various stages of completion<br>
  <a href="http://basics.wefoundland.com/" rel="nofollow noreferrer">Just the Basics</a> To get a feel for a language.</p>
  
  <p><strong>Books</strong><br>
  <a href="https://rads.stackoverflow.com/amzn/click/com/0735619670" rel="nofollow noreferrer" rel="nofollow noreferrer">Code Complete</a> - This book goes without saying, it is truely brilliant in too many ways to mention.<br>
  <a href="https://rads.stackoverflow.com/amzn/click/com/020161622X" rel="nofollow noreferrer" rel="nofollow noreferrer">The Pragmatic Programmer</a> - The next best thing to working with a master coder, teaching you everything they know.<br>
  <a href="https://rads.stackoverflow.com/amzn/click/com/0596528124" rel="nofollow noreferrer" rel="nofollow noreferrer">Mastering Regular Expressions</a> - 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.<br>
  Algorithms in <a href="https://rads.stackoverflow.com/amzn/click/com/0201756080" rel="nofollow noreferrer" rel="nofollow noreferrer">C</a>, <a href="https://rads.stackoverflow.com/amzn/click/com/020172684X" rel="nofollow noreferrer" rel="nofollow noreferrer">C++</a>, and <a href="https://rads.stackoverflow.com/amzn/click/com/0201775786" rel="nofollow noreferrer" rel="nofollow noreferrer">Java</a> - A great way to learn all the classic algorithms if you find Knuth's books a bit too in depth.</p>
  
  <h2>C</h2>
  
  <p><strong>Online Tutorials</strong><br>
  <a href="http://www.physics.drexel.edu/students/courses/Comp_Phys/General/C_basics/" rel="nofollow noreferrer">This</a> 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.<br>
  <strong>Books</strong><br>
  <a href="https://rads.stackoverflow.com/amzn/click/com/0131103628" rel="nofollow noreferrer" rel="nofollow noreferrer">K&amp;R C</a> - a classic for sure.  It might be argued that all programmers should read it.<br>
  <a href="https://rads.stackoverflow.com/amzn/click/com/0672326965" rel="nofollow noreferrer" rel="nofollow noreferrer">C Primer Plus</a> - Suggested by Imran as being the ultimate C book for beginning programmers.<br>
  <a href="https://rads.stackoverflow.com/amzn/click/com/013089592X" rel="nofollow noreferrer" rel="nofollow noreferrer">C: A Reference Manual</a> - A great reference recommended by Patrick Lozzi.</p>
  
  <h2>C++</h2>
  
  <p><strong>Online Tutorials</strong><br>
  The tutorial on <a href="http://www.cplusplus.com/doc/tutorial/" rel="nofollow noreferrer">cplusplus.com</a> seems to be the most complete.  I found another tutorial <a href="http://www.intap.net/~drw/cpp/" rel="nofollow noreferrer">here</a> but it doesn't include topics like polymorphism, which I believe is essential.  If you are coming from C, <a href="http://www.4p8.com/eric.brasseur/cppcen.html" rel="nofollow noreferrer">this</a> tutorial might be the best for you.  </p>
  
  <p>Another useful tutorial, <a href="http://www.icce.rug.nl/documents/cplusplus/" rel="nofollow noreferrer">C++ Annotation</a>. In Ubuntu family you can get the ebook on multiple format(pdf, txt, Postscript, and LaTex) by installing <code>c++-annotation</code> package from Synaptic(installed package can be found in <code>/usr/share/doc/c++-annotation/</code>.</p>
  
  <p><strong>Books</strong><br>
  <a href="https://rads.stackoverflow.com/amzn/click/com/0201700735" rel="nofollow noreferrer" rel="nofollow noreferrer">The C++ Programming Language</a> - crucial for any C++ programmer.<br>
  <a href="https://rads.stackoverflow.com/amzn/click/com/0672326973" rel="nofollow noreferrer" rel="nofollow noreferrer">C++ Primer Plus</a> - 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.<br>
  <a href="https://rads.stackoverflow.com/amzn/click/com/0321334876" rel="nofollow noreferrer" rel="nofollow noreferrer">Effective C++</a> - Ways to improve your C++ programs.<br>
  <a href="https://rads.stackoverflow.com/amzn/click/com/020163371X" rel="nofollow noreferrer" rel="nofollow noreferrer">More Effective C++</a> - Continuation of Effective C++.<br>
  <a href="https://rads.stackoverflow.com/amzn/click/com/0201749629" rel="nofollow noreferrer" rel="nofollow noreferrer">Effective STL</a> - Ways to improve your use of the STL. <br>
  <a href="https://rads.stackoverflow.com/amzn/click/com/0139798099" rel="nofollow noreferrer" rel="nofollow noreferrer">Thinking in C++</a> - Great book, both volumes. Written by Bruce Eckel and Chuck Ellison. <br>
  <a href="https://rads.stackoverflow.com/amzn/click/com/0321543726" rel="nofollow noreferrer" rel="nofollow noreferrer">Programming:  Principles and Practice Using C++</a> - Stroustrup's introduction to C++.
  <br>
  <a href="https://rads.stackoverflow.com/amzn/click/com/020170353X" rel="nofollow noreferrer" rel="nofollow noreferrer">Accelerated C++</a> - 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.</p>
  
  <h2>Forth</h2>
  
  <p><strong>Books</strong><br>
  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.</p>
  
  <h2>Java</h2>
  
  <p><strong>Online Tutorials</strong><br>
  <a href="http://java.sun.com/docs/books/tutorial/" rel="nofollow noreferrer">Sun's Java Tutorials</a> - An official tutorial that seems thourough, but I am not a java expert.  You guys know of any better ones?<br>
  <strong>Books</strong><br>
  <a href="https://rads.stackoverflow.com/amzn/click/com/0596009208" rel="nofollow noreferrer" rel="nofollow noreferrer">Head First Java</a> - Recommended as a great introductory text by Patrick Lozzi.<br>
  <a href="https://rads.stackoverflow.com/amzn/click/com/0321356683" rel="nofollow noreferrer" rel="nofollow noreferrer">Effective Java</a> - Recommended by pek as a great intermediate text.<br>
  <a href="https://rads.stackoverflow.com/amzn/click/com/0132354764" rel="nofollow noreferrer" rel="nofollow noreferrer">Core Java Volume 1</a> and <a href="https://rads.stackoverflow.com/amzn/click/com/0132354799" rel="nofollow noreferrer" rel="nofollow noreferrer">Core Java Volume 2</a> - Suggested by FreeMemory as some of the best java references available.<br>
  <a href="https://rads.stackoverflow.com/amzn/click/com/0321349601" rel="nofollow noreferrer" rel="nofollow noreferrer">Java Concurrency in Practice</a> - Recommended by MDC as great resource for concurrent programming in Java.</p>
  
  <p><a href="https://rads.stackoverflow.com/amzn/click/com/0321349806" rel="nofollow noreferrer" rel="nofollow noreferrer">The Java Programing Language</a></p>
  
  <h2>Python</h2>
  
  <p><strong>Online Tutorials</strong><br>
  <a href="http://www.python.org/doc/" rel="nofollow noreferrer">Python.org</a> - The online documentation for this language is pretty good.  If you know of any better let me know.<br>
  <a href="http://diveintopython3.ep.io/" rel="nofollow noreferrer">Dive Into Python</a> - Suggested by Nickola.  Seems to be a python book online.</p>
  
  <h2>Perl</h2>
  
  <p><strong>Online Tutorials</strong><br>
  <a href="http://perldoc.perl.org/perl.html" rel="nofollow noreferrer">perldoc perl</a> - This is how I personally got started with the language, and I don't think you will be able to beat it.<br>
  <strong>Books</strong><br>
  <a href="http://oreilly.com/catalog/9780596520106/" rel="nofollow noreferrer">Learning Perl</a> - a great way to introduce yourself to the language.<br>
  <a href="http://oreilly.com/catalog/9780596000271/" rel="nofollow noreferrer">Programming Perl</a> - greatly referred to as the Perl Bible.  Essential reference for any serious perl programmer.<br>
  <a href="http://oreilly.com/catalog/9780596003135/" rel="nofollow noreferrer">Perl Cookbook</a> - A great book that has solutions to many common problems.<br>
  <a href="http://onyxneon.com/books/modern_perl/" rel="nofollow noreferrer">Modern Perl Programming</a> - newly released, contains the latest wisdom on modern techniques and tools, including Moose and DBIx::Class.</p>
  
  <h2>Ruby</h2>
  
  <p><strong>Online Tutorials</strong><br>
  Adam Mika suggested <a href="http://poignantguide.net/ruby/" rel="nofollow noreferrer">Why's (Poignant) Guide to Ruby</a> but after taking a look at it, I don't know if it is for everyone.
  Found <a href="http://www.digitalmediaminute.com/article/1816/top-ruby-on-rails-tutorials" rel="nofollow noreferrer">this</a> site which seems to offer several tutorials for Ruby on Rails.<br>
  <strong>Books</strong><br>
  <a href="https://rads.stackoverflow.com/amzn/click/com/0974514055" rel="nofollow noreferrer" rel="nofollow noreferrer">Programming Ruby</a> - suggested as a great reference for all things ruby.</p>
  
  <h2>Visual Basic</h2>
  
  <p><strong>Online Tutorials</strong><br>
  Found <a href="http://www.vb6.us/" rel="nofollow noreferrer">this</a> site which seems to devote itself to visual basic tutorials.  Not sure how good they are though.</p>
  
  <h2>PHP</h2>
  
  <p><strong>Online Tutorials</strong><br>
  <a href="http://us3.php.net/tut.php" rel="nofollow noreferrer">The main PHP site</a> - A simple tutorial that allows user comments for each page, which I really like.
  <a href="http://www.phpfreaks.com/tutorials" rel="nofollow noreferrer">PHPFreaks Tutorials</a> - Various tutorials of different difficulty lengths.<br>
  <a href="http://tut.php-quake.net/en/" rel="nofollow noreferrer">Quakenet/PHP tutorials</a> - PHP tutorial that will guide you from ground up.</p>
  
  <h2>JavaScript</h2>
  
  <p><strong>Online Tutorials</strong><br>
  Found a decent tutorial <a href="http://www.webteacher.com/javascript/" rel="nofollow noreferrer">here</a> geared toward non-programmers.  Found another more advanced one <a href="http://www.tizag.com/javascriptT/" rel="nofollow noreferrer">here</a>.  Nickolay suggested <a href="http://developer.mozilla.org/en/A_re-introduction_to_JavaScript" rel="nofollow noreferrer">A reintroduction to javascript</a> as a good read here.</p>
  
  <p><strong>Books</strong><br>
  <a href="http://headfirstlabs.com/books/hfjs/" rel="nofollow noreferrer">Head first JavaScript</a><br>
  <a href="http://oreilly.com/catalog/9780596517748/" rel="nofollow noreferrer">JavaScript: The Good Parts</a> (with a <a href="http://www.youtube.com/watch?v=hQVTIJBZook" rel="nofollow noreferrer">Google Tech Talk video</a> by the author)  </p>
  
  <h2>C#</h2>
  
  <p><strong>Online Tutorials</strong><br>
  <a href="http://www.csharp-station.com/Tutorial.aspx" rel="nofollow noreferrer">C# Station Tutorial</a> - Seems to be a decent tutorial that I dug up, but I am not a C# guy.<br>
  <a href="http://www.ecma-international.org/publications/standards/Ecma-334.htm" rel="nofollow noreferrer">C# Language Specification</a> - Suggested by tamberg.  Not really a tutorial, but a great reference on all the elements of C#<br>
  <strong>Books</strong><br>
  <a href="https://rads.stackoverflow.com/amzn/click/com/032125290X" rel="nofollow noreferrer" rel="nofollow noreferrer">C# to the point</a> - suggested by tamberg as a short text that explains the language in amazing depth</p>
  
  <h2>ocaml</h2>
  
  <p><strong>Books</strong><br>
  nlucaroni suggested the following:<br>
  <a href="http://www.ffconsultancy.com/products/ocaml_for_scientists/?so" rel="nofollow noreferrer">OCaml for Scientists</a>
  <a href="http://www.seas.upenn.edu/~cis500/cis500-f02/resources/ocaml-intro.pdf" rel="nofollow noreferrer">Introduction to ocaml</a><br>
  <a href="http://caml.inria.fr/pub/docs/u3-ocaml/index.html" rel="nofollow noreferrer">Using Understand and unraveling ocaml: practice to theory and vice versa</a><br>
  <a href="http://caml.inria.fr/pub/docs/oreilly-book/" rel="nofollow noreferrer">Developing Applications using Ocaml - O'Reilly</a><br>
  <a href="http://caml.inria.fr/pub/docs/manual-ocaml/index.html" rel="nofollow noreferrer">The Objective Caml System - Official Manua</a>  </p>
  
  <h2>Haskell</h2>
  
  <p><strong>Online Tutorials</strong><br>
  nlucaroni suggested the following:<br>
  <a href="http://www-128.ibm.com/developerworks/java/library/j-cb07186.html?ca=dgr-lnxw07Haskell" rel="nofollow noreferrer">Explore functional programming with Haskell</a><br>
  <strong>Books</strong><br>
  <a href="http://book.realworldhaskell.org/" rel="nofollow noreferrer">Real World Haskell</a><br>
  <a href="http://www.cs.mdx.ac.uk/staffpages/dat/sblp1.pdf" rel="nofollow noreferrer">Total Functional Programming</a>  </p>
  
  <h2>LISP/Scheme</h2>
  
  <p><strong>Books</strong><br>
  wfarr suggested the following:<br>
  <a href="https://rads.stackoverflow.com/amzn/click/com/0262560992" rel="nofollow noreferrer" rel="nofollow noreferrer">The Little Schemer</a> - Introduction to Scheme and functional programming in general<br>
  <a href="https://rads.stackoverflow.com/amzn/click/com/026256100X" rel="nofollow noreferrer" rel="nofollow noreferrer">The Seasoned Schemer</a> - Followup to Little Schemer.<br>
  <a href="https://rads.stackoverflow.com/amzn/click/com/0262011530" rel="nofollow noreferrer" rel="nofollow noreferrer">Structure and Interpretation of Computer Programs</a> - The definitive book on Lisp (also <a href="http://mitpress.mit.edu/sicp/" rel="nofollow noreferrer">available online</a>).<br>
  <a href="http://www.gigamonkeys.com/book/" rel="nofollow noreferrer">Practical Common Lisp</a> - A good introduction to Lisp with several examples of practical use.<br>
  <a href="https://rads.stackoverflow.com/amzn/click/com/0130305529" rel="nofollow noreferrer" rel="nofollow noreferrer">On Lisp</a> - Advanced Topics in Lisp<br>
  <a href="http://www.htdp.org/" rel="nofollow noreferrer">How to Design Programs</a> - An Introduction to Computing and Programming<br>
  <a href="https://rads.stackoverflow.com/amzn/click/com/1558601910" rel="nofollow noreferrer" rel="nofollow noreferrer">Paradigms of Artificial Intelligence Programming:  Case Studies in Common Lisp</a> - an approach to high quality Lisp programming</p>
  
  <p>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.</p>