Welcome to Gold Hill!

HomeBackgroundProductsFeaturesApplicationsGuest BookContacts

Background:
   Overview

Products:  
   GoldWorks III
   
Golden Common
       
Lisp Developer
   
Golden Common
       
Lisp SE
   
Gold Connection /SQL
   
Gold Hill Runtime
   
Gold Hill Support

Features:
   Why OOP, CLOS
       
and GoldHill?
   
Features and Benefits
   
CLOS Object System

Applications

Guest Book:
   How to register

Contacts:
   
Who We Are

Gold Hill  CLOS Object System

CLOS (Common Lisp Object System) is a dynamic, object oriented extension to Common Lisp that provides a powerful general purpose programming language. It is a popular tool for development of large scale systems. The value of CLOS is becoming more widely recognized today, based on it features and its very modern object system approach, supporting features such as the following:

  1. Support for modules (or packages), preventing name clashes

  2. A unified syntax derived from Common Lisp:

    1. A multiple inheritance scheme

    2. Generic function calls and message passing

    3. A combination of methods related to function composition

    4. Class re-definitions and updating

    5. Relationships between generic functions through a "meta object protocol"

Integration with Windows and with native operating systems and with other languages such as C is straightforward. CLOS offers an "open world" approach to systems development, and supports optimization for speed.

CLOS is a very modern dynamic, principled, object-oriented, class-centered, method-centered approach to tailoring a system. It offers a major benefit of reducing the turn-around time for development. This means you can get your applications to market faster, and often at lower programming costs.
It also means it is faster and easier to make changes to your applications for example, to provide upgrades. For example, in the course of debugging a system you can look and realize you didn't write a class correctly. So right on the spot you can say "redefine the class" and it all happens dynamically--the system adjusts on the fly. You don't have to go back to ground zero and recompile all the dependency chains that are dependent on that class definition and so on (there could be hundreds or thousands of them).

The whole point of the object oriented approach is to take something and to customize it without having to change the code, without having to go back and edit any of the lines of code that already exist. Objectivity allows someone who doesn't have access to your source code to extend the functionality of functions that you have written without being forced to become involved in the details of the program you provided them. Users don't have to change their source code to use your extensions. This opens up the use of whole worlds of off-the-shelf class libraries of functionality.

CLOS also offers the capability of enabling your instances (or objects in general) to live from session to session. This powerful capability enables you to have your objects "persist" so that they may be returned as the result of a function or procedural call. The object may be the value of a function parameter or returned as a functional value. This capability allows you to make subclasses of a standard class that has the behavior you desire. It also enables your LISP functions to create new functions at runtime or alter old ones, depending on other parameters, saving significant amounts of programming time.

Some developers feel that Smalltalk's object model is too restrictive, making system optimization quite difficult in many applications. For example, Smalltalk lacks multiple inheritance, which CLOS offers. CLOS also offers multi-methods (or Mixins), which enable a much more concise expression of problems, which in turn is very important to incremental development. Smalltalk's GUI framework dates back long before current GUI approaches, which can make it difficult to integrate Smalltalk into current GUI approaches. These are examples of why some experienced developers feel LISP with CLOS is a significantly more robust environment than other object oriented languages can offer. Because of the standards that exist for CLOS, it is much easier to port CLOS code than when using code from less mature object oriented languages.

It is also interesting to note that a functional language (such as LISP with CLOS) is inherently well suited for parallel processing. If a function is free of side effects, values for the various variables can be computed independently and simultaneously. A programmer using a functional language need not give extraordinary thought to parallelism but simply program functions. A smart compiler will pick out which parameters should be evaluated in parallel.

The dramatic improvement in hardware functionality has made Gold Hill's GCLISP Developer or GoldWorks III with CLOS a broadly applicable technology today. Thousands of new users are beginning to experience for the first time the benefits of the power and flexibility offered by Gold Hill's dynamic object oriented programming environments enhanced by the addition of CLOS.

 

 Gold Hill Co. 36 Arlington Road, MA 02167, Tel: (617) 621 3300, Fax: (617) 621 0656, Email: info@goldhill-inc.com

 Copyright Gold Hill Co. 2000 All rights reserved.