home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #18 / NN_1992_18.iso / spool / comp / sys / transput / 926 < prev    next >
Encoding:
Internet Message Format  |  1992-08-14  |  4.4 KB

  1. Path: sparky!uunet!mcsun!uknet!harrier.ukc.ac.uk!eagle.ukc.ac.uk!wgd
  2. From: wgd@ukc.ac.uk (W.G.Day)
  3. Newsgroups: comp.sys.transputer
  4. Subject: Re: occam
  5. Message-ID: <1462@eagle.ukc.ac.uk>
  6. Date: 14 Aug 92 14:48:49 GMT
  7. References: <2490@news.cerf.net>
  8. Reply-To: wgd@ukc.ac.uk (Warren Day)
  9. Organization: Computing Lab, The University, Canterbury, Kent. CT2 7NF, UK
  10. Lines: 122
  11.  
  12. In article <2490@news.cerf.net> jcbhrb@nic.cerf.net (Jacob Hirbawi) writes:
  13.  
  14. >Elegant tool for expressing parallelism? definitely.
  15. >Elegant tool for expressing everything else? definitely not.
  16.  
  17. True, but parallelism is not the only thing it is good at expressing.
  18.  
  19. >The Occam syntax leaves a lot to be desired:
  20.  
  21. >(1) It is not free formatted; I thought the days of counting columns were over.
  22.  
  23. Column counting is, the formatting is done elegantly in occam.  One space is not
  24. enough indentation visually, three is too much when one has lots of indenting.
  25.  
  26. Formatting a program in this way is good as one uses spacial relationships to indicate
  27. the programs structure.  The must be some advantage to the fact that spacial
  28. arrangements are processed by the right hand side of the brain, standard programming
  29. logic by the left.
  30.  
  31. Formatting a language in this way is also good as one can use it to indicate
  32. information to the compiler, which cuts out the need of lots of end, od, esac, }
  33. and fi keywords.
  34.  
  35. >(2) I fail to see the advantage of having no operator hierarchy or default 
  36. >    data types:
  37.  
  38. >    why write this:
  39.  
  40. >       (1.0 (REAL32) + (2.0 (REAL32) * 3.0 (REAL32))) - 4.0 (REAL32)
  41.  
  42. >    and count brackets when all I'm trying to do is:
  43.  
  44. >       1.0 + 2.0*3.0 - 4.0
  45.  
  46. My experience has lead me to do things like this,
  47.  
  48.   {{{ 1 + 2*3 - 4.0
  49.   ( 1.0(REAL32)  +  (2.0(REAL32) * 3.0(REAL32)))  -  4.0(REAL32)
  50.   }}}
  51.  
  52. One can add to readability by just adding a spaces (like before the 1) over just
  53. leaving things in the most natural way (like before the 2).
  54. The removing of the space between the zero and the open brackets bonds the
  55. number and the type much better visually thus they read as the one object they are.
  56.  
  57. By the way, the occam compiler (the one here at any rate) constant folds the above
  58. to 3.0(REAL32).
  59.  
  60. Occam's approach to typing like this is hard on the fingers and brain sometimes, but
  61. it does make look at what you want the machine to do.  I once realised that although
  62. the obvious way to do something was,
  63.  
  64.   REAL64 hello, there:
  65.   INT world:
  66.   ((REAL32 ROUND hello) * (REAL32 ROUND there)) + (REAL32 ROUND world)
  67.  
  68. it was faster to do,
  69.  
  70.   REAL32 ROUND (hello * there) + (REAL64 ROUND world)
  71.  
  72. although I think C gets it right in this case, it may not in general and in a
  73. critical loop its nice to have full control.
  74.  
  75. No the above doesn't answer your point about the advantages, but others have,
  76. here I have decided giving out experience and ideas is more advantageous.
  77.  
  78. >(3) Is it really elegant to write this:
  79.  
  80. >     IF
  81. >       var1 < 1.0 (REAL32)
  82. >         SEQ
  83. >           var1 := 2.0 (REAL32)
  84. >           var2 := 2.0 (REAL32)
  85. >       TRUE
  86. >         SKIP
  87.  
  88. >     instead of  If( var1 < 1.0 ) Seq{var1 = 2.0;var2 = 2.0;}
  89.  
  90. As others have said, yes.  The occam IF is very elegant in many ways.
  91.  
  92. Another way to write the above is,
  93.  
  94.   IF
  95.     var1 < 1.0 (REAL32)
  96.       var1, var2 := 2.0(REAL32), 2.0(REAL32)
  97.     TRUE
  98.       SKIP
  99.  
  100. Perhaps the multiple assignment isn't more readable, I don't think my personnel taste
  101. prefers it, but its easier to type and were all lazy occasionally.
  102.  
  103. Jan's comment about wanting
  104.  
  105. TRUE
  106.   STOP
  107.  
  108. as the default is a common one.  I wanted it too until I was told why.  I think
  109. it was to catch and stop sloppy programming (not that any of us do that, all of
  110. our programs are bug free aren't they:-).  There might be a case the programmer
  111. has overlooked.
  112.  
  113. >> On a similar note the TDS, like every new and elegant code managing tool;
  114. >> once one is fluent with it's workings, has its own continually growing set
  115. >> of advantages over traditional editors.
  116.   
  117. >I think I'll complain about this one too :-)
  118.  
  119. >My objection is why?. Who needs a new editor?; I mean just how many 
  120. >ways can you do a cut-and-paste operation!.
  121.  
  122. The important issue is that of abstraction.  Making a large thing managable by
  123. humans.  Also as we get more experience at writing editors we get better at
  124. making the c-n-p operations easier to use and more intuitive to the first time
  125. user.
  126.  
  127. >I like to have more direct control over the files on my disk.
  128.  
  129. Yes, it needs to be better at actually deleting files.
  130.  
  131. >Jacob Hirbawi
  132.  
  133. Warren
  134.