Why Loglan'82?

We think that everybody should take acquaintance with certain features of Loglan'82. Even if you will continue to use your favorite XYZ language, you will be at least aware of what you are missing.
Four features of Loglan'82 distinguish it from the other OO languages:

  1. multi-level inheritance,
    the language offers both nesting and inheritance of modules
    nesting enables sharing of environments and inheritance enables private copies of environments.
    Both methods of module's construction are useful and important!
  2. multi-kind inheritance
    e.g. a procedure can inherit from a class,
    making use of it one can enforce protocols, dynamically check axioms of abstract data types etc.
  3. SAFETY
    - Loglan'82 signals a lot of programming errors that pass unrecognized in other systems.
    -
    There is no risk of dangling references, no confusion of types ...
    Safe deallocation statement and safe storage management system
  4. object-oriented concurrency
    objects of processes can be created dynamically and allocated on a processor accessible by the network
    The processes can communicate and synchronize through a new, powerful mechanism: ALIEN CALL

Other, standard methods of OO programming are present in Loglan'82:

Loglan'82 is accompanied by an original methodology of software engineering which supports the most complicated and most expensive phases of software creation: specification, analysis and verification. There are good reasons for using Loglan'82 in:

Education.

The academic community has a need for one language which enables to teach all elements of object programming: classes & objects, coroutines, processes (in Loglan'82 processes are objects which are able to act in parallel), inheritance, exception handling, dynamic arrays etc. Loglan'82 offers the complete sets of programming tools used in object and modular and structural programming.

It is of importance to have compilers acting in different operating environments: MS-DOS, Unix, Atari, etc. in order to assure the exchange of sources between students and teachers, between users of : personal computers, workstations and servers of university's networks. We are working on the prolongation of the list of machines and systems that support Loglan'82.

Loglan'82 supports other styles of programming e.g. programming by rules, functional programming etc.

The teacher and the students can use different computers (see "Machines" file) and still they can exchange the sources and to follow the experiments of others. You can distribute the files of Loglan'82 among the students which own PC/DOS, ATARI, PS2, PC/Unix. You can install Loglan'82 in your computing centre on Unix or Vax/VMS or Novell servers. You can install Loglan'82 on your workstation (Sun, PC/Unix, Apollo etc.). On all machines you can compile and execute the same program. Whether it will be a student's program checked by a teacher, or an instructive program transmitted to the students. And students can work at home or in a computer room of your University.

For the PC users Loglan'82 comes with an environment consisting of - lotek - a text editor integrated with compiler and other tools, - a structural editor which guides you when you do not know the syntax of Loglan'82, - an electronic manual to be used with Norton Guide or its clones,

A set of instructive examples is added to the distribution package.

We encourage you to experiment with the system since:

Research.

Loglan'82 has been used as a tool with a success in research in:

this list is not the exhaustive one.

Loglan'82 is a source of many problems of broader interest.

  1. The problem of giving one non-contradictory semantics to the language admitting both nesting of modules and inheritance from various levels.
  2. Dangling reference problem.
  3. Mathematical models of concurrent processes.
    Loglan'82 is the result of a research on fundamental questions like 1-3 .
  4. Multiple inheritance and nesting.
  5. Libraries of predefined classes - how to define the meaning of separately compiled modules in the presence of nesting and multiple inheritance.
  6. The virtual Loglan'82 machine as a federation of co-processes.
  7. Execution of processes of a Loglan'82 program in a LAN of heterogeneous computers.
  8. Execution of Loglan'82 programs on parallel computers e.g. transputers.
  9. to find a complete, axiomatic definition of the notions of class and of inheritance,
  10. is it possible to make efficiently the nesting of modules and the multiple inheritance?
  11. how to manage the libraries of predefined procedures and classes in the presence of nesting?
  12. how to install the language on a real multiprocessor system?

The problem 1 was solved by the team lead by A.Kreczmar in co-operation with the group of H. Langmaack.

The problem 2 was solved by A.Kreczmar and was analyzed formally by H. Oktaba.

T.Müldner and A.Salwicki gave the Max model of parallel computations. H.-D. Burkhard proved that it differs essentially from the interleaving model.

B. Ciesielski gave a new concept of objects of processes and a communication mechanism of alien calls of procedures. This version was implemented by him in 1988.

The problems 4 - 12 are open. We would be happy to co-operate on solving them together with you.

We recommend Loglan'82 as a tool to be used in the research in: object-oriented databases, development of CASE tools, VHDL, silicon compilers, simulation, etc.

Production of new software

There are only a few languages which, like Loglan'82, enable both ways of modules' developing: nesting (- a module can be declared in other module) and inheritance (also called prefixing). The modules of your software can share the environment (by means of nesting) or they can inherit other modules as private copies of the modules declared elsewhere. The inheritance in Loglan'82 permits to inherit a module declared somewhere in the tree of nested modules. Moreover, the inheritance is no longer restricted to classes. Any module, whether it will be a class, a block, a procedure, a function, a coroutine or a process can inherit from a class. Coroutines and processes can be inherited in classes, coroutines or processes. Another kind of module is a handler. Handlers serve to handle signals (of exceptions).

Altogether one can use 7 kinds of modules.

The tools offered by Loglan'82 enable in various ways to create generic modules whether they are to serve as generic procedures or parameterized data types. In order to do so one can use either the possibility to pass types as formal parameters or the inheritance mechanisms. The language makes possible overloading the names of operations via the mechanism of virtual functions or procedures.

This and other programming tools offered by Loglan'82 permit to quickly create a prototype of a program and to test it in a friendly environment. The compiler gives a good diagnostic of the eventual errors. For the time being we can not offer a code generator. Instead you can use the Loglan_to_C crosscompiler.

The language is especially well suited for the

Loglan'82 supports various methods of programming:


We would appreciate any news (comments, questions, suggestions, objections, ...) from you. Please write to Andrzej.Salwicki@univ-pau.fr


AS 08:03 04/12/1994

Pau, le 26 Janvier 1994 p