🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.lang.misc
Article #5129

Re: First Languages (yet again)

#5129
From: Mark VandeWettering
Date: Tue, 09 Feb 1988 04:50
170 lines
9382 bytes
In article <2809@omepd> pcm@iwarpo3.UUCP (Phil C. Miller) writes:
>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.

	If this is so, then I would expect to receive an education (if
	it can be called that) in C, Pascal, Fortran and Assembler.
	While each of these languages may have its own usage, they are
	really not all that difficult.  The important thing is
	PROGRAMMING WELL, not a particular language.

>>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.

	And to show them that there are many ways to view computation,
	as a functional machine with simple substitution semantics,
	logic programming, traditional von Neumann machines, object
	oriented programming.  I have applauded the Abelson and Sussman
	because they admirably achieve this goal in Structure and
	Interpretation of Computer Programs, which was recently adopted
	as the text for our undergraduate program here at the U of
	Oregon.

>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.

	You make several points here which are questionable.  The
	efficiency argument has two sides: a language may encourage
	inefficient solutions, or the implementation of a language may
	be itself inefficient.  The first is true of any language; it is
	possible to write inefficient programs in almost any language.
	The second is being dealt with by more effective and efficient
	compilers.   Part of the sucess is due to the fact that
	languages like Scheme and ML (and Miranda and SASL, thanks David
	Turner) have a clean semantics that allow you to reason formally
	about how compilation should proceed.

	"Not in widespread use" is a questionable argument at best.
	Fortran is in wide use, but I would shoot anyone who taught it.
	C, well, I find it a necessary evil, but anticipate C++ as
	taking its place shortly (like when g++ is stable).  Languages
	like C and Pascal and Fortran are all really not all that
	different, and not that hard to pick up once you have a good
	grasp of basic programming skills.

	Your last argument is perhaps the most persuasive, there doesn't
	seem to be a good body of literature of how to solve traditional
	problems in a functional style.  This doesn't mean that someone
	shouldn't do so, however, and I anticipate greater work to be
	done in this area.  In the mean time, a language such as Scheme
	allows you to at least get a taste of a language with pure
	semantics, and still allows programming in a traditional
	procedural sense.

>>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.
	
	Emphasize computation, and how it may be accomplished, not how a
	particular LANGUAGE or IMPLEMENTATION may be accomplished.

>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.

	Donald Knuth is an amazing man, and perhaps in 100 lifetimes I
	might accomplish 1% of what he has done, but he is hardly a
	sparkling example of a programmer.  If you need a chuckle, read
	the intro to volume 1 of The Art of Computer Programming, in
	which he explains his MIX machine, and how all programs will
	have to be written in assembler.  These texts, while excellent
	in many way, are considerably less useful because they are too
	specifically tied to a particular form of programming.

>>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.

	Agreed.  Don't cater to people who have passing interest in CIS,
	teach something of the science that computer science is rapidly
	developing.  By teaching "useful" skills, you breed a generation
	of programmers that believe that they understand computation,
	but whose fundamental knowledge of computers is constrained by
	the language that they use to express it.

>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 know of very few people who have gone through low level CIS
	program that could tell me with any real conviction how the
	underlying architecture supported C or Pascal execution.  If
	this is true, then why bother teaching them?  If they have no
	idea of how a computer works, why teach them of a register
	machine?  (Yeah, I knowk, that's how they work, but they
	probably won't understand that until much later)

>>> [ ... ]  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.

	Well, if ya asked me how I earned my bread and butter, I
	wouldn't say ML.  But we are talking about ideals here (or at
	least I am).

>>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?

	JCL?  Fortran?  "Just say no!" :-)

>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.
	
	If they add someone to a project that is behind, it will get
	further behind.  Noone can be dropped into a vacuum and expected
	to churn code from day one.

>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.

	It depends.   I would say they have not much of a place in an education
	which is deemed to be practical (although I reserve the right to
	change my mind, I am beginning to believe some more of the
	declarative doctrine).  You are not going to get much call for
	ML programming, which probably means your time could be better
	spent.

>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.
	
	For interesting reading on "first language?" questions, try
	SIGPLAN Notices vol 22, number 3, march 87

		"A Critique of Abelson and Sussman or why Calculating is
		better than Scheming" by Philip Wadler
	
	and of course Abelson and Sussman.
>>-- 
>>Saumya Debray		CS Department, University of Arizona, Tucson
>Phil Miller
mark vandewettering, university of oregon cis department
Technical Details
Message-ID: <1543@uoregon.UUCP>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!water!watmath!clyde!rutgers!sri-spam!ames!amdcad!sun!decwrl!hplabs!hp-pcd!uoregon!markv
References: <4022@ames.arpa> <2400002@otter.HP.COM> <932@its63b.ed.ac.uk> <2781@omepd> <3730@megaron.arizona.edu> <2809@omepd>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!water!watmath!clyde!rutgers!sri-spam!ames!amdcad!sun!decwrl!hplabs!hp-pcd!uoregon!markv
From: markv@uoregon.UUCP (Mark VandeWettering)
Newsgroups: comp.lang.misc
Subject: Re: First Languages (yet again)
Message-ID: <1543@uoregon.UUCP>
Date: 9 Feb 88 04:50:51 GMT
References: <4022@ames.arpa> <2400002@otter.HP.COM> <932@its63b.ed.ac.uk> <2781@omepd> <3730@megaron.arizona.edu> <2809@omepd>
Reply-To: markv@drizzle.UUCP (Mark VandeWettering)
Organization: University of Oregon, Computer Science, Eugene OR
Lines: 170