I feel this is one area of my computer science education that is rather weak. The years I spent in schooling learning C, C++, or another derivative, either my teachers / professors really didn’t teach it well, or were only around of half a semester. Truly, computer science teachers when I was in school were the “professor of defense against the dark arts,” as they were always changing, even mid semester.
Also, I’ve never had a very strong need to learn C. Almost all of my work is web based, and so traditional LAMP skills were more than enough. However, things are changing in the industry, and there are a few reasons why I want to polish up on my C and re-learn it.
First off, there are a lot of new, cool technologies coming out for web development. The whole NoSQL concept and the different solutions for it are being written in C based languages. Even after all these years, many are being written in C. Now, I doubt I would be willing to write my own NoSQL solution when there are great ones out there, but I would love to contribute bug fixes, or be able to read and understand on a lower level how they work.
Second, I’ve been cautious or nervous compiling my own binaries on Linux. Almost always, if a new PHP release came out, I would want to wait for my distribution to release and update. Sometimes, that can be months, and even years. By learning C and learning more how it works, I hope to be able to compile my own binaries when needed, and not feel so hopeless if something breaks.
Third, PHP is written in C. There have been times where I’ve wondered exactly how a specific function or worked, or have found a bug I would love to submit a fix for. Its amazing how large the PHP community is, and yet how few contribute to help. I would love to become a code contributer, and learning C is a prerequisite definitely. Also, with web development and PHP, sometimes certain tasks could be performed much quicker when compiled, such as the score generation system for Dating DNA. It would be great if I could generate millions of compatibility scores at a C level, instead of just in PHP.
Fourth, is iPhone development is not going anywhere but up. We pay the bills and more with our iPhone sales for Dating DNA and Clipish, and having the option to do some iPhone Development when needed would be great. Granted, iPhone Development is done in Obj-C 2.0, but when I first tried iPhone development, almost every single one of my problems were from a fundamental lack of understanding on how Obj-C 2.0 worked. A better of understanding of C would help me greatly in this.
Firth, it would just be good to learn. Even if I don’t use it a lot, learning the programming language that is used by so many of my tools would be great. So, along side my posts on Redis, PHP, and web service development, you might be seeing on beginner information on Learning C.