Sometimes I wander around or take a shower and then it just strikes me. Something becomes absolutely clear in my mind and I begin to understand an idea or something I thought about for a long time.
It happened again this morning when I was walking from the bus stop to the office. I thought about which new programming language I want to learn next year (Part of Tip 8 of “The Pragmatic Programmer” book) and about learning in general. I think I found the value of learning for myself.
I want to learn a functional programming language next year, because I haven’t learned one yet and some aspects of functional programming find their way into “everyday programming languages” (not meaning that there aren’t functional programming languages which can’t be used for “everyday tasks”). Closures, for example. I love blocks in Ruby! Unfortunately closures will find their way into Java in Java 7 at the earliest. There isn’t even a JSR yet. It’s on the wish list . But I’m loosing track.
So I looked at Haskell which is a purely functional language. Then I found out that it has syntactically relevant white space, which is… let’s say something you have to get used to (and I never really liked in Python ). Another point which I found why not to choose Haskell was: There are no “real” applications out there written in Haskell. There are of course a lot of applications written in Haskell but they seem to be some fun or research projects and no “End user” application among them.
So why learn something which I wouldn’t be able to use “in real life”. Alternatives I have considered are OCaml which is used in some “real” applications put it’s not a purely functional language and Erlang which seems to be focused on concurrency and actually was created in a “real life” environment. There’s even a Web framework for Erlang available now: ErlyWeb .
Then I thought: OK. So I want to learn something about functional programming. Haskell is a purely functional Language so why should I care whether I can use the language for anything useful at all? The answer is: I shouldn’t care! The learning process itself is the value I get out of it (and of course the functional way of thinking of programs)! And that’s the main goal of this whole “learning a new language” experience, isn’t it?
That could be the whole point about learning in general. Of course it matters what I learn (if I want to use the knowledge or skills I learned). But if I learned nothing useful at all, I still learned something about learning. That may sound a bit self referential but I think that’s what excites me about learning new things. That’s a good motivation for learning. The process of learning something new is so interesting that it doesn’t really matter what I learn.
Related Posts
- Stop writing tutorials - start writing Vagrantfiles or Dockerfiles - Make use of modern tools to make tutorials understandable as well as executable
- The missing piece: Operating Systems for web scale Cloud Apps - Operating systems that are optimised for cloud applications regarding configuration support and the distributed nature of apps are not there yet.
- There will be no reliable cloud (part 3) - How I stopped worrying and love the cloud