Verbose Logging

software development with some really amazing hair

T + G I F R

Please Learn C

· · Posted in Editorial
Tagged with

A lot of CPU cycles were spent dealing with blog posts surrounding the whole iPhone SDK change. One by Zed Shaw was interesting because it addressed a different part of the problem.

The point he makes is that there are people who claim to be coders out there when all they do is write ruby code. Ruby, python, C#, perl, or whatever are all good and fun. They are useful, powerful languages, each with their strong and weak points.

The problem comes when people come out of high school, pick up ruby and after a few years think they're hot shit because they built a framework more than 10 people like. Good for you. Go debug a real programming problem would you please?

I really try not to be biased, but of course I am. The first language I learned was C (okay really it was C, but it was super basic C using the C iostream stuff). We learned about pointers, memory, and all that good stuff.

Throughout the rest of my school career (including work terms) I covered (in one form or another) Java, perl, ruby, C++ (Borland and Visual varieties), VBScript, HTML/CSS (if you want to count that), SQL, Javascript, shell scripting, MATLAB, C#, and assembly. I might have missed a couple but you get the idea.

I can write this blog in ruby, and I can understand what the VM is doing by reading its code.1 I can understand what Joe and Aman are talking about on Time to Bleed.

By learning (or preferably starting with) C, you understand. It makes you look at what you're writing differently. It helps you understand the implications of things you are doing, and it makes you appreciate all the nice things a language like ruby does for you. By understanding C, you hopefully have a better understanding of programming and the stack (source code down to the device), and could therefore produce a better functioning application.

By forcing developers to learn a language that doesn't hold your hand, the capable developers will continue to produce quality applications. The determined developers will want to build applications, so they'll learn the language, benefitting themselves by learning valuable programming skills, and benefitting everybody else by increasing the number of smart, capable developers in the world.2

Please go learn C if you haven't. You'll thank me later.


  1. I had a bug in my blog before I switched to 1.9 where the entire VM would segfault. After some reading (code and bug reports) and some valgrind and gdb work, the problem was uncovered as being a bug in the VM itself.

  2. Not to say they weren't capable or smart in their field before, but if I had to choose one of two people to hire for a ruby job, and one of them knows C, with all else being equal, I'd choose the developer who understands C.