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

  1. Xref: sparky comp.edu:1479 comp.lang.fortran:3370 comp.lang.misc:2885 comp.arch:9165 sci.math:10859
  2. Path: sparky!uunet!usc!zaphod.mps.ohio-state.edu!darwin.sura.net!dtix!relay!apssgi.nswc.navy.mil!bwallet
  3. From: bwallet@apssgi.nswc.navy.mil (Brad Wallet)
  4. Newsgroups: comp.edu,comp.lang.fortran,comp.lang.misc,comp.arch,sci.math
  5. Subject: Re: Scientists as Programmers (was Re: Small Language Wanted)
  6. Message-ID: <1992Sep2.124117.1302@relay.nswc.navy.mil>
  7. Date: 2 Sep 92 12:41:17 GMT
  8. 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>
  9. Sender: news@relay.nswc.navy.mil
  10. Organization: Naval Surface Warfare Center
  11. Lines: 111
  12.  
  13. In article <Btx4vF.Jx6@mentor.cc.purdue.edu>, hrubin@pop.stat.purdue.edu (Herman Rubin) writes:
  14. |> In article <1992Sep1.115849.13522@relay.nswc.navy.mil> bwallet@apssgi.nswc.navy.mil (Brad Wallet) writes:
  15. |> >In article <1992Aug31.195540.13074@ctr.columbia.edu>, shenkin@avogadro.barnard.columbia.edu (Peter S. Shenkin) writes:
  16. |> 
  17. |>             .................
  18. |> 
  19. |> >As I have said previously, you are getting computer scientists and 
  20. |> >software engineers confused.  Software engineering is the discipline
  21. |> >concerned with writing good code.  Software engineers study the design
  22. |> >process, design philosophy, testing, life style management, reliability,
  23. |> >and all that other stuff that defines good code.
  24. |> 
  25. |> >Computer science compares to software engineering much as math and physics
  26. |> >compare to the various engineering fields.
  27. |> 
  28. |> Software engineering is not that relevant in general.  What is relevant is
  29. |> the translating of the problem to be computed into the collection of bits
  30. |> which the machine can understand to accomplish the task.  This involves
  31. |> 
  32. |>     Knowing the algorithmic processes which can be applied, their
  33. |>     strengths and weaknesses, and what happens to them on the particular
  34. |>     machine when they are translated using the available languages.
  35. |> 
  36. |>     Evaluating the costs of using the tools.
  37. |> 
  38. |> If a procedure can use some of the machine instructions and the languages
  39. |> available to the programmer cause code to run considerably slower because
  40. |> the languages cannot use those instructions, the languages are inadequate. 
  41. |> No amount of software engineering, or compiler optimization, and get around
  42. |> this.  It is this feature which can make major differences in the relative
  43. |> speeds of computing on different machines.
  44. |> 
  45. |> The CS curricula exascerbate the problem by indoctrinating the student in
  46. |> the attitude that the machine instruction set is not to be considered in
  47. |> normal programming.  The design people then continue the process by producing
  48. |> hardware manuals in which the description of the operations, and considerations
  49. |> for producing good code, is written so as not to use any structure, and thus
  50. |> takes several times as many pages, and is hard to understand.  And the only
  51. |> adequate language to use the machine is an assembler language with an 
  52. |> atrocious syntax.  Often the HLLs do not have convenient ways of including
  53. |> the instructions.
  54. |> 
  55. |> There can, and should, be interaction at compile time between the compiler
  56. |> and the programmer.  The compiler also should be able to suggest rearranging
  57. |> machine instructions, not just the output from HLLs.  The translation of 
  58. |> other HLL-type operations into machine code should be essentially the same
  59. |> as that of such standard operations as + and *.  These can be provided, and
  60. |> should.
  61. |> 
  62. |> Current software seems almost designed to prevent the user from doing anything
  63. |> the HLL designers did not think about.  Then hardware leaves out what even a 
  64. |> fairly intelligent user will use, which the software does not get at.  And so
  65. |> it goes.
  66. |> 
  67. |> What we are teaching the CS students, and even the software engineers, is 
  68. |> essentially the mistake made in teaching methods without understanding in
  69. |> mathematics and statistics.  Someone who has only learned a particular
  70. |> collection of methods is extremely unlikely to consider anything not in
  71. |> that particular bag of tricks.  Training is not education.
  72. |> -- 
  73.  
  74. I have to disagree on several points.  As an analyst, I understand the
  75. problem to be solved intimately.  I am going to provide formulations that
  76. solve the problem at hand.  I am going to give any constraints that are
  77. necessary.  I will not tell the software engineers how to implement the
  78. formulations.  That is up to them as long as they implement the equations
  79. and constraints that I have provided.  It is their responsibility to
  80. prove that they have implemented my formulations correctly.
  81.  
  82. I used to think that the software engineers needed to understand the
  83. math and physics of the problems being solved.  I am not so sure anymore.
  84. They have theirs hands full as it is.  No, I guess they need some familiarity
  85. with the material, but they do not need to be experts.
  86.  
  87. I was forced to do software engineering for a brief period.  Greatest 
  88. thing that I ever did.  First, it improved my ability to code.  This is
  89. very important if you do a lot of computational experiments.  I learned
  90. to write reusable code.  You would be surprised how useful this can be.
  91. I also learned to big into systems and understand how they were implemented
  92. and why.  I am now able to communicate better with the programmers.  I am
  93. a pretty good programmer because of the experience.  Anyone can be a good
  94. programmer.  Being a greater software engineer is what takes talent.  I
  95. think I would become bored doing this.  Let us be thankful some people like
  96. this.
  97.  
  98. You would be surprised how much software engineers now about the hardware,
  99. operating systems, and all that.  Little things like changing the order
  100. you search an array to match the compiler's implementation can really speed
  101. things up.  These people are professionals, they are sharp, and you shouldn't
  102. sell them short.
  103.  
  104. If things are fast enough, why do some of the stuff you suggest?  Hardware
  105. is cheaper.  Man power is $50 an hour.  Software engineers should and do
  106. write easy to test and easy to maintain code.  Besides, I put nothing
  107. past past optimizers.  If the optimizer can suggest away to improve the
  108. code, it should be able to verify that the change is mathematically correct
  109. and merely effect the binary.  Those computer scientist can be sharp cookies
  110. too.  I recall an article recently where a defense contractor was ordered
  111. to redo a system that had illegally done in assembly in Ada.  They did redid
  112. a part in Ada to prove it couldn't work.  The result was that the Ada ran
  113. faster and in less memory that the assembly.  Rewritting in Ada saved them
  114. enough time in testing to negate the time it took to redo the system.
  115.  
  116. -------------------------------------------------
  117. Brad Wallet                 Mathematician
  118. bwallet@relay.nswc.navy.mil Naval Surface Warfare Center
  119. (703)663-4950               (AVN)249-4950
  120. DSMAC - "Tomahawk's Eyes"
  121. "I can neither confirm nor deny that these opinions
  122. are entirely my own and may or may not reflect those
  123. of the US Navy." 
  124.