Tutorial: The Conceptual Framework


 

A little bit about navigation

This tutorial is about the gbeta language. If you are looking for information about the practical usage of gbeta, such as the interaction commands, help facilities, or the integration with Emacs, take a look at the Getting Started section.

If you look in here and don't find what you are looking for, try the general BETA Tutorials. Those tutorials are somewhat oriented towards the Mjolner BETA System implementation and will give some advice which does not apply to gbeta, but the vast majority of truths (except for the restrictions ;-) which can be said about the language BETA also apply to the gbeta language.

If you already know BETA and just want to discover how the gbeta language differs from BETA, then take a look at the section about compatibility issues, and at the section about the language enhancements made on the way from BETA to gbeta.

The conceptual framework behind BETA

BETA has always had a rich philosophical foundation, providing a deep explanation of and motivation for the object-oriented perspective on system development, and to the design of object-oriented programming languages. To learn more about this, look into chapter 18 of

Ole Lehrmann Madsen, Birger Møller-Pedersen, Kristen Nygaard:
"Object-Oriented Programming in the BETA Programming Language"
Addison-Wesley and ACM Press, 1993
ISBN 0-201-62430-3

Here, we'll just mention some important concepts, briefly, starting with a quote from the above mentioned BETA Language Tutorial, p.8:

BETA is intended for modeling and design as well as implementation. During the design of BETA the development of the underlying conceptual framework has been just as important as the language itself.

BETA is a language for representing/modeling concepts and phenomena from the application domain and for implementing such concepts and phenomena on a computer system.

Starting from the concept of a system, which is a portion of the world that somebody chooses to view as a whole, built from a number of interacting components, and continuing with the concept of an information process, which is a perspective on a process that emphasizes the information content and its transformations over time, a BETA program execution may be described as an information process considered as a system which is a physical model of some real world process.

In other words, what happens in the computer is actually a physical process, and this process is analogous to what happens in the real world, focusing on the application domain and choosing some perspective on this application domain.

This establishes the modeling relation between programs and selected parts of the real world as crucial, and that is the kernel of object-orientation from a BETA perspective. The fact that many programming languages use constructs like inheritance, polymorphism, genericity, encapsulation and whatnot is just a technicality which might change as soon as other technical means for supporting the "physical model" perspective emerge.

Enough philoso-babble ;-) The tutorial about the concrete language starts on the next page! By the way: just about every reference to the programming language in the tutorial should be "BETA and/or gbeta" since the material presented applies to both, but the references are just given as "gbeta" unless there is a special reason to distinguish.

 


Signed by: eernst@cs.auc.dk. Last Modified: 3-Jul-01