olm@daimi.aau.dk (Ole Lehrmann Madsen) (05/28/91)
rdbd34@vall.dsv.su.se (RDB-design grupp 34) writes: >Anyone heard of the BETA language ? It's said to be a better Simula. >Anyone knows where to get more info ? Is there a PD - compiler perhaps? >Thanks >Magnus Romedahl >E-mail: ev9111@njord.fek.su.se A BETA implementation is available as part of the Mjolner BETA System. The Mjolner BETA System is currently an experimental version and is NOT supposed to be a product. It has been used at a number of locations for experimental work and teaching of object-orientation. Anyone who would like to experiment with the system can get it (essentially) for free by signing a license agreement. There is no cost if the system is obtained via ftp except that it will be necessary to buy a pre-print of a book on BETA ($15). The system can also be mailed on discette and tapes by paying the actual expenses for this. The system is currently available on Macintosh/MPW (at least MC68020 processor and 5Mbyte) and on various UNIX platforms including SUN-3, HP9000 and Apollo3500. The Mjolner BETA System is distributed by Mjolner Informatics ApS, which is currently working on developing the system into a commercial product. Contact person at Mjolner Informatics is Elmer Sandvad ess@mjolner.dk A half day tutorial on BETA will be given at OOPSLA'91, Phoenix, Arizona, 6-11 October, 1991. Further details of the Mjolner BETA System and order form and license agreement is included below. Further information can be obtained from Elmer Sandvad or myself. Ole Lehrmann Madsen olmadsen@daimi.aau.dk ------------------ The Mj|lner BETA System A software development environment supporting object-oriented programming in the BETA programming language - BETA is a modern object-oriented language with: - Powerful abstraction mechanisms including class, subclass, virtual class, class variable, procedure, subprocedure, virtual procedure, procedure variable, coroutine, subcoroutine, virtual coroutine, coroutine variable, and many more, all unified to the ultimate abstraction mechanism: the pattern. - Other features include general block structure, coroutines, concurrency, strong typing, part objects, separate objects, and class-less objects. - The BETA library includes basic data structures, user interface toolkit, operating system interface, metaprogramming system, and fragment system. - The Hyper Structure Editor supports integrated syntax directed and textual editing, incremental parsing, abstract presentation and browsing, integration of documentation and comments, hypertext facilities, and adaptive pretty printing. 1 The BETA Language BETA supports the object oriented perspective on programming and contains comprehensive facilities for procedural and functional programming. Research is going on with the aim of including constraint oriented constructs. BETA replaces classes, procedures, functions and types by a single abstraction mechanism called the pattern. It generalizes virtual procedures to virtual patterns, streamlines linguistic notions such as nesting and block structure, and provides a unified framework for sequential, coroutine, and concurrent execution. BETA is a modern language in the SIMULA tradition. The resulting language is smaller than SIMULA in spite of being considerably more expressive. Instances of patterns, called objects, may be used as variables, data structures, procedure/function activations, coroutines and concurrent systems. Patterns may be organized in a classification hierarchy by means of sub-patterns. Virtual patterns combined with sub-patterns make it possible to delay the specification of an attribute in a pattern. Attributes may then have different bindings in different sub-patterns. This corresponds to virtual procedures in C++ and dynamic binding of methods in Smalltalk. In contrast to Smalltalk, the use of virtual patterns may be checked at compile time, even though the binding is done at run-time. BETA includes the notion of pattern variable. This implies that patterns are first class values, which may be passed around as parameters to patterns. By using pattern variable instead of virtual patterns, it is possible to dynamically change the behavior of an object after its generation. Most object-oriented languages have classes, subclasses and virtual procedures. Some languages have procedure variables. BETA has patterns, subpatterns, virtual patterns and pattern variables. Since a pattern is a generalization of abstraction mechanisms like class, procedure, function, and type, the notions of subpattern, virtual pattern and pattern variable apply also to these abstraction mechanisms. This means that in BETA procedures may be organized in a subprocedure hierarchy in the same way as classes may be organized in a subclass hierarchy. Since patterns may also be used to describe coroutines and concurrent processes, these may also be organized in a pattern hierarchy. The notion of virtual pattern of course covers virtual procedures like in C++. In addition virtual patterns cover virtual classes, virtual coroutines, virtual concurrent processes, etc. Virtual classes provide a more general alternative to generic classes (as in Eiffel). Pattern variables cover procedure variables, that is a variable that may be assigned different procedures. It is also possible to have variables that may be assigned different classes, etc. Attributes of an object may be part objects or references to separate objects. It is possible to describe objects that are not generated as instances of a class pattern, so-called "class-less objects". References are qualified by a 2 pattern name. This provides a near optimal balance between compile-time type checking and run-time type checking. The block structure mechanism makes it possible to create arbitrarily nested patterns. This makes it possible for objects to have local patterns used as classes, procedures, etc. Local pattern greatly enchances the modeling capabilities of BETA. BETA does not only allow for passive objects as in Smalltalk, C++ and Eiffel. BETA objects may also act as coroutines, making it possible to model alternating sequential processes and quasi-parallel systems. The BETA language design includes support for concurrent objects, too. BETA Implementation The Mj|lner BETA System includes an implementation of the BETA programming language. This is an implementation of most parts of BETA except concurrency. The entire Mj|lner BETA System is written in BETA, except for a few run-time routines. The implementation has the following characteristics: - Native code generation The compiler generates assembly code. - Garbage collection A generation based garbage collection is used. The current implementation is a mark-sweep algorithm. A version based on scavenging and mark-sweep is being currently developed. - Separate compilation Programs may be divided into smaller fragments for separate compilation. The compiler makes an automatic dependency analysis on the fragments structure. When a fragments has been changed, the system keeps track of the dependent fragments that must be recompiled. - Interface to C and assembly language There is a general interface to C and assembly language. This includes call of C procedures and parameter transfer of simple types, text and C structures. - Source-level debugger A source-level debugger for the BETA language is available. Contains facilities for specifying break- points, single stepping, inspection of object states, inspecting the run-time organization, etc. The debugger is available both with a command-driven interface and with a graphical interface. BETA Library The Mj|lner BETA System includes a library of patterns that may be used by users. The library consists of: 3 - Basic library The basic library includes attributes for handling input/output and files, a text concept, and standard data structures such as lists. - A user interface toolkit The user interface toolkit includes a set of attributes for creating windows, menus, dialog boxes, etc. For Macintosh there is a user interface toolkit implemented on top of the Macintosh Toolbox. For UNIX implementations there is a user interface toolkit implemented on top of the X Window System. - An operating system interface There is a set of attributes for accessing the underlying operating system. For Macintosh there is an interface to most of the Toolbox. The user may easily extend this interface to possible new Toolbox routines. For UNIX there is an interface that makes it possible to create processes and communicate using e.g. pipes. In addition there is an interface to the file system. - A metaprogramming system The metaprogramming system makes it possible to manipulate programs as data as in Lisp. From the grammar of a given programming language, a set of classes corresponding to the abstract syntax is generated. This gives well defined representation of abstract syntax trees. All tools in the Mj|lner BETA System use this representation to manipulate BETA programs. This common representation of BETA programs is available for the users that may want to write their own tools. - A fragment system The fragment system handles the physical organization of BETA programs. Programs may be divided into fragments, which are the basis for modularization, separation of interface and implementation, variant control, and separate compilation. The Hyper Structure Editor The hyper structure editor includes the following functional- ity: - Syntax-directed editing Syntax directed editing makes it possible to construct and edit programs without introducing syntax errors. Syntax directed editing is especially useful for application oriented languages intended for end-users, casual users and beginners that may have difficulties in remembering the concrete syntax. Also a program constructed by syntax-directed editing needs not be parsed, thereby saving time in the development phase. 4 - Text editing The programmer may freely alternate between syntax directed editing and textual editing. Any program part may be textually edited using keyboard, mouse and menus in the usual style known from Macintosh. - Incremental parsing Any program part that has been textually edited is immediately parsed and inserted into the abstract syntax tree. - Integration of documentation and comments The user may add a comment at any place in a program (technical speaking a comment may be added to any node in the abstract syntax tree). The user decides whether or not to display a comment. Also the user decides whether to display a comment as part of the program or in another window. It is possible to obtain a pretty-print of a program which includes just the modules and procedure headings and corresponding comments. This makes it possible to extract a functional specification from the program. This facility has turned out to be one of the most useful features of the editor. Programmers are motivated for integrating code and documentation since it is easy to extract part of the program and the comments as functional specifications and other documentation. - Hypertext facilities The editor includes hypertext facilities. The facility for handling comments is an example of a hyperlink between a program and a text document. Another type of hyperlink is a link form the use of a name to the declaration of the name. The editor is currently being extended to include general hypertext facilities. - Abstract presentation and browsing The editor is able to present a program at any level of detail. At the top-level of a program the user may get an overview of modules and procedures. It is then possible to browse through modules and procedures to see more and more details. This mechanism is completely general since the user may decide the level of granularity. - Adaptive pretty printing The editor includes an adaptive pretty printing algorithm which prints the program such that it always fits within the size of the window or paper. Current Projects Researchers at Aarhus University and Mj|lner Informatics are currently working on the following projects: 5 - Structure editing of documents A document has logical structure consisting of title, preface, chapters, sections, etc. This structure can easily be described by a grammar. The hyper structure editor is being extended to support structure editing of documents. - Object-Oriented Case Tool The current architecture of the editor is prepared for extending the editor with a syntax directed graphical view of the abstract syntax trees. A graphical syntax of the overall structure of a BETA program has been designed. An implementation of the graphical editor will result in an object-oriented CASE tool, that is fully integrated with BETA. This tool will make it possible to keep the consistency between the graphical design and the BETA code. Traditional problems such as "case gab" and "reverse engineering" will therefore be eliminated. - Interface Builder An interface builder for construction of user interfaces using direct manipulation is being developed. The interface builder generates BETA code that makes it easy for the designer to insert his own application code. The generated code and the users code are separated. - Graphics System A powerful graphical system based on the Stencil & Paint imaging model, graphical modeling and graphical interaction is being implemented. On top of the system an advanced drawing application is being implemented. - BETA interface to Design/OA Design/OA is a very powerful graphics package supporting advanced graphics for drawing diagrams, including hierarchical diagrams. Design/OA is a product of Meta Software Corporation, Mass., USA. A BETA interface to Design/OA has been implemented and is utilized in various other projects. The Design/OA interface is presently only for UNIX and the X Window System. A Macintosh version is forthcomming. Status An experimental version of the Mj|lner BETA System has been implemented as part of the Nordic Mj|lner project (1986-1988). Since then the system has been further developed by Mj|lner Informatics ApS, which intends to develop it into a marketable product. Like C++, BETA is intended to be used for industrial programming. The Mj|lner BETA System is currently being used in teaching object-oriented programming. In addition it is being tested by the Finnish Telecom company Telenokia as part of the Mj|lner II project, which is a continuation of the Mj|lner Project. 6 The BETA compiler, basic libraries and user interface libraries are ready for teaching purposes and industrial experiments (non-commercial usage). These parts of the system are well documented and have been heavily tested and used by Mj|lner Informatics and others. The rest of the libraries, primarily the metaprogramming system, have also been used extensively, but are only minimally documented. The Hyper Structure Editor is fully developed and well documented, but has not been used extensively and should therefore be considered a demo version presently. Mj|lner BETA System availability Mj|lner Informatics offers a world-wide pre-release of the Mj|lner BETA System: an industrial object oriented programming environment and an implementation of the object oriented programming language BETA. The pre-release is available for non-commercial usages only. The pre-release of the system consists of the following: - BETA Compiler (including a fragment system), - Hyper Structure Editor (demo version), - Operating System Interface, - User Interface Toolkit, - Several Basic Libraries. as well as associated documentation (approx. 400 pages). The system is available on an "as-is" basis and without any warranties. The compiler, the basic libraries and the user interface libraries are well documented, whereas the rest of the system is only with minimal documentation. The compiler and the libraries are heavily tested through intensive use, both by Mj|lner Informatics and others. The Hyper Structure Editor is fully developed, but has not been used extensively, and should therefore be considered a demo version presently. As a supplement to the Mj|lner BETA System it is possible to obtain a pre-print of the book: "Object Oriented Programming in the BETA Programming Language (Draft)" by B.B. Kristensen, O.L. Madsen, B. M|ller-Pedersen and K. Nygaard (approx. 200 pages). The system is available for four machine-types: Macintosh, SUN, HP and Apollo. The minimum requirements are: - Macintosh: CPU 86020, MPW 3.1, System 6.0, 5MB, - SUN-3: SunOS 4.0, 8MB, - HP 9000/300 series: HP-UX 7.0, 8MB, - Apollo 3000 series: DomainOS 10.1, 8MB. 7 The Macintosh version of the system is presently the easiest version to use, mainly since the user interface toolkit for the Macintosh is very easy to use, enabling fast production of advanced interactive programs. The user interface toolkit for the UNIX versions need a total rewrite to bring it up to the standards of the Macintosh version. The Macintosh version has been developed partly under contract with Apple Computer, Paris. Mj|lner BETA System Packages: Mj|lner BETA System can be obtained in two different ways: - Package A: Available through ftp In this package, a restricted ftp account is opened at mjolner.dk to allow for the transfer of the system and associated documentation (in PostScript format). When you have returned the order form and a signed license agreement, you will receive an e-mail describing how to use the ftp account. The account will be open in a limited time period. This package is free of charge. - Package B: On diskette or tape In this package, the system will be delivered on diskettes or tapes (depending on the chosen system). The documentation is delivered in print. The cost of this package only covers the direct distribution, media and printing costs. Both packages consists of the following: - Compiler, libraries and Hyper Structure Editor, - Associated documentation, - README and Installation Guide. The packages can be ordered using the attached order form. In order to process the order form, it is necessary that the attached License Agreement is signed and returned too. Book pre-print As a supplement to the system and associated documentation, we can offer a pre-print of the book: "Object Oriented Programming in the BETA Programming Language (Draft)" by B.B. Kristensen, O.L. Madsen, B. M|ller-Pedersen and K. Nygaard. We recomment purchase of this pre-print since the documentation does not contain description of the BETA language useful for serious programming. Other sources exists on the BETA language, but they are somewhat out of date due to changes in the language. The pre-print will be delivered in print at the price of distribution and printing. The pre-print can only be ordered in connection with either package A or B. 8 Trademarks: Simula (Simula a.s.), Unix (AT&T), Smalltalk (ParcPlace Systems), Eiffel (Interactive Software Eng.), Macintosh (Apple Computer), Design/OA (Meta Software Cor- poration), The Mj|lner BETA System (Mj|lner Informatics ApS) 9 ORDER FORM Name: ---------------------------------------------------- Address: ---------------------------------------------------- ---------------------------------------------------- ---------------------------------------------------- ---------------------------------------------------- Phone: ---------------------------------------------------- Fax: ---------------------------------------------------- E-mail: ---------------------------------------------------- hereby orders the Mj|lner BETA System according to the following: -------------------------------------------------------------------------------- - Package A: Price: Free of charge - - --- - - Check machine type below: - - Macintosh: ___ - - Sun-3: ___ - - HP: ___ - - Apollo: ___ - ------------------------------------------------------------------------------ - - Package B: Check machine type below: - - --- - - Macintosh: ___ Price: 125 US$ - - Sun-3: ___ Price: 200 US$ - - HP: ___ Price: 200 US$ - - Apollo ___ Price: 200 US$ - ------------------------------------------------------------------------------ - - Pre-print: ___ Price: 15 US$ - -------------------------------------------------------------------------------- Signed / -19 ---------------------------- (authorized signature) All orders will be processed as soon as possible and in the order of arrival. In case of questions or difficulties, please contact Elmer Sandvad, Mj|lner Informatics (see address above) or e-mail: support@mjolner.dk. Please fill-in this order form with care to ensure correct processing of the order. Please use capital letters or typewriter and make sure that the information entered is complete and correct. Please also note, that this order can only be processed if accompanied by a signed License Agreement (use reverse side) 10 LICENSE AGREEMENT As requester of the Mj|lner BETA System, I understand that this license agreement covers the pre-release of the Mj|lner BETA System, as distributed by Mj|lner Informatics autumn 1990. The software and associated documentation can be used only in accordance with the following conditions: I also understand that the software is provided on an "as is" basis for my non-commercial research purposes. I will not distribute the software and associated documentation, or any portion or derivatives thereof, beyond my organization without your written consent. I understand and accept that the software is provided to me without warranties of any kind and with no provisions for support or future enhancements. I also understand and accept that neither Mj|lner Informatics or any of its employees has any liabilities in connection with the use of the software. In the case of this software being made available to me through a temporary ftp account at mjolner.dk, I agree not to use this account for any other purpose, and not to make the account available to any other person. Should I consider using any parts of Mj|lner BETA System for commercial purposes, I accept that this must be arranged by special arrangements (i.e. another License Agreement). AGREED AND ACCEPTED BY: Name: ---------------------------------------------------- Address: ---------------------------------------------------- ---------------------------------------------------- ---------------------------------------------------- ---------------------------------------------------- Signed / -19 ---------------------------- (authorized signature) 11 Selected Mj|lner BETA Publications 1. B.B. Kristensen, O.L. Madsen, B. M|ller-Pedersen, K. Nygaard: Object-Oriented Programming in The BETA Programming Language. Computer Science Department, Aarhus University, Draft October 1990. 2. J.L. Knudsen, O.L. Madsen, C. N|rgaard, L.B. Petersen, E. Sandvad: Teaching Object-Oriented Programming Using BETA. In Proceedings of Apple European University Consortium Annual Conference, Salamanca April 18-20, 1990. 3. O.L. Madsen, B. M|ller-Pedersen: Virtual Classes --- A powerful mechanism in object-oriented programming. OOPSLA'89, Object-Oriented Programming Systems, Languages and Applications, Sigplan Notices, 1989. 4. L. Bak, J.L. Knudsen, O.L. Madsen, C. N|rgaard, E. Sandvad: An Overview of the Mj|lner BETA System. Mj|lner Informatics ApS, Science Park Aarhus / Computer Science Department, Aarhus University, March, 1990. 5. O.L. Madsen, C. N|rgaard: An Object-Oriented Metaprogram- ming System. Hawaii International Conference on System Sciences - 21, January 5-8, 1988. 6. O.L. Madsen, B. M|ller-Pedersen: What Object-Oriented Programming may be --- and what it does not have to be. Proceedings of the Second European Conference on Object Oriented Programming, Oslo, August 1988. 7. Mj|lner Informatics Report: The Mj|lner BETA Compiler --- Reference Manual. Mj|lner Informatics ApS MIA-90-2. 8. Mj|lner Informatics Report: The Mj|lner BETA Fragment System. Mj|lner Informatics ApS MIA-90-3. 9. Mj|lner Informatics Report: The Mj|lner BETA System --- Basic Libraries. Mj|lner Informatics ApS MIA-90-8. 10. Mj|lner Informatics Report: The Mj|lner BETA System --- UNIX Libraries. Mj|lner Informatics ApS MIA-90-9. 11. Mj|lner Informatics Report: The Mj|lner BETA System --- Macintosh Libraries. Mj|lner Informatics ApS MIA-90-10. 12. Mj|lner Informatics Report: Sif: Hyper Structure Editor --- Users Guide. Mj|lner Informatics ApS MIA-90-11. 13. J|rgen Lindskov Knudsen, O.L. Madsen: Teaching Object- Oriented Programming is more than Teaching Object-Oriented Programming Languages. Proceedings of the Second European Conference on Object Oriented Programming, Oslo, August 1988. 14. E. Sandvad: Syntax-Directed Graphical Editing. Computer Science Department, Aarhus University, Draft June 1988. 15. E. Sandvad: Hypertext in an Object-Oriented Programming Environment. In: J. Andre, J. Bezivin (eds.): Woodman'89: Workshop on Object-Oriented Document Manipulation, Rennes May 1989, BIGRE. 16. E. Sandvad, C. N|rgaard: Reusability and Tailorability in the Mj|lner BETA System. TOOLS'89: Technology of Object-Oriented Languages and Systems, Paris Nov. 13-15, 1989. 17. E. Sandvad: Object--Oriented Development --- Integrating Analysis, Design and Implementation. Computer Science Department, Aarhus University, April 1990. 12 Company Description Mj|lner Informatics ApS is founded with the purpose of developing the Mj|lner BETA System into a commercial product and to participate in research and development projects within object-oriented software development. The company also does teaching and consultancy within object-orientation, software development environments, Macintosh and UNIX workstations. Mj|lner Informatics is currently working on a contract with Apple Computer Europe on developing a version of the Mj|lner BETA System for Macintosh to be used in teaching object- oriented programming. Another major activity is participation in the Mj|lner II project together with Telesoft, Telenokia, EB Technology, Lund University and Aarhus University. Mj|lner II is partly funded by the Nordic Fund for Technology and Industrial Development. Managing director: Ole Lehrmann Madsen. Owners: M.Sc. Lars Bak, Mj|lner Informatics Associate professor J|rgen Lindskov Knudsen, Aarhus University Associate professor Bent Bruun Kristensen, Aalborg University Professor Ole Lehrmann Madsen, Aarhus University M.Sc. Claus N|rgaard, Mj|lner Informatics Professor Kristen Nygaard, Oslo University M.Sc. Birger M|ller-Pedersen, Norwegian Computing Center M.Sc. Elmer Sandvad, Mj|lner Informatics Ph.D Paal S|rgaard, Norwegian Computing Center ----------------------------------------------------------------- The company has taken its name from the Nordic mythology where - Mj|lner is the name of the hammer of the god Thor. According - to the mythology, this hammer is the perfect tool that cannot - fail, grows with the task, and always comes back in the hand - ----------------------------------------------------------------- 13
olm@daimi.aau.dk (Ole Lehrmann Madsen) (05/29/91)
olm@daimi.aau.dk (Ole Lehrmann Madsen) writes: >rdbd34@vall.dsv.su.se (RDB-design grupp 34) writes: >>Anyone heard of the BETA language ? It's said to be a better Simula. >>Anyone knows where to get more info ? Is there a PD - compiler perhaps? >A BETA implementation is available as part of the Mjolner BETA System. >.... >Further details of the Mjolner BETA System and order form and license >agreement is included below. Unfortunately, a regular mail address was missing from the order form and license agreement. The order form and license agreement should be mailed to: Mjolner Informatics Att.: Elmer Sandvad Science Park Aarhus Gustav Wiedsvej 10, DK-8000 Aarhus C, DENMARK Tel.: +45 86 20 20 00 --- Direct: +45 86 20 20 11 - 2752 Fax.: +45 86 20 12 22 E-mail: ess@mjolner.dk Sincerely Ole Lehrmann Madsen Computer Science Department Aarhus University NY Munkegade DK-8000 Aarhus C, DENMARK Tel.: +45 86 12 71 88 --- Direct +45 86 20 27 11 - 5055 Fax.: +45 86 13 57 25 E-mail: olmadsen@daimi.aau.dk >----------------------------------------------------------------- >The company has taken its name from the Nordic mythology where - >Mj|lner is the name of the hammer of the god Thor. According - >to the mythology, this hammer is the perfect tool that cannot - >fail, grows with the task, and always comes back in the hand - >----------------------------------------------------------------- > 13 >