home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #3 / NN_1993_3.iso / spool / comp / lang / forth / 4038 < prev    next >
Encoding:
Text File  |  1993-01-28  |  10.2 KB  |  212 lines

  1. Newsgroups: comp.lang.forth
  2. Path: sparky!uunet!ukma!netsys!decwrl!csus.edu!netcom.com!hamish
  3. From: hamish@netcom.com (Just Another Deckchair on the Titanic)
  4. Subject: Re: Forth and Adaptation
  5. Message-ID: <1993Jan29.025115.29786@netcom.com>
  6. Organization: Pandemonia PLC
  7. References: <28370@sybase.sybase.com> <1k9hjbINN29a@charnel.ecst.csuchico.edu>
  8. Date: Fri, 29 Jan 1993 02:51:15 GMT
  9. Lines: 201
  10.  
  11. In article <1k9hjbINN29a@charnel.ecst.csuchico.edu> fish@ecst.csuchico.edu (Kevin Haddock) writes:
  12. >In article <28370@sybase.sybase.com> hamish@sybase.com (Just Another Deckchair on the Titanic) writes:
  13. >>[my stuff deleted]
  14.  
  15. >>So why *hasn't* Forth adapted? Why *don't* we see armies of Forth
  16. >>programmers out here in the Real World (tm)?
  17.  
  18. >Well, as if I didn't already answer that question with my previous post
  19. >(which you quoted) how about these 3 letters:  A.T.T.?  Is that
  20. >a good enough reason?
  21.  
  22. So Forth can't stand on its own merits?
  23.  
  24. >> Why doesn't a company like
  25. >>(e.g.) Sybase use Forth in applications that would seem to be ideal for
  26. >>Forth?
  27.  
  28. >Is Sun a real enough company for you? What about Federal Express?
  29. >How many others are using Forth and not fessing up to it?  I've
  30. >heard Apple has used it for some of thier internal projects (maybe
  31. >it's hiding in some of thier roms like Sun?)  
  32.  
  33. Yes - and what proportion of each of those companies' products are
  34. written using Forth?
  35.  
  36. <>What makes something a "fundamental 'real-world' application"?
  37. <>And why are so many of them being written in something like Smalltalk
  38. <>(the Forth for the nineties...) rather than Forth?
  39.  
  40. <Smalltalk?!?  How about the multi-megabyte overhead of Smalltalk?
  41. <How about it's inefficiency?  I'll agree that with specialized hardware
  42. <Smalltalk might be an attractive option for low production applications
  43. <and/or exploratory (prototype) work.  I think you are talking apples
  44. <and oranges here.  With an OO and GUI layer Forth could do what
  45. <Smalltalk can do (although you wouldn't necessarily be forced to
  46. <use it).  Can you say the opposite is true?  Forth is a FULL BANDWIDTH
  47. <language.  You can run while you compile, you can extend it into
  48. <any other language (even a user level lexicon) easily.  You can
  49. <assemble, inline code, interpret, macro, etc.... What more is there
  50. <to say?
  51.  
  52. Little except that your point about all those companies using Forth
  53. also, of course, holds for Smalltalk. You seem to have almost no idea
  54. about Smalltalk and its potential - you sound like the sort of person
  55. who knocked Forth a decade ago. My company, like many others, uses
  56. Smalltalk extensively - we just don't make a big thing about it. My
  57. company lives or dies by performance, memory usage, and portability.
  58. That's *why* we use Smalltalk and not Forth.  Oh, and we're not talking
  59. toy applications here...
  60.  
  61. <What makes something a fundamental real-world application in my book
  62. <is something that has to get the job done in the real-world with
  63. <a minimum amount of monkey motion, both on the computer's and the
  64. <programmer's part.  This means not having many megabytes of useless
  65. <overhead and wasted clock cycles.  In most applications it is
  66. <cheaper just to throw a lot of hardware and 'tools' at the
  67. <problem.  But what happens when you want to replicate that application
  68. <many times over, or when that application pushes the envelope of what
  69. <hard/software is able to do?  It is then that the everything and the
  70. <kitchen sink approach falls apart.  The only snag is that less hardware
  71. <is cheaper and more reliable (not as much to break down).  Less software
  72. <is easier to support and allows simpler, more reliable programs.
  73.  
  74. Indeed. But all these comments are, in my experience,
  75. language-independant. Since we need to "replicate that application many
  76. times over", we use portable, *standardized*, languages like C or C++.
  77. Once again, real-world performance is rarely much to do with langauge
  78. issues, and often more to do with algorithms, I/O models, and
  79. suchlike.
  80.  
  81. >>There's more to adaptation than just having a nifty *language*. It's
  82. >>not language adaptability that's all important - rather, it's the
  83. >>adaptability of things (applications, modules, etc) built in that
  84. >>language that's important, and the adaptability of the programming
  85. >>tools and environment.
  86. >
  87. >I disagree wholeheartedly.  I just finished a stint with a language/
  88. >environment that 'integrated' everything you needed.  The whole
  89. >time I was wishing I could use a minimalist Forth.  Believe me,
  90. >the language's adaptability is ALL IMPORTANT!  That is the WHOLE
  91. >FORTH CONCEPT.  A small set of really tight tools that fit
  92. >together easily rather than a bunch of loose tools stuck together
  93. >with chewing gum and bailing wire.
  94.  
  95. A good description of the original aims of Unix, BTW. Again, you're
  96. saying nothing, nothing at all, about anything other than Forth - your
  97. comments on the advantages of Forth hold for many of the langauges I
  98. use. On the other hand, you seem to have missed the point by a wide
  99. margin - in the Real World (tm), the ability to work with
  100. vendor-supplied tools is a life or death issue commercially. You
  101. typically get little choice. Langauge adaptability, per se, is only a
  102. small part of it.
  103.  
  104. >This project was
  105. >a nightmare because of all the 'vendors' whose binary layers did
  106. >nothing but get in the way.  They did more work on neophyte user
  107. >interface and protecting thier asses than they did on helping me
  108. >get my job done.  A good vendor that focuses on providing a tight
  109. >system with a lot of attention on performance and iterative
  110. >loop and one who provides SOURCE CODE is on the programmers side.
  111.  
  112. That's true. Success in the Real World, though, goes largely to those
  113. who are on the *customer's* side.
  114.  
  115. >>Even more important is the ability to let the vendors do as much of
  116. >>your work as possible - why reinvent the wheel? If a system supplies a
  117. >>set of networking and (say) windowing functions as a C library or C++
  118. >>or Smalltalk class hierarchy, you should just plug into these for the
  119. >>services (and generally can in any of the languages I work with).
  120.  
  121. >I don't disagree with letting the vendors do most of the work.  I just
  122. >question thier ability to be able to debug every line of code that
  123. >I might want to use.  I appreciate thier contribution unless it turns
  124. >out to be a trojan horse (which is usually the case w/o source).
  125.  
  126. This is the crux of the matter - I'm simply pointing out that even an
  127. old Forth bigot like myself can't justify using Forth for "obvious"
  128. applications when we can *not* use what the vendor has supplied (at
  129. least not in any standard way). IMO, and in my experience, very few
  130. vendor supplied packages turn out to be "trojan horse"; they are
  131. usually an absolutely essential part of getting the job done.  Usually,
  132. using these facilities is simply not negotiable. The customer calls the
  133. tunes....
  134.  
  135. >>Similarly, interoperability is a huge issue - if I can't work in all
  136. >>three of the languages together on the same (large) application or
  137. >>suite of applications, then I'm screwed.
  138.  
  139. >I still think performance is still the biggest issue.
  140.  
  141. So do we - that's why we use Smalltalk (seriously). Look, there's
  142. infintely more to real world performance in many applications than pure
  143. language "efficiency", whatever that means.
  144.  
  145. >If I have
  146. >enough performance I can write simpler programs and I don't need
  147. >so much interoperability.
  148.  
  149. I'm afraid I can't make sense of this at all - are you saying that
  150. interoperability is something that gets traded for performance?
  151. Interoperability is simply an absolutely essential requirement for
  152. many large real-world applications. It's not something you get to pick
  153. or chose - if your client wrote something in (god help us) Ada, and
  154. that client wishes us to use that application, then interoperability
  155. isn't a tradeable option.
  156.  
  157. >I can use direct files instead of b+trees.
  158. >I can do brute force lookups instead of 'linear hashes', etc...
  159. >Performance is the art to which function can aspire.  Performance,
  160. >in the run-time, compile-time, and iterative loop is what counts.
  161.  
  162. Sure - sometimes. Often it's also a matter of how you got there - and
  163. other things way beyond your control. To reduce it to the above is,
  164. IMO, naive.
  165.  
  166. >Special purpose simple tools provide that.  General purpose
  167. >complex tools do not.
  168.  
  169. Indeed. But Forth isn't the only option here. Your description sounds
  170. a lot like Unix and C....
  171.  
  172. >>Similarly, if I can't easily use the system-supplied tools on my source
  173. >>code, then it's not even worth considering the language. The recent
  174. >>screens vs. files argument was classic - if a Forth source can't be
  175. >>made to look exactly like a normal text file to my tools (grep, SCCS,
  176. >>RCS, Envy, etc. etc. ad nauseam), then it's lierally worthless.
  177.  
  178. >Unix was invented to provide the adequate text processing for languages
  179. >with complex syntax and which did not compress well.  C provides some
  180. >level of compression (cpp, functions, terse operators, etc...) but not
  181. >to the level that Forth does.  I think that what I was trying to say
  182. >was that this 'compression' negates the need for most of the tools
  183. >you mentioned.  You are welcome to your opinion and I'd hope I'm
  184. >welcome to mine.  I personally try to make my code turn out looking like
  185. >state tables and charts so maintenance is not a real problem.
  186.  
  187. To you, maybe. Frankly, "compression" (did you mean terseness?) has
  188. little do with what I was saying, but even here, IMO, it's a red
  189. herring. Terseness is not an issue, one way or another; neither,
  190. within an order of magnitude, is code size - with a good code
  191. management system, it's not an issue to us (but compiled object size
  192. is). To say that terseness negates the need for good source code
  193. control systems, etc, is to say that large applications development,
  194. with large numbers of programmers, thousands of files, etc. is
  195. irrelevant. I somehow doubt it....
  196.  
  197. >>*Those* are the sort of things that are important in this little
  198. >>corner of the Real World (tm), where, frankly, even though I was once
  199. >>a Forth evangelist, I wouldn't even consider it for serious work
  200. >>now....
  201.  
  202. >So now you just come around to torpedo the rest of us?  Sounds like
  203. >you couldn't hack it to me.
  204.  
  205. "Torpedo"? Is Forth that sinkable? That much of an easy target? Oh,
  206. and yes, the word "hack" stands out like a sore thumb there (but you
  207. might not understand why, given the tone of your reply).
  208.  
  209.     Hamish
  210. -------------------------------------------------
  211. Hamish Reid   +1 510 596-3917   hamish@netcom.com
  212.