Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!caip!pyrnj!mirror!cca!g-rh From: g-rh@cca.UUCP (Richard Harter) Newsgroups: net.cse Subject: Re: Role of computer science (was !Tom) Message-ID: <10331@cca.UUCP> Date: Tue, 30-Sep-86 22:00:12 EDT Article-I.D.: cca.10331 Posted: Tue Sep 30 22:00:12 1986 Date-Received: Thu, 2-Oct-86 21:32:02 EDT References: <699@sdcc12.UUCP> <10202@cca.UUCP> Reply-To: g-rh@cca.UUCP (Richard Harter) Organization: Computer Corp. of America, Cambridge Lines: 90 Tom Keller > > Richard Harter points out that the original work done in the area of >computer methodology was not, in fact, done by "Computer Scientists" but >by the early programmers. True enough. MY error. > > Many of the early programmers were, however, very much theorists in >Mathematics. Some of them were Engineers. > > I believe that my separation of Computer Science and Programming into two >distinct, if slightly over-lapped disciplines remains essentially valid. I >have been informed that this identifies me as an "inflexible ego maniac." >Oh well. > Well, this inflexible ego maniac agrees with you. I would go further and say that there three distinct disciplines, based on the issue of where one's professional loyalties lay: (a) The applications programmer whose loyalties lay with the application. (b) The professional programmer whose loyalties lay with programming itself. (c) The computer scientist whose loyalties lay with computer science. The difference between the three lies in where their focus of interest lies. Since I wear, or have worn, all three hats, let me give some examples. As an applications programmer working for an employer on a large project I identified with the subject area (Geophysics in one case) and the needs of the employer. The focus of my efforts was on certain specific problems in applied geophysics; numerical analysis and computer programming were simply tools to use. The objective was to meaningfully process data. As a professional programmer (a person making a living writing software) my focus was on improving my skills -- learning more about how to write programs efficiently and effectively. Now improvement in my skills as a programmer was of value in my role as an applications programmer, but the objective was different. This makes for a conflict. For example, as an applications programmer I might well say "At this point I need such and such algorithm; let me look it up in a book, code it, and get on with it." Unless efficiency were an overwhelming concern, I wouldn't even be terribly interested in doing a super whiz bang job of it -- the algorithm and the code implementing it are simply tools to use for the real job. As a professional programmer whose interest lies in programming per se, my focus would be on the algorithm and the code that implements it their own right. As a computer scientist (a hat I will only lay modest claims to) my focus is still different -- I am asking things like, "How do programs get written? What has to be done to write programs? What kind of programs can be written?". I am looking for general principles. This is, in turn, a generalization and refocusing of my concerns as a professional programmer. To put it simple terms: (a) The application programmer looks up a sort algorithm in a book and writes it. (b) The professional programmer writes the best possible sort routine she or he can. (c) The computer scientist writes papers about sort algorithms. One of the things that they don't say much about in colleges is this issue of dealing with divided loyalties. The beginner, fresh out on the job market, is learning all sorts of things -- he or she is learning about what the project they are working on and practical programming all at the same time. The time comes, however, when you have to choose what you are -- and you will probably find that you are terribly constrained by where you are. In fact, academia tends to do the student a disservice, by teaching the values of academia as the only relevant values. In fact, academia has strange notions about what is important for programmers. Most programmers need not know anything about writing compilers, for example. On the other hand, they do need to know how to be a quick study -- how to learn enough about a specialized topic so that they can work with experts in the topic. -- Richard Harter, SMDS Inc. [Disclaimers not permitted by company policy.] For Cheryl :-)