Learn A New Language
coffii writes "I have just spent the last two days learning perl thanks to devshed. They have a set of eight well-written tutorials here and an introduction to OOP in perl. Why not learn a new language today, its a bit more productive than trying to get fp on ./ ;). I think I'll be going back for a dose of python next week." Even if you're not planning to specialize, this series look like a good way to at least get an overview of a few different languages. Can anyone recommend other interesting online tutorials, especially ones for unusual languages that might never find shelf space at the local MegaBooks?
- "Teach Yourself Scheme in Fixnum Days": A comprehensive tutorial
- "The Scheme Language": a shorter tutorial
- "Invitation to Scheme": yet another tutorial
- The Scheme Language Standard, "R5RS", is actually surprisingly readable, at about 50 pages. Here's a
PDF of R5RS, which is useful to have around if you're actually using the language.
- The Structure and Interpretation of Computer Programs (SICP) - a.k.a. the wizard book, a very worthwhile and enlightening book, used as an introductory text at MIT. It's available on the web, but it's not a light or quick read.
- How to Design Programs (HTDP) - a book that teach program design techniques, using Scheme.
Learning Scheme will teach you many programming language concepts which will help you understand other languages - even the ones you already know - better. The only downside is that you'll start to wish that other languages had some of Scheme's more powerful features. Perl, Python and Javascript have all adopted some Scheme-like features in the last several years, and after learning Scheme, you'll understand these features better (e.g. closures, continuations, first-class functions).Someone you trust is one of us.
The main problem with online tutorials is that they must be big enough to be noticed by enough people who can accurately assess the quality of the lessons. When I frequented CLPM, posters would every now and then pop in with their latest online tutorial pages. Unfortunately, a good portion of those tutorials were crap. They were bad because they quite often taught things that were flat out incorrect.
They were the equivalent of Perl for Dummies. Most taught things that had nothing to do with Perl (CGI, HTML) and when they taught Perl concepts the concepts would either be incorrect or presented in a manner that was confusing.
It's difficult as a newbie to discern good information from bad information. Take the case of C++ and Herbert Schildt. Schildt is perhaps the best author and teacher of C++. He can explain concepts clearly and interestingly. However, if you learn solely from his books, you'll never be able to use C++ as anything more than a "better C". Objects are merely enhanced structs. Use char arrays instead of strings. The list goes on.
If you are really interested in learning a new language, spend some time on the newsgroups and ask a couple of questions (Where's the FAQ? is a good question). That way you'll be able to get some opinions of books or online tutorials to better make your decision about which one to go with.
CLPM Santa