Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!uwm.edu!spool.mu.edu!munnari.oz.au!bruce!goanna!ajk From: ajk@goanna.cs.rmit.oz.au (Alan Kent) Newsgroups: comp.lang.eiffel Subject: Eiffel Questions (from an Eiffel novice) Message-ID: <4998@goanna.cs.rmit.oz.au> Date: 19 Mar 91 02:28:24 GMT Organization: Comp Sci, RMIT, Melbourne, Australia Lines: 52 Recently I have been looking at using Eiffel for building a research database system. We have a current system in C, but with big changes afoot, I considered it a good time to look around and see if there was a better language. The current system is about 100,000 lines of code. Eiffel looked good in many ways (being object oriented and there was a possibility of going towards an object oriented database system), but I had a few questions about the langauge. I am sorry if these are commonly asked questions, but I have only just started reading this group. I have used an object oriented language before, but have not attempted any large scale projects in such a language. From what I have read, Eiffel does not allow classes to be manipulated as objects. In particular, I would find it useful to be able to pass a class as a parameter and then create instances of that class. Consider for example an indexing mechanism class. I would like to be able to write a series of subclasses of "IndexingScheme" which all behave in a similar way, but implement different schemes (inverted files, linear hashing, hybrids and so on). When I create an index on a table, I need to create an instance of this class. Ideally, I do not want to have to have a table of known indexing techniques, but there seems to be no way around this, especially since to create an object you have to declare a variable of the object type first. Is there a common simple solution to this? Does an Eiffel interpreter exist? Or else dynamic object module loading? For example, can a database designer define a new class in Eiffel which could be used as a new type (for example, define a Date class). Another example, if I have a database kernel, can I download (application specific) code to the kernel and have it run there (for efficency). From my limited understanding of how Eiffel is compiled, this does not seem possible. Is there any light weight process support in Eiffel (or the Eiffel libraries)? I have also heard the language is still changing. How significantly? If we write a large program in it, how difficult is it going to be to change to keep it working with later revisions? There are a few other little things I do not like, but with the combination of Generic Types, Multiple Inheritance and Storable (which I assume can convert any object graph into a byte stream - which I could then store as a database record or send to another program), Eiffel looked very nice. Thanks for any information people can pass on... ------------------------------------------------------------------------------- Dr. Alan Kent, ACSNET: ajk@goanna.cs.rmit.OZ Key Center for Knowl. Based Sys., INTERNET: ajk@goanna.cs.rmit.OZ.AU Victoria University of Technology, JANET: ajk%au.oz.goanna@uk.ac.ukc RMIT Campus, BITNET: ajk%goanna.cs.rmit.OZ.AU@relay.cs.net Dept. of Comp. Sci., UUCP: ..!uunet!goanna.cs.rmit.OZ.AU!ajk GPO BOX 2476 V, Phone: +61 3 660 2992 Melbourne, 3001, AUSTRALIA Fax: +61 3 662 1617