[comp.ai] CALL FOR DISCUSSION: Frames & Objects

defrance@uni2a.unige.ch (01/15/91)

Hello networld.

I'm not directly involved with frame languages, but as a teaching assistant
I have to deal with AI basics, actually semantic networks and frames.

What seems to me not very clear, at least in AI introductory manuals, 
is the real difference between the concepts of OOPL (especially OO extension
of "AI languages") and frames.

Indeed, both frames and objects are hierarchical structures with inheritance 
and slot daemons.

This similitude has grown, since I know at least a frame system which allow the
user to define methods and which implements a message mechanism.
What is worse, most of the examples found in AI manuals or research
papers are actually best suited to OOP than frame systems, and the same
examples are used in OOP tutorials
As well, even when frames are used in their context (i.e. KR and reasoning 
systems), most of the time the same functionality can be achieved 
with objects. The only exception is maybe the matching (recognition) problem, 
in which an undefined instance is matched against the frame hierarchy 
to find the class that best fits its description, but this is a rarely 
addressed problem.

The main differences between frames and objects I'm aware of are:

1) syntax: frames are usually easier to write than objects,
   whose syntax depends on the underlying language and is 
   complicated by the greater number of features of object systems 
   (In CLOS it is easy to make syntactic changes (macros) to simplify
   the writing of objects)

2) Inheritance: in "pure" frame systems the inheritance is (should be)
   dynamic, i.e. values of superframes slots are not propagated;
   it is the inheritance mechanism which search through the inheritance
   path each time that an unfilled slot is retrieved. Objects
   usually complete the instance when it is created, for performance
   reasons.
   This is no more true; hybrid techniques are today used in 
   frame systems to avoid the time penalty of dynamic inheritance.

3) Encapsulation: in object oriented languages, data and control are
   usually encapsulated in 'black boxes' (the "object"), complicating
   data modification and reasoning. Frame systems don't have 
   encapsulation.
   This is not true of every Object system; in CLOS again, it is not 
   the case.  
	   
I think the biggest one is: origin/purposes: Objects are Software engineering
tools and Frames are AI tools for Knowledge Representation.

The point is that today we have object extensions to "AI languages" (flavors,
CLOS) that can be used as AI tools, and Frame systems that tend to include 
more and more features of OOP.

The question which emerges from such a mess is the following: can we
say that it exists a theoretical framework for 'hierarchical structures' 
of which objects and frames are just two different implementations?, and,
as a corollary, is it justified to merge frames and objects to obtain a
unified paradigm?

Any comments are welcome.


-- Massimo


------------------------------------------------------------------------------
Massimo de Francesco                       email: massimo@cuisun.unige.ch
Computer Science Center                    voice: (+4122) 7876582
University of Geneva