Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Let's face it. When you want to learn something completely new, be it mathematics or foreign languages, it's easiest to learn when you get real world scenarios in front of you, with theory applied. For example, trigonometry can be extremely interesting when applied to creation of 2D platform games. Norwegian can be really interesting to learn if you live in Norway.

When I try to look at a new programming language, I always find these steps the hardest:

  1. What tools do I need to compile and how do I do it
  2. Introduction-step: Why is this programming language so cool? Where and how is it used? (The step I am looking for, real-world scenarios)

The rest, deep diving into the language, pure theory and such, is often much easier if you have completed step 1 and 2. Because now you know what it's all about, and can just read the specification when you need to.

What I ask is, do you have any recommendations for places I can find such material for programming languages? Be it websites or companies selling books in this style, I'm interested. Also, I am interested in all languages. (If I had found a "real-world usage" explained for even INTERCAL, I would be interested).

In some other thread here, I found a book called "Seven Languages in Seven Weeks". This is kind of what I am looking for, but I believe there must be "more like this".

share|improve this question

closed as off-topic by Thomas Owens Jan 6 at 15:49

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions asking us to recommend a tool, library or favorite off-site resource are off-topic for Programmers as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it." – Thomas Owens
If this question can be reworded to fit the rules in the help center, please edit the question.

I'd like to see this taught in some 2-5 day training camp. –  JeffO Nov 13 '10 at 23:29
I'd certainly say that CoffeeScript's homepage fits your criteria. –  user16764 Nov 10 '12 at 21:35

6 Answers 6

up vote 1 down vote accepted

I still struggle with Haskell a lot due to tool chain issues, it's something I think a lot of languages could take a stronger stance on. In terms of learning the actual language, there are two excellent sources: Real World Haskell and Write Yourself a Scheme in 48 Hours.

Real World Haskell is a good ground up introduction to the language, and tries to address some problems that newbies to a language hit like tool support and "yeah, but what can I actually do with it?"

Write Y... 48 Hours is great because it's a quick tutorial, but also because it shows how to build a larger application in a "Haskell-ish" way, which can be tricky to pick up just seeing short snippets. The tutorial starts with some basic concepts and shows how to use refactoring and gradual build-up to compose a larger program from the basic components of Haskell (functions and data types).

For tool support, the community is starting to get there but it's still not great. Leksah is basically the only dedicated Haskell IDE, and solutions for other editors/IDEs are sparse. Cabal is pretty good in filling the CPAN/Gems kind of role for Haskell. And thankfully, the major compiler (GHC) has a really great interactive mode that helps a lot with learning, debugging, and development. Double thankfully, you can get most of that already packaged into the Haskell Platform, which is great for a primarily Windows dev like myself.

share|improve this answer

I'd say you'd be better off learning how to use "real world" coding practices by actually studying them. There are lots of open source code bases you can download and investigate, combined with other more traditional learning tools such as books and online tutorials.

That way you'll learn the language itself and get to see how it is used in "real life".

share|improve this answer

After using the Adobe AIR version, which helped me land my first job in the industry as I was able to go in with some working applications, I really like the 'Create Modify Reuse' book series by Wrox.

I just find it a great shame there is only three of these books (Adobe AIR, PHP/MySQL and Python) as they take you from the basics though complex programs, learning all the way!

share|improve this answer

There are a series of books beginning with "The visual quick start guide" which can be just as helpful as they are harmful when it comes to helping people jump into a language and become proficient. There are many similar series with different hallmarks.

As long as you realize that the books aren't designed to help you write production code quickly, they are a great learning tool. Each book has an associated web site that has a library of samples to download, free tools to work with the language and a place for readers working through the exercises to interact.

Once you get proficient with the mechanics of a language, I strongly recommend downloading and studying an established, well reviewed open source code base. In fact, download several. It takes a while to build up a defensive style with any language.

Going to your spoken language example, I studied Spanish for several years in secondary school, then for another year in college. I thought that I was becoming rather fluent, at least conversationally. I was then put in a position where I had to speak Spanish with native speakers and found out just how far the mechanics of the language differed from its colloquial use.

Now, I'm learning another language, Tagalog (Filipino) by example. I'm watching local TV, I'm forcing myself to attempt to speak in Tagalog (first) conversationally whenever possible, and I'm getting quite good conversationally. The problem? In this language, I'm quite illiterate and fail to grasp its 'proper' constructs.

In short, you need both. Learning just by doing isn't sufficient, nor is learning without actually doing anything "real".

share|improve this answer

One problem with "real-world" examples is that the real world is complex. Even trivial solutions end up with several layers of abstraction. Thus explaining a concept and even a language becomes very confusing.

That said, I agree with the "cookbook" books, but would expand it to the Heads First series by O'Reily. Also every book in the pragmatic bookcase has been helpful (http://www.pragprog.com/titles). I especially liked the Agile Web Development with Rails and Pragmatic Thinking. The website also hosts example code that you can browse through and online forums about the books.

share|improve this answer

I like the "cookbook" type books because they're working examples solving real problems. Browse through them at the library or bookstore and see how the language flows when you read it for the first time.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.