home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #27 / NN_1992_27.iso / spool / comp / lang / cplus / 16485 < prev    next >
Encoding:
Text File  |  1992-11-17  |  19.7 KB  |  546 lines

  1. Newsgroups: comp.lang.c++
  2. Path: sparky!uunet!charon.amdahl.com!pacbell.com!ames!saimiri.primate.wisc.edu!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!pacific.mps.ohio-state.edu!linac!att!att!dptg!ucs!skdutta
  3. From: skdutta@ucs.att.com (Saumen Dutta)
  4. Subject: C++ Product List - Version 2.04 - Part 7/8
  5. Message-ID: <1992Nov18.023037.822@ucs.att.com>
  6. Organization: AT&T Universal Card Services, Jacksonville FL
  7. Date: Wed, 18 Nov 1992 02:30:37 GMT
  8. Lines: 536
  9.  
  10. 3.16.  USL C++ Standard Components
  11. _ __   ___ _   ________ __________
  12.  
  13. +    Platform: SunOS and  System  V.  Works  with  AT&T  C++
  14.  
  15.      Compiler 3.0.
  16.  
  17. +
  18.  
  19.      Corporate Headquarters:
  20.      UNIX System Laboratories, Inc.
  21.      190 River Road, Summit,
  22.      NJ, 07901, USA
  23.      Telephone: +1-800-828-UNIX Prompt #2
  24.      or +1-908-522-6000
  25.  
  26.      European Headquarters:
  27.      UNIX System Laboratories Europe Ltd.
  28.      International House,
  29.      Ealing Broadway
  30.      London W5 5DB England
  31.      Telephone: +11-44-81-587-7711
  32.  
  33.      Asia Pacific Headquarters:
  34.      UNIX System Laboratories Pacific Ltd.,
  35.      No1 Nan-oh Bldg.,
  36.      Nishi-Shimbashi, Ninato-ku
  37.      Tokyo 105 Japan
  38.      Telephone: +81-3-3431-3670
  39.  
  40. +    A collection of Libraries and Tools for C++. Makes  use
  41.      of templates in the class library.
  42.  
  43. +    Information provided by Paul Fillinich (paulf@usl.com)
  44.  
  45. 3.16.1.  Introduction
  46. _ __ _   ____________
  47.  
  48.      UNIX System Laboratories offers the C++  Standard  Com-
  49. ponents,  a  collection  of general purpose programming rou-
  50. tines and tools which promote greater efficiency and produc-
  51. tivity  for  the  C++ programmer. This product includes com-
  52. ponents that can be used in virtually any  application  han-
  53. dling some low-level aspect of programming which in C or C++
  54. tends to be tedious and error-prone.  By taking care of  the
  55. common,  low-level  aspects of computing, they give program-
  56. mers more time to focus on the application.
  57.  
  58.      In addition to the components, a variety of  tools  are
  59. offered  which aid in the use of both the components as well
  60.  
  61. as the C++ Language System. Included in this offering  is  a
  62. tool for utilizing the templates feature of the language and
  63. a tool which will aid  in  incorporating  other  programming
  64. environment tools into the C++ Language System.
  65.  
  66. 3.16.2.  Features
  67. _ __ _   ________
  68.  
  69.      General Purpose - Reusable for applications  and  other
  70. library  routines providing real cost savings in development
  71. and test time and maintenance costs.
  72.  
  73.      Designed  for  the  efficiency  which  C++  programmers
  74. demand  -  Small standalone non-hierarchical components pro-
  75. vide for greater  compile  and  run  time  efficiency.   The
  76. smaller code size results in greater efficiency in computing
  77. resource usage.
  78.  
  79.      USL C++ Standard Components are designed for  the  AT&T
  80. standard  for  C++.  This  design criteria results in a high
  81. level of confidence that the product  works  well  with  the
  82. many  derivative  USL  C++  Language  System  product  which
  83. abound.
  84.  
  85.      Tested and reliable, in production for over 2  years  -
  86. These  components  have been in use within Bell Laboratories
  87. within a wide range of applications.  This maturity  results
  88. in lowering the risk of the use in critical applications.
  89.  
  90.      Well documented - A thorough reference  manual  coupled
  91. with  an extensive tutorial provide the end user with a jump
  92. start on productive use of the components without  extensive
  93. training.  For resellers, it is easier for producing quality
  94. documentation for a shrink wrapped product.
  95.  
  96.      Built to meet "Real World" needs -  Production  proven,
  97. applicable  to any application, useful in every application,
  98. the C++ Standard Components provide a  high  return  on  the
  99. investment.
  100.  
  101. 3.16.3.  Components
  102. _ __ _   __________
  103.  The classes provided by the library are several,  and  they
  104. are listed here:
  105.  
  106.      Included in the C++ Standard Components are the follow-
  107. ing components:
  108.  
  109.      Args - a set of facilities providing more  natural  and
  110. convenient access to UNIX command line options and arguments
  111. than typical command line parsers.
  112.  
  113.      Bits - extends built-in support for bit manipulation to
  114. arbitrary-length  bitstrings.  It also allows easy access to
  115. individual bits and provides additional operations  such  as
  116. concatenation.
  117.  
  118.      Blocks - are like built-in arrays,  except  that  their
  119. size  can  be  adjusted dynamically. Using Blocks eliminates
  120. many of  the  errors  programmers  make  when  working  with
  121. adjustable-size data structures.
  122.  
  123.      Block Algorithms - 90 highly efficient  algorithms  for
  124. operating  on  contiguously  stored  data  (can be used with
  125. either arrays or Blocks) including algorithms for searching,
  126. sorting,  inserting,  partitioning, generation, copying, and
  127. removing.
  128.  
  129.      Fsm - offers a method  of  specifying  program  control
  130. flow  that is useful in a wide variety of applications. Pro-
  131. grammers define "states" and "transitions" among states that
  132. are "fired" by specific "inputs."
  133.  
  134.      Graphs - three classes that can  be  used  to  maintain
  135. arbitrary  relationships between arbitrary entities.  Useful
  136. for semantic modeling and other "network" applications.
  137.  
  138.      Graph Algorithms -  Several  of  the  most  fundamental
  139. algorithms  for operating on Graphs, including breadth-first
  140. and depth-first searching, cycle and component detection.
  141.  
  142.      ipcstream - specializes the standard  I/O  architecture
  143. (iostream) to interprocess communication between clients and
  144. servers.  Clients and servers communicate by writing  to  or
  145. reading from streams.
  146.  
  147.      Lists - are doubly-linked lists.  Since pointer manipu-
  148. lation  and node allocation are handled automatically, using
  149. Lists eliminates another major source of programming errors.
  150.  
  151.      Maps - are like arrays, except that the subscripts  can
  152. be  non-integral types such as character strings (similar to
  153. associative arrays in AWK).
  154.  
  155.      Objections - are a kind of "error object" that  can  be
  156. "raised" by one piece of code and "handled" by another (like
  157. UNIX "software signals"). Library components use  Objections
  158. to inform clients of errors.
  159.  
  160.      Path - a set of facilities for manipulating  UNIX  path
  161. names  and  UNIX search paths.  Facilities include automatic
  162. path canonicalization,  path  relativization,  wildcard  and
  163. tilde  expansion,  path  completion, and searching in search
  164. paths.
  165.  
  166.      Pools - improve the  runtime  performance  of  programs
  167.  
  168. which  allocate and deallocate many objects of the same type
  169. (for example,  Lists  use  Pools  internally  for  obtaining
  170. nodes).
  171.  
  172.      Regex - a set of facilities providing a consistent  and
  173. enhanced  interface to the Section 3 regular expression com-
  174. pilation and matching routines (re(3), regcmp(3),  regex(3),
  175. or regexp(3), depending on the version of UNIX running).
  176.  
  177.      Sets - three unordered homogeneous collection  classes:
  178. Sets, Bags, and pointer sets.  Provides the usual insertion,
  179. removal, membership, algebraic and relational operators  and
  180. iterators.
  181.  
  182.      Stopwatch - can be used for timing critical sections of
  183. code during the "performance tuning" phase of development.
  184.  
  185.      Strings  -  are  variable-length   character   strings.
  186. Strings  offer  an  efficient alternative to null-terminated
  187. character arrays and their associated  C  library  functions
  188. (strcpy,  strcmp,  etc).   Strings  have  natural syntax and
  189. semantics; for example, to  concatenate  strings  x  and  y,
  190. write x+y.
  191.  
  192.      Strstream - specialize the  standard  I/O  architecture
  193. (iostream) to in-core formatting, where the source or target
  194. is a String.
  195.  
  196.      Symbol - unique identifiers based on character  strings
  197. with efficient tests for equality and ordering.
  198.  
  199.      Time - consists of three related abstractions for deal-
  200. ing  with  time  in computer programs: Time (absolute time),
  201. Duration (time difference)  and  Place  (geographical  loca-
  202. tion).
  203.  
  204. 3.16.4.  Tools
  205. _ __ _   _____
  206.  
  207.      In addition to  the  above  components,  the  following
  208. tools are also made available as part of this release:
  209.  
  210.      demangle - Demangle demangles  all  the  various  names
  211. strewn  throughout  each of the object files in the argument
  212. list.  This enables the various  C  tools   such  as  nm(1),
  213. dbx(1),   gprof(1),  and  others  to  produce  results  with
  214. pleasant identifier names.
  215.  
  216.      freestore -  Freestore  is  a  C++  symbolic  freestore
  217. manager which contains routines that let the programmer view
  218. the contents of the freestore symbolically during  execution
  219. of a C++ program.  They are normally called "by hand" by the
  220.  
  221. programmer from within a debugger but since they are  linked
  222. in  as part of the application code, they can also be called
  223. from the program itself.
  224.  
  225.      G2++ - G2++ provides a method for  structuring  records
  226. for messages used
  227.  
  228.      for interprocess  communication  or  records  used  for
  229. long-term  data  storage.   I/O  routines  are available for
  230. reading and writing G2++ records from a  C++  program:  G2++
  231. typed  I/O  routines.   These  routines are generated by the
  232. G2++ compiler.
  233.  
  234.      hier - Hier produces the inheritance hierarchy for  the
  235. C++  source code contained in the given collection of files.
  236. The output language can be any of "ps" (postscript),  "dag",
  237. "pic", "tex", or "dvi".
  238.  
  239.      publik - Publik prints the public portions of all class
  240. definitions  contained,  directly or indirectly, in the list
  241. of input files.
  242.  
  243. 3.16.5.  Documentation
  244. _ __ _   _____________
  245.  
  246.      C++ Standard Components Programmer's Manual
  247.  
  248.      C++ Standard Components Programmer's Guide
  249.  
  250.      Getting Started
  251.  
  252. 3.17.  SockStream - A Library for using sockets
  253. _ __   __________   _ _______ ___ _____ _______
  254.  
  255. +    Writen by: Mayan Moudgill (moudgill@cs.cornell.edu)
  256.  
  257.      Anonymous ftp from host ftp.cs.cornell.edu in directory
  258.      pub/sockets.
  259.  
  260. +
  261.  
  262.      The C++ Socket Stream Library was  developed  with  two
  263.      aims  in mind -- to provide an iostream-based interface
  264.      for sockets, and to facilitate using the  event  driven
  265.      features  provided  by  BSD-sockets  (i.e.  SIGURG  and
  266.      SIGIO).
  267.  
  268.      Both have been accomplished.  Included are 3 demo sets.
  269.  
  270.      Also included are an efficient interface to fd_set  and
  271.      select.
  272.  
  273. +    Information         provided          by          Mayan
  274.      Moudgill(moudgill@cs.cornell.edu)
  275.  
  276. 4.  Comments
  277. _   ________
  278.  
  279.      From: jcc@gna.axis-design.fr (Jean-Christophe Collet)
  280.  
  281. Anyway, I did a lot of work with InterViews and I had a look
  282. to  NihLib.   I  Highly  recommend  InterViews 3.0 but found
  283. NihLib rather unusable (it's a very big tree while  we  need
  284. more often a lot of small trees).
  285.  
  286. One very, VERY, important criteria of a class library is its
  287. documentation.   A  very good library without a proper docu-
  288. mentation is very hard to use (if not useless). There is  no
  289. need  for  the  documentation to be thick and verbose but it
  290. should gives all the info you need to use the class.
  291.  
  292. Then, there is reuse... (ako "how easy is  it  to  derive  a
  293. class ?")
  294.  
  295. InterViews is a VERY good example of  a  good  library  with
  296. appropriate doc.
  297.  
  298.      From: fig.citib.com!kpt@fig.citib.com (Kevin P. Tyson)
  299.  
  300. I  am  in  the  process  of  reviewing/selecting  C++  class
  301. libraries  for  our shop.  We have reviewed two todate.  The
  302. Booch Components and Tools.h++.  We started out by deciding,
  303. loosely,  what  our  requirements are.  They major ones boil
  304. down to: (1) High quality commercial support is very  impor-
  305. tant  to  us.  (2) Support for multi-threaded programming is
  306. only slightly less important.  (3) Sophsiticated and  exten-
  307. sible memory management support is our third requirement.
  308.  
  309. We are a DCE/ENCINA shop and this is  what  has  driven  our
  310. requirements.   We  do  distributed  transaction  processing
  311. based applications.  Someone who does scientific programming
  312. will  have  different  requirements  and  someone working on
  313. parallel processors will have their own requirements.
  314.  
  315. The next libraries we intend to examine are COOL and the USL
  316. C++  Components  library.   So  far  Booch  meet  the  three
  317. requirements listed above but was much  too  low  level  and
  318. lacked  good  documentation.  Tools.h++ could be extended to
  319. meet our thread safe and memory management requirements, but
  320. that  would  have made support difficult as it would require
  321. modifying their source code.
  322.  
  323.      From: eyckmans%imec.be@zimec.be
  324.  
  325. In article <p4fieINN7si@agate.berkeley.edu>, you write:
  326.  
  327. |> Now, has anyone actually used COOL and would you have any
  328. idea why the
  329. |>   authors expressed reservations about it's quality?  How
  330. does it compare
  331. |>   with other public domain libraries?  Are there any good
  332. ones out there
  333. |>   that you would like to boast about?
  334.  
  335. I have not used COOL (yet). As a matter of fact, I have  not
  336. yet  actively  used any of the libaries mentioned below, but
  337. here goes anyway...
  338.  
  339.          COOL
  340.          ====
  341.  
  342.            advantages
  343.            ----------
  344.            - uses templates
  345.            - uses exceptions
  346.  
  347.            disadvantages
  348.            -------------
  349.            - COOL templates are not 100% ARM conformant
  350.            - no garbage collection support at all
  351.            - common root class (Smalltalk)
  352.            - COOL uses an exception implementation which is not even close
  353.              to the ARM
  354.  
  355.            remarks
  356.            -------
  357.            - I have not yet tried to compile it with DEC C++ v1.0.
  358.            - I think that the main objection the COOL authors have against
  359.              it, is that they feel that their class hierarchy is not optimal.
  360.              (Almost) all COOL classes either directly or indirectly inherit
  361.              from a common root class called Generic. In their documentation,
  362.              the authors state that if they were to redo it, they would
  363.              rather go for a forest of base classes.
  364.  
  365.          NIH
  366.          ===
  367.  
  368.            advantages
  369.            ----------
  370.            - used in many applications, and therefor thoroughly tested
  371.  
  372.            disadvantages
  373.            -------------
  374.            - no garbage collection support at all
  375.            - no templates
  376.            - no exceptions
  377.            - common root class (Smalltalk)
  378.  
  379.            remarks
  380.            -------
  381.            - I have not yet tried to compile it with DEC C++ v1.0.
  382.  
  383.          LEDA
  384.          ====
  385.  
  386.            advantages
  387.            ----------
  388.            - well designed set of data types
  389.            - looks as if it should be very efficient
  390.            - uses some template-like construct
  391.  
  392.            disadvantages
  393.            -------------
  394.            - no exceptions
  395.            - LEDA `templates' are not even close to the ARM
  396.            - use is restricted to "research and education"
  397.            - use is not for free (but it's cheap)
  398.            - I cannot possibly get it to compile with DEC C++ v1.0
  399.  
  400.          OATH
  401.          ====
  402.  
  403.            advantages
  404.            ----------
  405.            - garbage collection comes "for free"
  406.            - focuses on a how to implement classes, instead of on yet
  407.              another set of classes a set of classes
  408.  
  409.            disadvantages
  410.            -------------
  411.            - common root class (Smalltalk)
  412.            - no templates
  413.            - no exceptions
  414.            - garbage collection comes "for free"
  415.            - nobody can possibly get it to compile with DEC C++ v1.0
  416.              without major modifications
  417.  
  418.      From: eyckmans%imec.be@imec.be
  419.  
  420. Hello,
  421.  
  422. First of all, let me start by giving you a bit of background
  423. information  on  what my organisation is (and intends to be)
  424. doing. This will allow you to read my answers to your  ques-
  425. tions in the correct context.
  426.  
  427. +    IMEC is a research institute focusing on  the  (automa-
  428.      tion  of the) design of VLSI chips. Part of the support
  429.      we offer to the people who are doing research into  the
  430.      area  of  high level synthesis, currently consists of a
  431.      C++ libary, written on top of NIH. At the moment,  this
  432.      libary  is  being  redesigned from scratch (for various
  433.      reasons), and this is where I (as  a  software  expert)
  434.      enter the picture. I should also add that we have to be
  435.      able to distribute source code which ideally should run
  436.      on  different  types of hardware. As you can see, using
  437.      commercial class libraries is somewhat out of the ques-
  438.      tion (although that may change).
  439.  
  440. +    So, one of the many things I am doing now, is to inves-
  441.      tigate  what  C++ libaries are available to build upon,
  442.      and whether they at least partially fit our  needs.  My
  443.      problem  is  that,  although  I do have some experience
  444.      with OO, I have never used C++ for "real applications",
  445.      so  my current knowledge of C++ is limited (but growing
  446.      rapidly).
  447.  
  448.      Having said all that, here is what you are really after
  449.      :
  450.  
  451.      > How is it the various libraries won't with with DEC's
  452.      C++?  Are they non
  453.      > standard C++ or do they just not comply with C++ 3.0?
  454.      How do you know
  455.      > that they do not work with DEC C++?
  456.  
  457.      To my knowledge, DEC C++ v1.0 is *very* ARM  compliant,
  458.      while  most other C++ compilers are not. This is one of
  459.      the reasons why we are switching to the  DEC  compiler.
  460.      Here is a list of what we have tried to compile with it
  461.      until now :
  462.  
  463. -    InterViews
  464.  
  465. -    LEDA
  466.  
  467. -    OATH
  468.  
  469. -    SPOOK (don't ask)
  470.  
  471. -    some of our own tools
  472.  
  473.      Basically, in all cases we have discovered things which
  474.      are  not allowed by the ARM, but somehow did compile on
  475.      previous compilers (g++ as well as various  derivatives
  476.      of cfront 2.0 and 2.1). Some of these were easy to fix,
  477.      but some weren't. As a matter of fact, the  SPOOK  tool
  478.  
  479.      set  is  the  only thing in the above list which, after
  480.      modification, did make it all  the  way  to  executable
  481.      code.
  482.  
  483.      > Are these notes impressions that you've  gotten  from
  484.      people who have used
  485.      > these various libraries?
  486.  
  487.      That depends on what libary we are  talking  about,  so
  488.      let's make a list :
  489.  
  490.               NIH  : As I have said, this has been used in the previous version of
  491.                      our Synthesis Backbone. In addition, I picked up some info on
  492.                      comp.lang.c++.
  493.  
  494.               COOL : This has not been used at our site, but I have received some
  495.                      info from other people (isn't usenet great?). I also looked at
  496.                      the manual.
  497.  
  498.               LEDA : I have looked at the manual, and have actually tried to compile
  499.                      it with DEC C++ v1.0.
  500.  
  501.               OATH : I have looked at the manual, and have actually tried to compile
  502.                      it with DEC C++ v1.0.
  503.  
  504.      > Do you intend to get involved with one of these pack-
  505.      ages in the future?
  506.  
  507.      I guess I've already answered this in my introduction.
  508.  
  509.      > Does this mean that you've tried to get  it  to  work
  510.      with cxx but it
  511.      > won't compile?  Or do you just  know  that  it  won't
  512.      work becuase it uses
  513.      > non standard C++?
  514.  
  515.      This question was about LEDA,  so  here  are  the  gory
  516.      details of what happened :
  517.  
  518. 1.   When compiling LEDA in  its  pure  form,  the  compiler
  519.      threw lots of warning and error messages at me.
  520.  
  521. 2.   I was able to solve most (but not yet  all)  of  these,
  522.      but  now  each compilation ends with the following mes-
  523.      sage (provided that it does not report syntax errors) :
  524.  
  525.              11, fatal: A bugcheck occurred in the compiler.
  526.  
  527. This is true even for the smallest of files,  so  I  suspect
  528. there  must be some very ugly stuff in the header files, but
  529. I have no idea what this might be.
  530.  
  531. Because of this, I just gave up. So I can't tell you whether
  532. the remaining syntax errors are solvable or not.
  533.  
  534. While I'm at it, allow me to elaborate a little  bit  on  my
  535. statement  about compiling OATH with DEC C++ v1.0. The first
  536. time round, the compiler flagged lots of errors. I was  able
  537. to  solve this, but than I ran into an illegal downcast upon
  538. which, unfortunately, a  large  part  of  the  OATH  library
  539. depends.  This  is why I said that major changes to the code
  540. would be needed. However, after sending my mail, I  realized
  541. that  there  is a small possibility that this second problem
  542. (although present in the code from the beginning) was  actu-
  543. ally  activated  by  the  changes I made. So it looks like I
  544. will have to try again.
  545.  
  546.