home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #19 / NN_1992_19.iso / spool / comp / arch / 9231 < prev    next >
Encoding:
Internet Message Format  |  1992-09-04  |  6.1 KB

  1. Xref: sparky comp.arch:9231 sci.math:10998 comp.lang.misc:2934 comp.lang.fortran:3428 comp.edu:1534
  2. Newsgroups: comp.arch,sci.math,comp.lang.misc,comp.lang.fortran,comp.edu
  3. Path: sparky!uunet!mcsun!dxcern!dscomsa.desy.de!zeus02.desy.de!hallam
  4. From: hallam@zeus02.desy.de (Phill Hallam-Baker)
  5. Subject: Re: Scientists as Programmers (was Re: Small Language Wanted)
  6. Message-ID: <1992Sep4.162938.29237@dscomsf.desy.de>
  7. Sender: news@dscomsf.desy.de (USENET News System)
  8. Nntp-Posting-Host: zws012.desy.de
  9. Reply-To: Hallam@zeus02.desy.de
  10. Organization: Deutsches Elektronen Synchrotron, Experiment ZEUS bei HERA
  11. References: <1992Aug31.170849.11927@mprgate.mpr.ca> <1992Aug31.195540.13074@ctr.columbia.edu> <1992Sep1.115849.13522@relay.nswc.navy.mil> <Btx4vF.Jx6@mentor.cc.purdue.edu> <92Sep1.205116edt.669@neuron.ai.toronto.edu>
  12. Date: Fri, 4 Sep 1992 16:29:38 GMT
  13. Lines: 107
  14.  
  15. In article <92Sep1.205116edt.669@neuron.ai.toronto.edu>, radford@cs.toronto.edu
  16. (Radford Neal) writes:
  17.  
  18. |>In article <Btx4vF.Jx6@mentor.cc.purdue.edu> hrubin@pop.stat.purdue.edu
  19. |>(Herman Rubin) writes:
  20. |>
  21. |>The following post is so profoundly incorrect that I feel compelled to
  22. |>respond (despite the fact this is usually a Bad Idea on usenet :-).
  23.  
  24. |>>Software engineering is not that relevant in general.  What is relevant is
  25. |>>the translating of the problem to be computed into the collection of bits
  26. |>>which the machine can understand to accomplish the task.  
  27. |>
  28. |>Someone has greatly mislead you concerning what constitues software 
  29. |>engineering. Your second sentence is a good first cut at a definition!
  30.  
  31. Yep, quite so, learning sorting and searching is not the point, any decent
  32. graduate should have the nouse to be able to look that up in a book. What is
  33. relevant is the engineering skills of applying expert knowlege to a problem.
  34.  
  35.  
  36. |>>If a procedure can use some of the machine instructions and the languages
  37. |>>available to the programmer cause code to run considerably slower because
  38. |>>the languages cannot use those instructions, the languages are inadequate. 
  39. |>>No amount of software engineering, or compiler optimization, and get around
  40. |>>this.  It is this feature which can make major differences in the relative
  41. |>>speeds of computing on different machines.
  42. |>
  43. |>This is seldom true. In fact, machines and programing languages have
  44. |>co-evolved in such a way as to practically ensure this.
  45.  
  46. RISC machines are fast bercause they abolish support for assembly code. On a
  47. RISC machine instructions are provided for the sole benefit of compilers.
  48.  
  49.  
  50. |>More generally, there are languages that lack certain capabilities
  51. |>that are available in any assembly language. Pascal does not allow a
  52. |>variable to contain a pointer to a procedure, for example. While some
  53. |>of the time this will just be an oversight, more typically, it results
  54. |>from a particular vision of programming, which the language is trying
  55. |>to support. Such visions are essential to progress, much more so than
  56. |>a miscellaneous collection of "features".
  57.  
  58. This is just the generic language war taken to root. Of course no language can
  59. provide more capabilities than machine code. However this is irrelevant since
  60. working at such a low level of abstraction is too error prone to be feasible for
  61. anything like a large project.
  62.  
  63. |>>The CS curricula exascerbate the problem by indoctrinating the student in
  64. |>>the attitude that the machine instruction set is not to be considered in
  65. |>>normal programming. 
  66.  
  67. The machine instruction set is of very little relevance since it is very rarely
  68. the case that the target machine is known. I can predict the machines we will be
  69. using for the next 18 months/2 years, no more. We will certainly have at least 3
  70. major manufacturers involved. People who piddle about optimising their code to a
  71. particular machine end up stuck with it. This is OK for embedded controllers
  72. which we rarely change but not for general purpose stuff.
  73.  
  74.  
  75. |>Other cases would be software that has time-critical interactions with
  76. |>the real world, or software that runs on a machine with an unusual
  77. |>architecture (some parallel machines, perhaps), etc. This is why
  78. |>indoctrination is bad - you need to known when an exception comes up.
  79.  
  80. We run massively parrallel machines and have a massive data rate to cope with.
  81. Thats why we *have* to use high level languages, the complexity of the problem
  82. is too great to allow use of machine code.
  83.  
  84.  
  85. |>>There can, and should, be interaction at compile time between the compiler
  86. |>>and the programmer.  The compiler also should be able to suggest rearranging
  87. |>>machine instructions, not just the output from HLLs.  
  88. |>
  89. |>This would occasionally be useful. I sometimes look at the output of
  90. |>the compiler to see if it is generating reasonable code, and to find
  91. |>out if there's any point in my doing certain optimizations at the
  92. |>source level (e.g. loop unrolling). This is reasonable for me to do
  93. |>because I have years of experience at this sort of thing. It probably
  94. |>isn't reasonable for you to do it.
  95.  
  96. If we needed that type of optimisation we would either buy a compiler which did
  97. it or write our own.
  98.  
  99. |>>What we are teaching the CS students, and even the software engineers, is 
  100. |>>essentially the mistake made in teaching methods without understanding in
  101. |>>mathematics and statistics.  Someone who has only learned a particular
  102. |>>collection of methods is extremely unlikely to consider anything not in
  103. |>>that particular bag of tricks.  Training is not education.
  104. |>
  105. |>Yes. A CS graduate who intends to work as a software engineer should
  106. |>BE ABLE to work at all levels, even more so for a computer scientist
  107. |>designing a new programming language or operating system. They should
  108. |>also know enough not to work at the machine level unless there is a
  109. |>good reason, which isn't very often for application programming. Most
  110. |>non-professional programmers would be well advised to think about
  111. |>their problem more, rather than learn the assembly language of the
  112. |>machine they are using this month.
  113.  
  114. We shiould stop calling it Computer Science and call it engineering.
  115.  
  116. Machine code is important, CS graduates should know how to build compilers and
  117. processors.
  118.  
  119. --
  120.  
  121. Phill Hallam-Baker
  122.