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