Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!mcsun!ukc!dcl-cs!aber-cs!odin!pcg From: pcg@odin.cs.aber.ac.uk (Piercarlo Grandi) Newsgroups: comp.lang.misc Subject: Re: introductory language Message-ID: Date: 8 Apr 90 16:04:05 GMT References: <7300008@ux1.cso.uiuc.edu> <3168@castle.ed.ac.uk> Sender: pcg@aber-cs.UUCP Organization: Coleg Prifysgol Cymru Lines: 55 In-reply-to: nick@lfcs.ed.ac.uk's message of 5 Apr 90 10:56:53 GMT In article <3168@castle.ed.ac.uk> nick@lfcs.ed.ac.uk (Nick Rothwell) writes: I'd go for ML in both cases since it's clean, nicely typed, I like ML, but: functional and pointer-safe, ^^^^^^^^^^^^^^^^^^^^^^^^^^^ It depends on what you want to teach. Notwithstanding what the functional advocates say, statefulness and graphness are damn important in *programming*. ML is a wonderful language for demonstrating *algorithms* without being distracted too much by programming. This is is the usual fundamental problem of CS: is it about algorithms or programs? is it mathematics or engineering? and so on ad infinitum. There is also the horrid issue that maybe you should teach *programming*, if you want so, whereas many CS departments confuse that with teaching *languages*. To me a language is just a notation to demonstrate a program, which is the algol view of language as a medium of communicating program descriptions between programmers or between programmers and compilers. To others a language is a notation in which to express algorithms. To many CS curricula teaching a language is an end in itself. I'd rather go with the Sussman approach of using Scheme as notation for a book on program design, and concentrating on the latter (interestingly, my preference for a first notation to teach *programming* with is indeed scheme or lisp, and second place ML et similia). Me, I think that most CS curricula are skewed towards the research interests of faculty (isn't it always true?), because they tend to be biased either towards mathematics or towards systems programming. and easy to use for illustrating important modern language principles; but perhaps I'm biased. Most "programmer" jobs will now be about DMBSes and 4GLs, and CS departments turn out either complexity theorists/logicians (UK) or system implementors (USA). Alternatively a Modula or something like it. To me computers are mostly used to sort data, and secondarily to calculate. Thirdly, and very rarely, to develop other programs, such as OSes and compilers. You do not see this in most CS curricula. Seriously, what about teaching SQL or RPG or Ramis as first language, and have the first course in *data* design, and then put them to work on expressing such things and queries against them in one of the above? -- Piercarlo "Peter" Grandi | ARPA: pcg%cs.aber.ac.uk@nsfnet-relay.ac.uk Dept of CS, UCW Aberystwyth | UUCP: ...!mcvax!ukc!aber-cs!pcg Penglais, Aberystwyth SY23 3BZ, UK | INET: pcg@cs.aber.ac.uk