Path: utzoo!utgpu!water!watmath!clyde!cbosgd!ihnp4!ptsfa!ames!sri-spam!sri-unix!quintus!ok From: ok@quintus.UUCP (Richard A. O'Keefe) Newsgroups: comp.lang.misc Subject: Re: Languages and learning (was: Philosophy of C) Summary: desiderata Message-ID: <568@cresswell.quintus.UUCP> Date: 23 Jan 88 11:02:15 GMT References: <3473@ihlpf.ATT.COM> <1616@codas.att.com> Organization: Quintus Computer Systems, Mountain View, CA Lines: 50 In article <1616@codas.att.com>, karthur@codas.att.com (Kurt_R_Arthur) writes: > I'm running the risk of another holy war here, but REXX (IBM's system command > interpreter language for VM/CMS, now a part of SAA & due to be ported through > out IBM's architectures) seems to be a very good 'first language' because it > has access to the full range of OS commands, permits very good structured > programming techniques a la C (in fact, I've done prototyping for C using > Personal REXX with good results), is 'wordy' enough to be comprehensible to a > novice and has a tremendous trace function, allowing several different methods > of looking at the parsing of the statements. REXX is also interpreted rather > than compiled, allowing immediate viewing of results. I think the Bourne shell is pretty bad as a programming language, and the C shell is worse, but REXX out-bads the lot. I do not understand why "has access to the full range of OS commands" is thought to be a virtue of a FIRST language. If it comes to that, so has C, ever heard of system()? This is the only property of REXX which is not also a property of Lisp, and Lisp is a much cleaner language. In order to understand REXX, you have to understand quite a lot of rather subtle things, and most importantly, you have to be happy with a language that shifts under your feet. (According to the SAA manual, some of the control structures, such as SELECT, are *not* available in OS/2...) "Interpreted rather than compiled" is quite independent of "allowing immediate viewing of results". For example, Pop-2 is a compiled interactive langauge. Type in define f(a,b); [% a+b, a-b %] enddefine; and this is *compiled*. Then type pr(f(42, 27)); and [69 15] comes out at once. The Centrum voor Wiskunde in Informatike [spelling?] in Amsterdam has been working on a first language (called "Beta") for several years. Does anyone know what they have come up with? Everyone seems to recommend as a first language a language he happens to like. I'd be happy teaching programming with Lisp or Pop2. But that tells you more about me than about Lisp or teaching programming! Does anyone have any EVIDENCE about what makes a better first language? The kind of thing I'd like to see is a task analysis for programming, an analysis of several programming languages in terms of how easy they make it to explain the various subtasks, and some sort of experimental evidence that the analysis was right. All things considered, the University of Toronto's "Turing" language looks like being a reasonable first language. Is there anyone reading this who has used Turing? Comments on it?