Path: utzoo!utgpu!tmsoft!mason From: mason@tmsoft.UUCP (Dave Mason) Newsgroups: comp.lang.misc Subject: Languages and learning (was: Philosophy of C) Message-ID: <271@tmsoft.UUCP> Date: 23 Jan 88 04:11:26 GMT References: <11348@brl-adm.ARPA> <3473@ihlpf.ATT.COM> Reply-To: mason@tmsoft.UUCP (Dave Mason) Followup-To: comp.lang.misc Organization: TM Software Associates, Toronto Lines: 54 In article <3473@ihlpf.ATT.COM> nevin1@ihlpf.UUCP (00704A-Liber,N.) writes: >In article <11348@brl-adm.ARPA> dsill@NSWC-OAS.arpa (Dave Sill) writes: >>In article <4186@eagle.ukc.ac.uk> "H.A.Shaw" writes: >>>I wholeheartedly agree, and hope I write better C >>>programs now for three years of BASIC/PASCAL/FORTRAN/FORTH first. >>>They did teach [C] to third year Computer Scientists sometimes. It's not clear to me that BASIC & FORTH (or even FORTRAN) are any improvement over C. None of them allow software engineering style, top-down program design. (Of course this is a generalization, with the right FORTH environment, or a modern structured BASIC, this could be less true). It took me YEARS to unlearn the junk programming practices that I developed using Basic & Fortran IV. >>This is much too late. Computer education should proceed from a >>hardware overview to machine language to assembler language to low- >>level compiled languages on up to high-level compiled languages. >I don't know if this is the best way to learn computer programming. Without >any previous experience, I think it would be extremely difficult to impossible >to debug a machine language program (although I do, I know that not everybody >in the world grasps logic easily). We (Ryerson) used to teach S/370 assembler as the first programming language. This had a very high failure rate, but those who made it through that first year had a very good understanding of data flows, etc. in the machine. Unfortunately their programming style stank (for the most part) (by 4th year when I saw them). They had little idea of how to structure a problem. We then taught PL/1 for 2 or 3 years, which wasn't so great either...program structure improved, but PL/1 is such a big, ugly language. Then we started using PASCAL, and supplementing it with an intro Computer Organizatin course. This is the best combination so far, but I'm lobbying to change to LOGO (non-graphic) supplemented with the Organization course. >>BASIC is a bad joke. The bad habits that it imparts on students are >>particularly hard to unlearn (first impressions are lasting >>impressions). YES! I'd rather they'd never seen a computer before my 1st year course. >> It oversimplifies the hardware-software interface to >>the point where it seems, to the student, to be performing magic. C >>on the other hand, is more transparent. It allows the student to see >>the gears turning. But there's so d**m much detail to keep track of (all 12 levels of precedence and 40+ operators). I think it obscures the logic too much. First year students find PASCAL syntax confusing, I see no reason to increase the problem by switching to C! > I don't know what the best language to start >with is, but I don't think the bottom-up approach (i.e., starting with machine >language) has enough benefits to outweigh the problems. Maybe starting with >Lisp (a language which can be described very simply) and teaching theory is the >way to go (I think this is MIT's approach); I really don't know. I basically agree. Brian Harvey (LOGO book authour) suggests that they should learn a Lisp dialect (Scheme, LOGO, Common?) and an assembler like C, and then pick up any remaining languages when and as necessary for a particular problem.