This past week I have spent some time writing, scrapping, rewriting etc. something in Python to get my head around both using classes and python in general.
Tonight I have been thinking about this in comparison with my experiences with C so far.
A lot of websites on the internet mention that they think Python is a good first language, a good teaching language and so on. I don’t know that I entirely agree, as basically pretty much a beginner to programming, I think C is much better to start with, or was for me and probably would be for people with my personality at least.
I’ll explain why, and also why people with a slightly different personality might find the opposite. What I like a lot about C is how much it has taught me about how things work. How much insight, this short time with it, it has given me into exactly what is happening. Every little thing I had to figure out how to do in C showed me something new about what happens when my computer does that thing. All the stuff with pointers, memory allocation etc, I loved that precisely because I had never thought about it before, I had never thought exactly how programs deal with memory or how they know where information is or pass references to memory addresses or anything like that. Now that I have thought about it seems criminal to me that I never thought about it before then, but I hadn’t. I think most people who have never done this sort of thing before would similarly not have thought about those kind of really basic things, and C forces you to think about it.
Python on the other hand, does not, everything I’ve had to find out how to do has been a matter of finding out which module to include and what words to use to get the thing to magically do what I want. OK, I know it is possible to look deeper and find out what is going on, but the truth is, when I am in the middle of trying to get something to work I am not gonna get distracted by looking into what is going on at a deeper level. And yet, despite that, the reality is I am a lot more interested in “what is going on” than making things work.
And this is why I think it in some senses comes down to personality. It is also why I think I never really got into computers properly until I tried Linux. Because someone whose primary interest is in creating things, they might well, even without discovering Linux, find themselves driven to create things and get into that, but me, I never felt a drive to create things – oh I enjoy it, its always nice to finish something and have something to show for yourself – but what really excites me is finding out how things work. And when I had windows, how things work was kind of obscured to me in many ways, whereas, the most glorious thing about Linux is that, its transparent, you can look into everything about it and have a real hope of one day understanding it – or at least, if you can’t it is because of your own limitations and not because anything is hidden from you. That is so cool.
I can completely see the advantage of programming languages which do a lot of more low level stuff behind the scenes, and I think one day I might prefer that too, when I know a lot more, when things that for me now are like “wow, so that is what is going on” have turned into “ugh, I can’t believe I have to do this EVERY TIME” then you can bet I will be singing the praises of Python, I can see that day off in the distance, but for now I like C better, because I don’t know the basics, because I don’t know what is going on and its all magic to me, and anything that can make that magic into something more comprehensible, anything that beats me over the head with what it is actually doing, is something that I want and need right now.
In some ways I think it comes down to a lack of imagination. I don’t imagine what I don’t know until it sneaks up on me and laughs mockingly, and at the moment I don’t know most anything. Yet I find it so delightful to find out new things. I think for me there is no greater pleasure than that moment when things fall into place and I actually finally understand something.
I literally live just for those moments.