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=0.2 required=5.0 tests=BAYES_00,INVALID_MSGID, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 109fba,baaf5f793d03d420 X-Google-Attributes: gid109fba,public X-Google-Thread: fc89c,97188312486d4578 X-Google-Attributes: gidfc89c,public X-Google-Thread: 1014db,6154de2e240de72a X-Google-Attributes: gid1014db,public X-Google-Thread: 103376,97188312486d4578 X-Google-Attributes: gid103376,public From: seebs@solutions.solon.com (Peter Seebach) Subject: Re: What's the best language to start with? [was: Re: Should I learn C or Pascal?] Date: 1996/08/08 Message-ID: <4ud8oo$61t@solutions.solon.com>#1/1 X-Deja-AN: 172954565 references: <4uaqqg$203@mulga.cs.mu.OZ.AU> <01bb84b4$75304ce0$87ee6fce@timpent.airshields.com> <4ubnhr$714@news1.mnsinc.com> <01bb8536$892ee260$87ee6fce@timpent.airshields.com> organization: Usenet Fact Police (Undercover) reply-to: seebs@solon.com newsgroups: comp.lang.c,comp.lang.c++,comp.unix.programmer,comp.lang.ada Date: 1996-08-08T00:00:00+00:00 List-Id: In article <01bb8536$892ee260$87ee6fce@timpent.airshields.com>, Tim Behrendsen wrote: >My point is someone who has "vaguely" learned five algorithms has >simply memorized them, and learned nothing about the general >principles of how algorithms are created. Which is exactly what will happen if they code them in assembly; they can't possibly be learning how algorithms are created if they start with implementing them in a low level language. Algorithms are generally written in natural languages, and written on napkins. The details of which bytes move where are *not* part of the algorithm itself. >I live lame software engineering every day, believe me I >understand the level of general ignorance. You can always >fix someone's style, but you must plant the seed of thought >early on. Yes. >Truly understanding two algorithms is better than memorizing five >algorithms, because that is what *gives" the fundamental >understanding. But experimenting with the five algorithms, and comparing them, is a better way to truly understand them than implementing them in a difficult language. >> Teach a man an algorithm and some I/O routines to enter the input >> and display the output, then some routines to set up the stack, >> then some routines to initialize data, >Yes, and wouldn't they truly understand I/O routines and stacks >after that? Sure. Implementing I/O routines and stacks, *in any language*, is a good way to learn about I/O routines and stacks. It's a crappy way to learn about sorting. Further, learning about stacks is bad way to learn about computing; stacks are not a universal implementation of computers. Students who learn about stacks early on may start assuming that that's somehow a basic truth of computing. They may do things like assert that the addresses of local variables in one function are always lower than the addresses of local variables in a function "above" it on the stack. Or maybe that should be higher; both kinds exist. Being aware of a *conceptual* stack is different. >Yes, if your model is the brain-damaged 8086 model. I personally >would use a 68000 to teach on because it's a nice straight-forward >orthogonal instruction set. But not nearly as straightforward as C or lisp. -s -- Peter Seebach - seebs@solon.com - Copyright 1996 - http://www.solon.com/~seebs Unix/C Wizard - send mail for help, or send money for consulting! The *other* C FAQ, the hacker FAQ, et al. See web page above. Unsolicited email (junk mail and ads) is unwelcome, and will be billed for.