From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=BAYES_00,INVALID_MSGID, RATWARE_MS_HASH,RATWARE_OUTLOOK_NONAME autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: fc89c,97188312486d4578 X-Google-Attributes: gidfc89c,public X-Google-Thread: 103376,97188312486d4578 X-Google-Attributes: gid103376,public X-Google-Thread: 1014db,6154de2e240de72a X-Google-Attributes: gid1014db,public X-Google-Thread: 109fba,baaf5f793d03d420 X-Google-Attributes: gid109fba,public From: "Tim Behrendsen" Subject: Re: What's the best language to start with? [was: Re: Should I learn C or Pascal?] Date: 1996/08/02 Message-ID: <01bb8027$de0e9c80$96ee6fcf@timhome2>#1/1 X-Deja-AN: 171889687 references: <01bb73e3.1c6a0060$6bf467ce@dave.iceslimited.com> <1996Jul20.124025.122789@kuhub.cc.ukans.edu> <01bb7b06$311fabc0$87ee6fce@timpent.airshields.com> <31FBC584.4188@ivic.qc.ca> <01bb7da2$6c505ac0$96ee6fcf@timhome2> content-type: text/plain; charset=ISO-8859-1 organization: A-SIS mime-version: 1.0 newsgroups: comp.lang.c,comp.lang.c++,comp.unix.programmer,comp.lang.ada Date: 1996-08-02T00:00:00+00:00 List-Id: Arra Avakian wrote in article ... > In article <01bb7da2$6c505ac0$96ee6fcf@timhome2>, "Tim Behrendsen" wrote: > .. > >The most important thing any student can learn is the stripping away > >of the shroud of abstractions, and seeing the simplicity of what's > >really underneath. Once they get that, all the rest of it comes naturally. > > > I can see both sides of this issue: the importance of understanding > abstractions, and the importance of understanding what is underneath. > I think that a programmer needs to have a model of how a computation occurs in > order to understand issues such as time and space efficiency of the > computation. On the other hand, understanding the abstractions presented by > both language constructs and by APIs is absolutely critical to being able to > deal with complex systems. A curriculum that does not accomplish the learning > of computing abstractions fails. Its hard for me to judge the "best" approach > for someone learning now, when I have had the experience of learning gradually > over a lifetime. Let's try a thought experiment. We take two students; Jane is taught assembly from day 1 for two years. John is taught C for two years. Both are exposed to identical curriculums of algorithmic analysis, data structures, etc. Two years later, they switch roles. Who will learn the other's skills the easiest? I say C will be the most obvious thing in the world to Jane, and within a few weeks she will out-code John by a longshot. She will instantly see what subroutines, automatic variables, static variables, pointers, argument passing, call-by-value v.s. call-by-reference, arrays, you name it, are all about. She will already know the concepts; it's just a matter of learning the syntax. And if she's ever confused, she can always look at the assembly output. John will be hopelessly confused at first, because he will have absolutely no grounding in what the C syntax really means. He will have to start completely from scratch. His C syntactical experience will be almost useless in learning assembly, because the mechanisms behind the "magic" have been hidden to him. -- Tim Behrendsen (tim@airshields.com)