Sunday, April 30, 2006

Computer Science vs. Computer Programming

Although some specialists may distinguish computer science and computer programming, most people think of these two areas as one and the same. They are tragically mistaken. Computer science is as different from computer programming as physics is from bridge building. In fact, this analogy holds completely. Computer programming is the engineering of computer science. It is the application of the ideas computer science explores. Let me give a concrete example. Any computer scientist will be able to tell you how to reverse a linked list, balance a binary tree, or write a huffman encoding algorithm. Programmers quickly forget how to balance a binary tree, because they don't need to. They have convenient methods that they can find in the MSDN library that will do this all for them. Computer programmers don't really need to know much about data structures or computers in general because they don't need to. All computer programmers need to know is how to find and use the methods they need in order to get things done. They need to find out which algorithms they need to apply, but don't need to understand them. Because of this, the kind of programming most people do doesn't actually require much thought. Rather, it requires specialized knowledge in highly specific areas. I find that incredibly dissapointing.

No comments: