By CodeJustin
via ddj.com
Published: Jul 08 2009 / 08:37
A few years ago, I studied algorithms and complexity. The field is wonderfully clean, with each concept clearly defined, and each result building on earlier proofs. When you learn a fact in this area, you can take it to the bank, since mathematics would have to be inconsistent to overturn what you just learned. Even the imperfect results, such as approximation and probabilistic algorithms, have rigorous analyses about their imperfections. Other disciplines of computer science, such as network topology and cryptography also enjoy similar satisfying status.
Now I work on software engineering, and this area is maddeningly slippery. No concept is precisely defined. Results are qualified with "usually" or "in general". Today's research may, or may not, help tomorrow's work. New approaches often overturn earlier methods, with the new approaches burning brightly for a while and then falling out of fashion as their limitations emerge. We believed that structured programming was the answer. Then we put faith in fourth-generation languages, then object-oriented methods, then extreme programming, and now maybe open source.



Comments
AllureFX replied ago:
I don't agree with the basic premise that CS is more precise: IMO CS just makes things appear precise. Algorithm x is polynomial time vs. algorithm y that's exponential. Precise? Not really, x could be t**1,000,000 for all we know. You can't hand-wave like that when you need to actually build something.
Voters For This Link (15)
Voters Against This Link (1)