Path: utzoo!mnetor!uunet!lll-winken!lll-lcc!ames!aurora!labrea!agate!ucbvax!hplabs!hp-pcd!uoregon!omepd!pcm From: pcm@iwarpo3.intel.com (Phil C. Miller) Newsgroups: comp.lang.misc Subject: Re: First Languages (yet again) Message-ID: <2809@omepd> Date: 8 Feb 88 20:05:37 GMT References: <4022@ames.arpa> <2400002@otter.HP.COM> <932@its63b.ed.ac.uk> <2781@omepd> <3730@megaron.arizona.edu> Sender: news@omepd Reply-To: pcm@iwarpo3.UUCP (Phil C. Miller) Organization: Intel Corp., Hillsboro Lines: 80 In article <3730@megaron.arizona.edu> debray@arizona.edu (Saumya Debray) writes: >In article <2781@omepd>, pcm@iwarpo3.intel.com (Phil C. Miller) writes: >> Part of the reasoning behind a technical education should be to prepare >> a student for the working experience. I contend that exposing >> first-year students to a functional programming language does not fit >> that role. > >Assuming you're not referring to two-year trade schools that crank out >programmers, I disagree. In my opinion, a primary purpose of a CS >degree program is to teach students the basic principles of computation. I cannot agree that languages like Prolog and ML teach students the basic principles of computation. Prolog is quite foreign to the underlying structure of existing (von Neumann) architectures. ML, as a functional programming language, enforces a programming style which is (1) inefficient; (2) not in widespread use; (3) not compatible with most algorithms which appear in the literature. Seems to me that any of these are an adequate counter-argument to use of ML as an introductory language. Prolog, while a fine language for AI/DBMS applications, is simply not a general-purpose language. >I feel that at the early stages, this is best done using a declarative >language. Starting out with high-level assemblers like C or Basic can all >too easily damage students' brains to a point where they have a hard time >grasping any concept not directly available in these languages. The generalization inferred by this is that any programmer not exposed on day one to declarative languages is brain-damaged. This covers 99.99999% of programmers. Too bad, if only Donald Knuth and Per Brinch Hansen had seen ML before they were ruined. >If your student progresses beyond the first year, he'll presumably >encounter languages like C; with early exposure to declarative languages, >he should have the background to use these in a disciplined way. If he >doesn't progress beyond the first year, of course, the point is moot. This brings us full circle to the original point: what should be the first language a student is taught. Most universities use Pascal or C, which at least offer the twin advantages of (1) widespread use and (2) some comprehensible relationship to the underlying architecture. >> [ ... ] I have just changed jobs. In no interview was I asked >> whether I knew ML; in every interview I was asked if I knew C. > >A lot of interviewers are idiots who'll also ask you whether you've worked >on machine PQR and operating system XYZ. Do you feel that, in "preparing a >student for the work experience", schools should dispense with computer >architecture courses, in favor of training on a dozen different machines? I obviously said nothing of the kind, directly or indirectly. Questioning an applicant regarding his/her level of expertise in a particular programming language gives an interviewer some assessment of the applicant's potential for contribution TO AN EXISTING SOFTWARE METHODOLOGY. In other words, given that a company needs someone to work on Unix in C for a project which may already be behind schedule, they merely wish to know how long it will be before the applicant can contribute. I'll close my comments (and hopefully terminate the religious tirade of ML fans) by stating that declarative languages have a place in computer science education. I happen to feel that the place is graduate school and not undergraduate. One minor point I should make here: I have formally studied both ML and Prolog in graduate school, and I think both are fine languages. I just don't think a first-year student see them as their first language, just like I don't think Latin is a good language to teach your children when they are first learning to talk: you teach them the language most commonly in use in their culture. >-- >Saumya Debray CS Department, University of Arizona, Tucson > > internet: debray@arizona.edu > uucp: {allegra, cmcl2, ihnp4} !arizona!debray Phil Miller Only I am responsible for my opinions.