home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 14 Text / 14-Text.zip / SOM-OV.ZIP / SOM-OV.TXT
Text File  |  1992-09-23  |  6KB  |  113 lines

  1. SOM Overview
  2. ------------
  3.  
  4. SOM is a robust, language-neutral packaging technology for class
  5. libraries.  SOM is not a programming language.  One of the elements of
  6. SOM IS a language,--OIDL (or Object Interface Definition Language).
  7. OIDL is a description-language for specifying the external interface
  8. to a class.  OIDL is NOT a programming language; there is no way to
  9. implement a class with OIDL, or with SOM.  For that, you need to use a
  10. programming language, eg, C, C++, Smalltalk, Eiffel, FORTRAN, and a
  11. set of "SOM bindings."
  12.  
  13. These "SOM language bindings" may be formal or informal. A formal
  14. binding is one produced by a tool (such as the SOM Compiler).  This
  15. would be the typical type of SOM binding most programmers will be
  16. using.  An informal binding might be a hand crafted binding for some
  17. specialized use of SOM.
  18.  
  19. It is important to understand the relationship between SOM and the
  20. Workplace Shell.  SOM is a packaging technology.  The Workplace Shell
  21. is a product that is packaged using the SOM packaging technology.
  22. This is analogous to the relationship between some programming
  23. language, like C++, and some particular application programmed in that
  24. programming language.  The analogy breaks down a bit, because SOM is
  25. not a language, but the basic idea of the relationship between the
  26. tool and the product built using the tool is accurate.
  27.  
  28. Why do we say SOM is language-neutral?  Basically for the same reason
  29. that one says that the transport layer in a communications
  30. diagram is protocol-neutral.  That is, whether you use the network to
  31. run sessions, conversations, datagrams, or what-have-you, you need a
  32. way to ship the bytes across the wire without prejudicing their
  33. contents.  All of the higher-level protocols must at least agree on
  34. this mechanism.  Ultimately SOM is a mechanism, which was deliberately
  35. designed to be both rich enough to be capable of expressing a wide
  36. range of different OO semantics and also lean enough to be able to
  37. deliver high performance, so that a C++ class, packaged with SOM would
  38. be just as viable as an Objective-C or Object-REXX object.
  39.  
  40. If you think such a mechanism is unnecessary, consider this from an
  41. operating system context.  OOP is such an attractive paradigm that it
  42. is almost unreasonable to insist that a modern GUI-style operating
  43. system interface be built on any other basis.  But once you do decide
  44. to build your operating system using object technology, how do you
  45. keep it from becoming a single-language operating system?  One cannot
  46. affort to develop a large scale operating system which can only be used
  47. from one language regardless of how good one thinks that language is.
  48.  
  49. As we all know, large software systems and particularly operating
  50. systems experience considerable evolution over their lifetime.
  51. Unfortunately many OO languages turn out to be unpleasantly fragile
  52. when a change must be made to the implementation of a class.  Try
  53. changing the size of a C++ object and see how many binary client
  54. programs manage to remain unbroken.  As a packaging technology for
  55. classes SOM offers 4 specific degrees of freedom for class
  56. implementers that are guaranteed not to break client programs that are
  57. already compiled.  With SOM you may
  58.  
  59.     1. Add new methods to classes
  60.     2. Add, change, or delete instance variables
  61.     3. Insert new classes above your class in the inheritance
  62.        hierarchy
  63.     4. Relocate methods upward in the class hierarchy.
  64.  
  65. In other words, an implementer is free to make the very kinds of
  66. changes that evolving OO systems routinely exhibit WITHOUT BREAKING
  67. CLIENT BINARIES!  But SOM is not magic; it too offers design
  68. tradeoffs.  If you choose to make an instance variable public (so that
  69. it can be directly accessed by client programs), then you have also
  70. committed to making it a permanent part of your interface. But at
  71. least the decision to do so must be made deliberately.
  72.  
  73. So we see that SOM is intended to solve a very real and pressing
  74. problem.  Namely, there was no reasonable way to develop class
  75. libraries that have properties similar to our current procedure
  76. libraries.  SOM is not intended to compete with C++, Smalltalk, C, or
  77. any programming language.  Because the current SOM release only
  78. directly supports C, you might think that we are advocating that
  79. people use C + SOM instead of C++.  Nothing could be further from the
  80. truth.  We have prototyped C++ support for SOM and expect to have SOM
  81. support shipped soon. Once C++ support is available then C++
  82. would be the language of choice for many programmers wishing to build
  83. system class libraries.  However, C++ without the SOM runtime is not
  84. usable for building binary class libraries, because:
  85.  
  86.    1. The binaries of one C++ compiler are not acceptable to another.
  87.    2. An application that binds to a C++ DLL would need to be
  88.       recompiled if the DLL was replaced with a new release, unless the
  89.       developers made almost no changes to their implementation.
  90.    3. Use of the libraries from any other language (even C) would be
  91.       almost impossible.
  92.  
  93. When C++ is combined with SOM these problems are removed.  Thus making
  94. it practical to use OO technology for things like the workplace
  95. shell, OLE-like facilities, etc.  This is the promise of SOM.  We give
  96. you the capability to package function in this way.
  97.  
  98. We expect to follow SOM with many class libraries, but these will not
  99. be part of SOM, -- they will be part of OS/2 (or AIX or prducts by
  100. themselves, or ...), because this is the real goal:
  101.  
  102.             --- OO technology as part of a system, not ---
  103.             --- part of a programming language         ---
  104.  
  105. We realize that SOM will evolve, and much of this evolution is already
  106. planned.  In particular, we are planning multiple inheritence, C++
  107. bindings, AIX support, OMG CORBA compliance (including an IDL compiler
  108. with a user-extensible backend, an Interface Repository, and an ORB),
  109. and over time, various other things.  In addition, a variety of
  110. SOM-based frameworks are planned that cover such topics as persistence,
  111. replication, GUI, foundation classes, etc.
  112.  
  113.