Fooling Around

hey there,

zombiecalypse wrote an article about “How to Learn a New Language” earlier. He brought up the idea of “Fooling Around” and although I haven’t learned as much languages as zombiecalypse did, I’d like to write about how I do fool around with a new language.

First of all when you start learning and fooling don’t try to understand everything because it’s not necessary you do. There is one rule which is perfect for the start and also for every object-oriented progamming language: I don’t care how it works as long as it works! To go even a step further the receiver should care but not the sender, that’s you. Therefore fool around and don’t care how it works just try to make a little program. When you’re done go on and make another more complex program and probably start to look a few things up.

There is only one important thing left to say. Just do something get your fingers up, write code or do something you wanted to do for a long time but just don’t be lazy. You can’t learn a language when you don’t start to do something!  Sometimes it’s hard to start but let me tell you one thing, it’s definitively worth it.

By the way, I made a little twitpoll a few days ago to see about which topic you would like to read an article in the future. As a result of this poll I’m going to write about “Take a Day Off!“. You’re opinion is very important for me so leave comments, vote in the twitpolls or just send me an email.

cheers d3orn

    • Jonas
    • September 9th, 2010 7:44pm

    I can’t agree with you in this point: “I don’t care how it works as long as it works!”

    If you learn a new language, you shoudn’t try to understand everything, that’s right. But you should understand the principles of the language, or at least the principles of the paradigms, the language supports. Of course, you can write a Java code without object oriented design. But that’s most likely waste of time and you’ll never learn what objects really are! You can write a C code, compile it with the C++ compiler, and say that you’re learning a new language – but that’s just absurd. You could learn a lot of languages like that, but you’ll never master one, I think.

    With your concept, you can learn the syntax of a language, that’s true. But the syntax is mostly the smallest and most easy part to learn! (As long as you aren’t programming in an esoteric language of course…)

    You’d like to go for a beer sometime?

    • zombiecalypse
    • September 13th, 2010 10:11pm

    “I don’t care how it works as long as it works” doesn’t mean that you shouldn’t learn the idioms and paradigms of the language as long as you can work without them. It is more about the stuff behind the scenes.

    A good example is Python: Every object is an instance of a class, and classes are objects, and you can use metaclasses that initialize a class object. But you don’t need that to define 99.99% of the classes you’ll ever encounter.
    So you don’t have to care, how class creation works.
    At first you don’t need to know, that the for-loop takes an iterable and not simply a sequence or what an iterable even is (hint: it is not a sequence).
    So until you run into a problem, that uses iterables other than lists, don’t care how for-loops really work, but be open to find out and read some example code, if you’re facing difficulties.

    But yes, you won’t master a language just by fooling around. But that’s not the point: You will most certainly run into problems which can not be solved by brute force and so you take a look at a reference, which will then slowly introduce you to the more difficult parts. And your natural curiosity will lead your way from there. It took me quite long to find a problem, that had an application for metaclasses, but I wanted to find out, how I could work with it. But that’s a different topic.

    One important part, that wasn’t directly mentioned in this article is, that you have to know the paradigms and the fortes of the language you are learning before. So you’d be prepared to write object oriented if you fool around with Java or ready to wrap your head around higher order functions, if you try Clojure – and be prepared for hell, if you use Haskell. So compiling C with a C++ compiler doesn’t use the forte of C++, which, if anything, are classes.

    Maybe you have a point, that it should be mentioned, that you are supposed to find out, what the canonical way to solve a problem in your language is – defining an datatype in Haskell, creating smart objects in C++,… – to prevent porting the style of your old language to your new one.

  1. No trackbacks yet.