home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #27 / NN_1992_27.iso / spool / comp / programm / 3190 < prev    next >
Encoding:
Text File  |  1992-11-19  |  6.6 KB  |  136 lines

  1. Newsgroups: comp.programming
  2. Path: sparky!uunet!sun-barr!ames!agate!linus!linus.mitre.org!crawford
  3. From: crawford@boole.mitre.org (Randy Crawford)
  4. Subject: Re: first-year programming languages
  5. Message-ID: <1992Nov19.000628.18932@linus.mitre.org>
  6. Originator: crawford@boole.mitre.org
  7. Sender: crawford@boole (Randy Crawford)
  8. Nntp-Posting-Host: boole.mitre.org
  9. Organization: The MITRE Corporation, McLean, VA
  10. References: <1992Nov9.152324.2715@jarvis.csri.toronto.edu> <wingo-111192171446@wingosmac.apple.com> <1992Nov13.171915.26423@cbnewsc.cb.att.com> <aelman.721693402@Xenon.Stanford.EDU> <dnebing-141192140340@m64-143.bgsu.edu>
  11. Distribution: na
  12. Date: Thu, 19 Nov 1992 00:06:28 GMT
  13. Lines: 121
  14.  
  15.  
  16. In article <dnebing-141192140340@m64-143.bgsu.edu>, dnebing@andy.bgsu.edu (dnebing) writes:
  17. > In article <aelman.721693402@Xenon.Stanford.EDU>, aelman@Xenon.Stanford.EDU
  18. > (Adam Elman) wrote:
  19.  
  20. [Preceding comments advocating the teaching of assembly as a first or 
  21. near-first language.]
  22.  
  23. >  
  24. > > I disagree strongly with this for two reasons:
  25. > > One:  Machine language is a _serious_ turn-off to people who aren't
  26. > > already committed to computing. [...]
  27. >   I disagree with you because of this point.  Here at BGSU, we have two
  28. > classes that students take before hitting the assembly language class,
  29. > which must be like yours because it either makes or breaks the CS major.
  30. >   What happens in the first two classes?  The first two classes use
  31. > Pascal.  The programming assignments are meant to teach the language
  32. > more than the concepts.  When necessary, the students are practically
  33. > given the basic code which they only have to modify for their own
  34. > programs.
  35. [...] 
  36. >   IMHO, the assembler course should have been first.  It would weed those
  37. > out who really don't want to be there and also challenge those who do.
  38.  
  39. But programming in assembly has almost nothing to do with computer science.
  40. Weeding out those CS majors who would rather not putz along in assembly 
  41. would eradicate a lot of talented people who otherwise might excel at 
  42. cognitive modelling or database work.
  43.  
  44. Like algorithms and computability, assembly has its place in teaching one
  45. aspect of CS.  But don't make too much of it.  For all the same reasons
  46. you advocate the teaching of assembly you could justify the teaching of
  47. turing machine programming or DFA/stack machine/ATN machine programming.
  48. And you'll probably find about as much use for them professionally as 
  49. assembly since few commercial or government systems contain assembly any 
  50. more.  The other computational models will illustrate implementation costs 
  51. and tradeoffs just as well as assembly can.
  52.  
  53. >
  54. > > Two:  Since when was machine language really a good introduction to
  55. > > the "tools of the trade"?  Machine/assembly languages introduce a
  56. > > single topic in CS -- that of memory and CPU behavior.  [...] I use
  57. > > concepts such as algorithms, data structures, pointers, procedural
  58. > > programming, etc. etc. in _all_ my CS classes (including the assembly
  59. > > class, for that matter!).  _Those_ topics are what first-year CS
  60. > > students should be learning.
  61. >
  62. >   It is _possible_ to show all of those things in assembler.  Higher level
  63. > languages convert all of those things into assembly language.
  64.  
  65. Machine code, actually.  Perhaps they should learn recursion and semantic
  66. nets using sub-mnemonic machine instructions...  
  67.  
  68. Just because you _can_ express exponentiation using addition doesn't mean 
  69. you should.
  70.  
  71. >   I am not trying to say that assembly language will offer the students
  72. > the best way to get those concepts.  Some concepts would be very difficult
  73. > to show.  In my opinion, to know assembler is to know the computer itself.
  74. > The assembler class opened up a few problems that I had with C because
  75. > I didn't fully understand what was actually going on.
  76.  
  77. Perhaps today, but what about tomorrow?  Will you better understand analog 
  78. machines or neural nets or newer computational implementations like 
  79. connection machines using computational models based on assembly?  Not in my
  80. opinion.  I'd say you're better off understanding computational models in 
  81. general, and _then_ move on to specific models like von Neumann machines and 
  82. assembly programming.
  83.  
  84. > > I would agree that there is a good amount of debate on whether the
  85. > > emphasis of a first-year class should be on the ideas of programming
  86. > > structures, etc., (languages such as Pascal or C) or algorithms
  87. > > (something like Scheme, Lisp, or ML).  But I think that emphasizing
  88. > > the bare-bones machine aspects would be crazy.
  89. >
  90. > A strong foundation in the bare-bones machine can help others to understand
  91. > what happens with those data structures and algorithms.  When programming
  92. > in assembler, every bit becomes important.  With higher level language, its
  93. > importance is lost even though it can still play a part.
  94.  
  95. As always (it seems) a middle path which introduces both to the student has 
  96. to be preferable to one OR the other.  As both opinions point out, both 
  97. perspectives are valuable to the education of a computer scientist.  Which
  98. course comes first really isn't that important.
  99.  
  100. >   It is difficult to program in assembly language, anyone will agree.  But
  101. > it can give a student a good understanding about the computer that he/she
  102. > will be working with for the rest of his/her life.
  103.  
  104. I'm not so ready to predict that computers in 2020 will so closely resemble
  105. today's crop of assembly machines.  After all, hasn't assembly programming
  106. pretty much disappeared from most software development in the past decade?
  107. Ever try to outguess optimizing compilers on architectures like SPARC or 
  108. PA-RISC?  Think you could better their scheduling/pipelining/register-window 
  109. use by programming in assembly?  If so, you're a far better assembly programmer 
  110. than I. 
  111.  
  112. In a perfect CS curriculum, I'd like to see a first course like that at MIT, 
  113. using Abelson & Sussman's SICP book and Scheme to learn programming/algorithms/
  114. mathematical foundations.  Then I'd like to see sophomore-level intro courses on
  115. algorithms and data structures as well as on discrete math and computational 
  116. models.  I'd choose Sedgewick's _Algorithms in C_ book for algs/data structures 
  117. and maybe Aho & Ullman's _Foundations of Computer Science_ for computational 
  118. models and theory.  Then I'd demand additional algorithm and theory classes in 
  119. the junior or senior years.  And at least one early course on _software 
  120. engineering_.
  121.  
  122. In four years, I might not even _get around_ to assembly language programming.
  123.  
  124.  
  125. -- 
  126.  
  127. | Randy Crawford        crawford@mitre.org        The MITRE Corporation
  128. |                                                 7525 Colshire Dr., MS Z421
  129. | N=1 -> P=NP           703 883-7940              McLean, VA  22102
  130.