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.5 required=5.0 tests=BAYES_05 autolearn=ham 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: 103376,97188312486d4578 X-Google-Attributes: gid103376,public X-Google-Thread: 1014db,6154de2e240de72a X-Google-Attributes: gid1014db,public From: huang@mnsinc.com (Szu-Wen Huang) Subject: Re: What's the best language to start with? [was: Re: Should I learn C or Pascal?] Date: 1996/08/10 Message-ID: <4uioj0$ptn@news1.mnsinc.com> X-Deja-AN: 173406368 distribution: inet references: <01bb8565$3ea962e0$87ee6fce@timpent.airshields.com> <4ue5l3$frr@news1.mnsinc.com> <01bb8606$5c5f5d20$87ee6fce@timpent.airshields.com> followup-to: comp.lang.c,comp.lang.c++,comp.unix.programmer,comp.lang.ada organization: Monumental Network Systems newsgroups: comp.lang.c,comp.lang.c++,comp.unix.programmer,comp.lang.ada Date: 1996-08-10T00:00:00+00:00 List-Id: Tim Behrendsen (tim@airshields.com) wrote: [snip] : But, you're right that this has nothing to do with assembly. : The question is how to have students get a feel for how : algorithms actually work in the real world, and there is no : substitute for working with the real computer. Maybe we could just short-circuit this prolonged discussion to why HLLs cannot help you teach students and why assembly is necessary. : > Data movement, sir, is not restricted to assembly language. : > Assembly language, in fact, impedes the understanding of data : > movement because of all the extraneous things that have to be : > done to make the program work. : What extraneous things? I don't understand why you think it's : so enormously complicated to use assembly. Programmers used : to do it all the time, and they somehow managed to write : programs without suffering mental breakdowns. I didn't say "enormously complicated". I said, "extraneous". Knowledge a beginner does not *need* is likely to confuse and impede more than help. : > : What we're doing now is *sure* not working. : > Because some students graduate without understanding algorithm : > complexity, not because they graduate without learning assembly : > language. : I agree with the first, but the reason they are not "getting" : algorithm complexity is because we're shrouding it in all : this abstract mystery. That's your assertion. An equally valid one is as I explained, that the least experienced instructors get assigned to beginners. [snip] : But we can learn from the best programmers about how their : thought processes work. Again, the most important thing is : to get the students "thinking like programmers". An expert programmer knows when rules can be broken. Beginners do not have the knowledge to make that decision. You simply cannot think like an expert until you are one. [snip] : Don't get me started about debuggers... I think in certain : ways debuggers have lowered productivity rather than : raised it. Precisely. Giving the beginner too much impedes them rather than develops them. [snip] : I just want students to get a better feel for what the computer : really does. And the risk, as we pointed out, is that the percentage of attention they spend on the algorithm itself is actually lowered. : Because the student is thinking about compression, rather than : being spoon-fed the information from a book or the teacher. : When the get into the real world, this thought process will : stay with them when they begin to need to break down much : more complex problems into algorithms. Babies are spoon-fed for a very good reason, and that is because they don't know what to eat. We don't send babies into the real world, just as we don't (hopefully) send beginners into the real world. A 15 year old might be advised that premarital sex is "bad" because of responsibilities, diseases, et al, but an 8 year old that asked is probably just answered with "it's bad." You confuse the 8 year old when you start talking about AIDS. [snip] : Using library routines to do simple I/O tasks does not take : away from the learning experience of the algorithm. Somehow : input and output have to happen, and I see no reason to burden : the student with problems that are not relevent to what they : are trying to learn. Precisely the reason to stay away from assembly. [snip] : > You still haven't proven why assembly is necessary, or at least : > better. : Again, I go back to the fact that what we're doing now is : not working, based on my experience (and you admitted to : above). What are we doing now? We are teaching students at : an extremely high level of abstraction. That's false dichotomy. Ineffective teaching of HLL does not prove that assembly will be effective. [snip] : Not to be repetitious with this example, but I look at how EEs : are taught. They begin by learning the fundamental components; : resisters, capacitors, ohm's law, etc. They seem to me to be : much better prepared to do real work than CS graduates, and I : think it's because of the early emphasis on the fundamentals. Another false example. I had two EE courses as a CS undergrad, and we skipped most of that without hampering my ability to do logic design. In fact, my CS education was far more useful to me when working with gates than my EE education. I didn't need to know how transistors made up a gate in order to assembly several gates into an adder. In fact, I had forgotten totally how transistors work, yet I can still build an adder if you tell me which symbol means NAND and NOR (the fundamentals).