Monday, June 9, 2008

What's in a Language?

I read several technology blogs which usually have very interesting discussions on them. Back in May there were several postings discussing the value of knowing C. I think this came about because Jeff Atwood admitted that he didn't know C and didn't feel the need to learn it. Joel Splosky disagreed and several others chimed in as well. Here are a few different postings on the topic

I found Eric Sink’s post entitled "C and Morse Code" one of the best. He tackles the highly charged debate by using historic requirements for Ham Radio operators to how “real programmers” have to know C. He admits some of this bias falls into the “I had to learn C so everyone should have to” category.

I am somewhat neutral on this topic. I did a lot of Visual Basic programming (Versions 4, 5, 6 and VB.NET) and very little else. When I started at Extended Systems I learned Delphi and I have taken several classes in Java over the years. I did take some C and C++ classes in college but I have never done any really serious development in C.

After talking to some recent CS graduates I have found that they are not learning C. Many of the CS curriculums are using open source languages such as Java, Ruby, Python and Perl for their classes. The courses vary greatly by school of course but the general trend seems to be moving away from C.

Some C arguements:

  1. There are great benefits to learning C. Many of the compilers for other high level languages are written using C as well as operating systems and many server products.
  2. Learning C forces you to pay attention to many details that other compilers manage automatically. A good understanding of what is going on “under the covers” provides real insight into how the code is working and generally results in better code.
  3. Many languages have a basis in C (i.e. Java, Delphi, C#) so learning the “root” language is an important self-development exercise.

For my part I am going to take the time to revisit C. I will probably dig up some old college textbooks and probably spring for a new book on C or C++ in the near future.

The bottom line is programing languages are tools and you should select the best one for the job, C is not known for it’s RAD or web capabilities. I would recommend Delphi or Visual Studio for user based applications. What development languages do you use? Does a “real programmer” or “professional developer” need to have a C background?

1 comment:

Doug Johnson said...

I suppose you could be a real programmer without knowing C, but my programming took a huge leap forward when I learned C.
All of a sudden those niggling details about why things worked the way they did in FoxBase (yeah, I'm THAT old) made sense.
And you learn more about memory and pointers in C than just about anywhere else, which helps in all those other languages that "handle it for you".
I guess it is similar to the question, can you be an excellent automobile driver if you don't know much about how your car works. If you are only going to commute to work, probably. If you are going to race on the weekends, you'd best know what's going on "under the hood".