home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #20 / NN_1992_20.iso / spool / comp / edu / 1558 < prev    next >
Encoding:
Internet Message Format  |  1992-09-08  |  3.9 KB

  1. Xref: sparky comp.edu:1558 comp.arch:9255 comp.lang.misc:2955
  2. Path: sparky!uunet!gatech!purdue!mentor.cc.purdue.edu!pop.stat.purdue.edu!hrubin
  3. From: hrubin@pop.stat.purdue.edu (Herman Rubin)
  4. Newsgroups: comp.edu,comp.arch,comp.lang.misc
  5. Subject: Re: Scientists as Programmers (was Re: Small Language Wanted)
  6. Message-ID: <Bu64t4.B15@mentor.cc.purdue.edu>
  7. Date: 6 Sep 92 18:03:04 GMT
  8. References: <1992Sep3.112944.20996@dbsun.uucp> <Bu08uF.HBC@mentor.cc.purdue.edu> <amos.715786635@shum>
  9. Sender: news@mentor.cc.purdue.edu (USENET News)
  10. Organization: Purdue University Statistics Department
  11. Lines: 63
  12.  
  13. In article <amos.715786635@shum> amos@cs.huji.ac.il writes:
  14. >hrubin@pop.stat.purdue.edu (Herman Rubin) writes:
  15.  
  16. >>The present compilers translate such things as +, *, &, etc., into
  17. >>some version of assembler.  Why not allow the user to say how other
  18. >>operations will be similarly translated, and add them to the list?
  19. >>These operations often produce temporaries; why not tell the user
  20. >>how this is done, and let them be added to the list?  These would
  21. >>not really complicate the language design or the compiler, except
  22. >>insofar as precedence is affected.
  23.  
  24. >You want C++, then; or the GNU compilers, which do allow you to dive
  25. >into the compiler's source and create whatever language extensions you
  26. >wish to.  The problem is, you'll have no time left in which to do the
  27. >job originally intended...
  28.  
  29. I know that C++ does not have this capability.  There are other useful
  30. operations not conveniently defined in terms of the usual primitives.
  31. Among these are fairly simple operations such as getting the next bit,
  32. or getting the distance to the next 1, or even branch on overflow, 
  33. intended not as an exception, but as a common occurrence.  Also, 
  34. for operations like looking at the next bit, having some preparatory
  35. work done before it is needed in a loop, so that the pointers do not
  36. have to be continually checked.  But even standard Boolean operations
  37. are not always best defined in terms of the C primitives.
  38.  
  39. Someone asked why a particular machine had an instruction which was,
  40. in effect, z = max (0, a-b).  Why not?  How much does this add to the
  41. cost in hardware?  Now a compiler might recognize it, but a language
  42. designer, looking a "typical" code in other people's programs, would
  43. never see that there is another operation.
  44.  
  45. >The point is, we can use very simple and flexible meta-tools like
  46. >assembler or FORTH to create our own tools - and end up each using a
  47. >personal hand-tailored language, unique and non portable; or use a
  48. >standard tool which does implement some constructs efficiently and
  49. >portably, but never all we'd ever need.
  50.  
  51. Things like the above can often be portably written, but very little
  52. is completely portable other than character manipulation or exact
  53. integer arithmetic.  Even writing these portably might get the
  54. hardware designers to put back some of the features which are no
  55. longer present, like good fixed-point arithemetic, because the 
  56. language designers do not seem able to see the need for them.  
  57. These are features which cost little in hardware, but very much
  58. in software.  
  59.  
  60. Even the operations of + and * are not completely portable across
  61. machines, especially in floating point.
  62.  
  63. One of my students came up with the following, which is a much more
  64. common situation than most believe.  It is desired to read an element
  65. from a buffer location, with an interrupt if the buffer empties.  Now
  66. this is very much like reaching a cache page boundary, but a user
  67. program is needed to correct this exception.  Since the hardware 
  68. for handling this, and some of the software, is essentially already
  69. in place, could it not be extended?  With the present setup, only with
  70. considerable difficulty; at design time, easily.
  71. -- 
  72. Herman Rubin, Dept. of Statistics, Purdue Univ., West Lafayette IN47907-1399
  73. Phone: (317)494-6054
  74. hrubin@pop.stat.purdue.edu (Internet, bitnet)  
  75. {purdue,pur-ee}!pop.stat!hrubin(UUCP)
  76.