Path: utzoo!attcan!uunet!mcsun!ukc!pyrltd!tetrauk!rick From: rick@tetrauk.UUCP (Rick Jones) Newsgroups: comp.object Subject: Re: intelligent self-modifying objects? Message-ID: <526@tetrauk.UUCP> Date: 19 Jul 90 11:46:29 GMT References: Reply-To: rick@tetrauk.UUCP (Rick Jones) Organization: Tetra Ltd., Maidenhead, UK Lines: 64 In article egc@CS.CMU.EDU (eddie caplan) writes: > >it has been argued that object oriented programming allows for rapid >adaptation to change. so, what is the ultimate manifestation of such >programs? objects that can self-adapt to a changing environment? >intelligent objects? have we discovered an unintended approach to AI? >is flexibility itself a definition of intelligence? I'd like to throw a few thoughts in to help start this off. This is sparked by the mention of AI, and my observations that various computing disciplines, including AI, seem to be saying "hey, we can use objects too!". This may not exactly be addressing the point raised, but it's along similar lines. So, do we have "intelligent objects" created by AI engineers, with their close cousins "expert objects", not to mention perhaps "functional objects", "logical objects", etc? I think (hope!) not. Object orientation is really a design concept far more than a language concept. The languages help by providing more direct support for the design, but object oriented designs can be implemented in procedural languages if you try hard enough. A classic example is the X-windows intrinsics toolkit. The essential characteristics of an object are that it is something which will provide information about itself, and accept requests to act upon itself. How it finds the information or performs the actions is its business, not its client's. In current object oriented languages we already have the ability for an object to provide information either from an internally stored value or from computation, in a transparent way. In other words we can have different computational models (taking storage to be the simplest computational model) within the same object to achieve the required results, transparently. AI, rule-based deduction, logical computing, functional computing, etc. are all in the end different computational methods of achieving results. The real way to widen the scope of object methods is to try to allow a mixture of computation concepts WITHIN THE SAME CLASS. This means that if I have an object which can give me 3 pieces of information, I should be able to have, say, one item held as storage, another computed on request, and the third deduced using a knowledge base. Client objects need know nothing of the differences. This is obviously a simplistic view of the concept, and we're a long way from being able to implement it in any general form, but I think the underlying principle is important. My real point is that objects should be seen as being something at a higher level than languages, not just a good gizmo for each language discipline to adopt, use, mis-use, hype, hijack, corrupt, or whatever (select according to your synicism rating). I have, incidentally, looked in outline at the practicalities of building classes which can consult an embedded expert-system engine to provide results to calling classes transparently, and I think it is very feasible. I anticipate pursuing this further in the future (when I've solved my current problems). >please, let's start a serious discussion about what object orientation can >achieve. Serious enough? (Sorry about the loose use of "class" and "object", but I didn't think the rigorous distinction was important to this discussion) -- Rick Jones You gotta stand for something Tetra Ltd. Maidenhead, Berks Or you'll fall for anything rick@tetrauk.uucp (...!ukc!tetrauk.uucp!rick) - John Cougar Mellencamp