Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!ucbvax!decwrl!pyramid!ctnews!mitisft!gm From: gm@mitisft.Convergent.COM (G.M. Harding) Newsgroups: comp.software-eng Subject: Re: Texts on fundamentals of programming/computer science Keywords: reality, theory, engineering Message-ID: <601@mitisft.Convergent.COM> Date: 31 Mar 89 18:52:09 GMT Organization: Convergent Technologies, San Jose, CA Lines: 48 Phil Windley writes: > That said, I think you're missing the point. You seem to think that you > can be a good programmer without a funcdamental understanding of what's > going on. This is a serious mistake. I know it was a typo, Phil, but it was a very serendipitous one. Indeed, one cannot be a good programmer without a func()damental understanding of what's going on. More seriously, your main point is well taken. The best programmers I know are well-rounded human beings. I've always taken a certain amount of pride in the fact that I don't have a BS or MS; rather, I have a BA (history). One of the best software engineers I ever knew had a BA and an MA (music). We often miss the point of what an engineer really is. An engineer, in any discipline, is one whose job consists of translating theory into reality. Hence, first and foremost, engineers are people well-grounded in reality. In the software engineering discipline, that implies a deep, almost intuitive understanding of, or "feel" for, how computing machines work. Second only to being well-grounded in reality, however, software engineers ought to understand basic theories. This includes algorithm theory, of course, but in a broader sense it encompasses all branches of human knowledge: Science, mathematics, commerce, even the much- maligned liberal arts. This explains my conviction of long standing that C is the ideal engineering language. Most other languages place their emphasis on the latest algorithmic nicety to come out of academia. That's putting the cart before the horse. We are engineers, not academicians or theore- ticians. Our job is to MAKE IT WORK, and that means that our first emphasis must be on the machines that will do the work. Since, however, we must translate theories from all walks of life into computing models, it behooves us to understand theories of many different types, if only so that we can tell our clients when they're dreaming. GMH -- * * * * * * * * * * * * * * * * * * * All of your opinions are sound. * * That's all--just sound. * * * * * * * * * * * * * * * * * * *