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=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID 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: 1014db,6154de2e240de72a X-Google-Attributes: gid1014db,public X-Google-Thread: 109fba,baaf5f793d03d420 X-Google-Attributes: gid109fba,public X-Google-Thread: 103376,97188312486d4578 X-Google-Attributes: gid103376,public From: arra@inmet.com (Arra Avakian) Subject: Re: What's the best language to start with? [was: Re: Should I learn C or Pascal?] Date: 1996/07/30 Message-ID: #1/1 X-Deja-AN: 171031884 sender: news@inmet.camb.inmet.com (USENET news) x-nntp-posting-host: professor.camb.inmet.com 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> organization: Intermetrics, Inc. newsgroups: comp.lang.c,comp.lang.c++,comp.unix.programmer,comp.lang.ada Date: 1996-07-30T00:00:00+00:00 List-Id: 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. I learned programming in the summer between my freshman and sophomore years in high school (1960!!). I was taught two "languages" that summer: IBM 1620 assembly language and FORTRAN II. I do recall being mystified and puzzled by the concept of how FORTRAN source code could "execute", but could readily "grok" how a dumb machine could blindly execute machine code. It wasn't until I understood the concepts behind a compiler that the mystery faded and I could accept the abstraction of FORTRAN. What is interesting in hindsight was that the concept of an assembler did not cause any mystification - its role as a translator was "obvious", but the role of a compiler was definitely not obvious. The foundation of understanding the concepts of a stored program computer was essential for me to understand anything else. I still to this day need to understand the execution model of an abstraction in order to "really" understand it. I guess my character is to be suspicious of the mystery, and not be able to take it on "faith". Arra Avakian Intermetrics, Inc. 733 Concord Avenue Cambridge, Massachusetts 02138 USA (617) 661-1840 arra@inmet.com