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.6 required=5.0 tests=BAYES_20,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: 109fba,baaf5f793d03d420 X-Google-Attributes: gid109fba,public X-Google-Thread: 103376,97188312486d4578 X-Google-Attributes: gid103376,public X-Google-Thread: 1014db,6154de2e240de72a X-Google-Attributes: gid1014db,public From: dewar@cs.nyu.edu (Robert Dewar) Subject: Re: What's the best language to start with Date: 1996/08/09 Message-ID: #1/1 X-Deja-AN: 173143679 references: <01bb83ad$29c3cfa0$87ee6fce@timpent.airshields.com> <4uaf5h$mid@btmpjg.god.bel.alcatel.be> <01bb8540$59ac8420$87ee6fce@timpent.airshields.com> organization: Courant Institute of Mathematical Sciences newsgroups: comp.lang.ada,comp.lang.c,comp.lang.c++,comp.unix.programmer Date: 1996-08-09T00:00:00+00:00 List-Id: Tim said "I completely disagree! Someone who is an "algorithm memorizer" is *much* less likely to go back and think "Is there another way to do this," because they by definition do not think about their solutions. They simply look them up in the book, and if the book says that's the best, well, no need to go further." This seems like a pretty extreme case of NIH syndrome. Any competent programmer MUST be an "algorithm memorizer" in the sense that if you have a complex algorithmic problem, then you should at LEAST know where to go and look up appropriate solutions. In other than trivial cases, you are very unlikely to be able to cough up on the spot solutions that compare to the combined knowledge represented by 30 years of research by thousands of researchers. Over and over again I see cases of careful and well written implementations of completely absurd algorithms for standard problems, where quite obviously the programmer was simply unaware that there are much better solutions known. Suppose for example you need a fast in place sort with bounded time behavior (i.e. you are concerned with worst case performance). A good programmer knows immediately that treesort3 or some variation of it (Knuth likes to call this algorithm heapsort) is the natural choice. You are NOT about to invent this on your own. You don't necessarily need to recall the details, but you should certainly know where to look up this algorithm, and then be able to code from that description, or in some environments you can of course short circuit this by using standard libraries. For instance, if you want to compute eigenvalues of a large matrix, then you CERTAINLY do not try to invent your algorithm, and you probably don't even go and look up an algorithm, instead you use a standard library. Reuse, of both code in standard libraries, and of ideas, in the form of published algorithms, is a key, perhaps *the* key, tool in a programmers arsenal.