🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.lang.misc
Article #5073

Re: Languages and learning (was: Philosophy of C)

#5073
From: skh
Date: Mon, 25 Jan 1988 17:44
74 lines
4893 bytes
>>In article <11348@brl-adm.ARPA> dsill@NSWC-OAS.arpa (Dave Sill) writes:
>>In article <4186@eagle.ukc.ac.uk> "H.A.Shaw" <has@eagle.ukc.ac.UK> 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.
>>
>>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.
>>Teaching BASIC/Pascal/FORTRAN/Forth/etc first is like teaching algebra
>>before arithmetic.
>
>Unless you have a
>higher level concept of what things like lists, queues, and stacks are,
>programming in assembler is extremely tough.  There are no data structures in
>assembler, and this makes it tough to do any kind of non-trivial programming.
>HLLs are much better at learning the fundamentals of data structures and
>thinking abstractly.

You are completely correct, as far as I am concerned.  The whole process
of software engineering (the fancy name for programming) really takes place
at a *MUCH* higher level than the machine.  To write a really large product
(which is NOT done in any class) requires machine knowledge only after you get
down to the gritty details of how the product works.  And it is designing the
PRODUCT, not the implementation, where so many people fail.  A thorough
knowledge of programming constructs and data structures allows one to 
concentrate on the task, knowing that one can program the thing without
worrying about too much detail (i.e. the basis of top-down programming).

>
>>BASIC is a bad joke.  The bad habits that it imparts on students are
>>particularly hard to unlearn (first impressions are lasting
>>impressions).  It oversimplifies the hardware-software interface to
>>the point where it seems, to the student, to be performing magic.  
>
>Unfortunately, the many of the bad habits one picks up in BASIC one also picks
>up in assembler.  One of the major habits is un-structured programming.  That
>is why people have a hard time going from BASIC to Pascal (for instance); the
>same problem would happen going from assembler to Pascal.

How to start an argument...defend BASIC. (No flames if you can help it)
First, I will admit to being on a team which implemented a BASIC interpreter
and compiler.  Second, this is no "ordinary" BASIC...it is an operating
system unto itself, built on top of a larger system (i.e. it's not for PC's).
Third, like many others, I learned BASIC first and had to unlearn the bad
stuff.
BUT...there are now several powerful, structured BASIC languages in existance.
Some of these have interpreters, some have record structures and pointers.
I think it is a shame that these languages exist only on larger machines.
They would make very good first languages.  WHY? (you ask laughingly :-)
Think how easy BASIC was to use when you learned it...there were lots of silly
details you could ignore (like declaring everything under the sun).  Why should
you care about that? It's just an artifact of computer languages to a beginner.
(But not to a compiler, and not to those of us who have learned more :-)
If the BASIC has structured statements, GOTO is not needed, and need not be
taught (just as most instructors fail to mention that PASCAL has a GOTO).
And if an interpreter is available, the beginner can REALLY see how a program
works! (NOTE: By interpreter, I *DO NOT* mean one in which you can trace and
change variables.  I *DO* mean one which allows program changes on the fly,
plus all the tracing.  The less power the interpreter has, the more difficult
and useless it becomes.  My own opinion is that interpreters are great for
development, but have a compiler to get the speed.)
In my own experience, people who have not programmed before can grasp the 
simple concepts that BASIC can present.  and they can see the results.  I have
found that LISP, and compile-only languages, take longer to learn, and force
the student to concentrate not on the problem to be solved, but the syntax and
semantics of the language.

If one intends to teach a LANGUAGE course, concentrate on the language.  If
one intends to teach a BEGINNING programming course, find an easy language.
BASIC qualifies...though if I were teaching, it would have to be structured.

"'nuff said"
						skh
Technical Details
Message-ID: <960004@hpclskh.HP.COM>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!water!watmath!clyde!rutgers!cmcl2!nrl-cmf!ames!sdcsvax!ucsdhub!hp-sdd!hplabs!hpda!hpesoc1!hpcllla!hpclisp!hpclskh!skh
References: <3473@ihlpf.ATT.COM>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!water!watmath!clyde!rutgers!cmcl2!nrl-cmf!ames!sdcsvax!ucsdhub!hp-sdd!hplabs!hpda!hpesoc1!hpcllla!hpclisp!hpclskh!skh
From: skh@hpclskh.HP.COM
Newsgroups: comp.lang.misc
Subject: Re: Languages and learning (was: Philosophy of C)
Message-ID: <960004@hpclskh.HP.COM>
Date: 25 Jan 88 17:44:49 GMT
References: <3473@ihlpf.ATT.COM>
Organization: HP ITG/ISO Computer Language Lab
Lines: 74