Every Software Engineer should learn C

The C programming language is the mother of most languages we use today. The most popular programming language in the entire world. The language was designed in a day when computers were slow, and memory was hard to get. It was designed for single pass compiling, making it's compilation process light. C is virtually a literal representation of what your computer is doing, in a human readable form. Just a few machine instructions are required for each of the core level elements, and this was the design goal. Yet C is far enough away from your machine that you don't have to take great detail into knowing which processor you are running on.

Furthermore, despite its low-level nature, the language was designed to enable (and to encourage) portable programming. A standards compliant and portably written C program can therefore be compiled for a very wide variety of computers. One of the great things about C, when you compare it to languages like Java, C#, and others is throughout its life and development C has never had business or marketing interests governing it's design or development. C was designed specifically for the use of the engineers who designed it.

C is perhaps the best balance of expressiveness and efficiency that has ever been seen in programming languages. C is so close to the machine that each statement and expression can literally be easily translated into register calls directly, but abstract enough to be sane safe and to allow timely creation of quality software. Meanwhile, it's no where near as abstract or far from the computer as most modern programming environments. It's even low level enough to use assembly in line.

Having spent many years developing software in very high level languages and abstract environments such as Perl, Python, Java, Pike, Ruby, I have come to the conclusion that it is literally impossible to write truly efficient code if you do not know at very least C. If you do not understand exactly what happens in order to make a copy of a string, or compare two strings for equality, you will make implementation decisions based entirely on superstition. If you do not understand what your computer is actually doing, you will never really be a good engineer. And C gives you this knowledge without being painful, allowing you to actually take on a decent size project so you can really get an intimite understanding of the language.

There isn't a more spot-on C book than The K & R Book more formally known as The C Programming Language by Brian Kernighan and Dennis Ritchie. Brian Kernighan and Dennis Ritchie were employees at Bell Labs (in fact sort of still are) which is where C was originally designed by Dennis Ritchie. These guys were there when it all started, I couldn't suggest another book for learning C.

Comment by aa-Dobson6086@… on Wed Sep 6 01:46:26 2006

cool site

Comment by scott on Fri Sep 8 16:55:09 2006

Thanks

Error: Failed to load processor AddComment
No macro or processor named 'AddComment' found