Paul, INET:papresco@technologist.com Somebody forwarded me your message. It means I'm supposed to answer. I may need to explain the basics first. ROOT is a C++ based Object Oriented Framework. It provides extensive class library as a framework. An unique feature of ROOT is that it embeds CINT C++ interpreter as run-time information engine and macro/ command line interpreter. All of the class information are registered into the CINT dictionary so that a user can make use of symbol table information at run-time. CINT is an independent software package which can adapt to arbitrary C/C++ library. It consists of "cint" - the C++ interpreter and "makecint" interpreter-compiler. Cint is a raw C++ interpreter which only contains ANSI library function and iostream. Makecint is an utility to embed arbitrary C/C++ binary to cint as precompiled library. Precompiled library can be linked together with the interpreter core as an archived library, or configured as DLL(Dymanic Link Library) which can be loaded/unloaded at run-time. >Does ROOT allow you to avoid pointers and memory management? If so, it >is as easy as Java, but is incompatible with "regular" C and C++. If >not, it is still more difficult than Java. The answer is yes and no. If you are a C++ expert, you can easily figure out that avoiding pointers makes C/C++ almost unusable. I thoroughly think about the possibility but having good enough compatibility without pointer is impossible. So, what I'm doing for CINT (and ROOT) is providing several levels of security modes. (Note that this is experemental) level0 : Behaves the same as regular C/C++, except that array index overflow and divide by 0 are protected. level1 : Besides level0 CINT prohibits pointer alithmetic and cast to a pointer. Only a valid pointer value can be assigned to pointer type variable. Garbage collection is turned on to avoid memory leak. When an object is deleted, all the reference are reset to NULL which avoids invalid pointer access.. level2 : Besides level1 CINT prohibits [] operator for pointer type variable. level3 : Besides level2 CINT prohibits casting As security level goes up, you get tighter limitation and control. You can trade off security and compatibility. Security level1 provides some kind of memory management. >On the other hand, I admit that an interpreter goes a LONG WAY towards >making C++ easier. Can it link to binaries libraries? Yes, of course. CINT can embed compiled binary as precompiled library. Or other program can embed CINT as a command line and macro interpreter. The simplest explanation about CINT is "It is a C++ version of Tcl". Tcl, you need a hand made command interface function. CINT does it automatically from header file. >One nice thing about Java is that there are hundreds of portable class >libraries you can use. >Paul Prescod On behalf of ROOT development team, ROOT provides extensive class library you can use. So we already have something similar to Java class. As an author of CINT C++ interpreter, because it can embed arbitrary C/C++ library, it can make use of existing class library. ROOT is one good choice. Finaly, I'd like to state that fundamental purpose of making CINT was quite different from Java. I'm a hardware design engineer. I wanted to make my work easier especially when working with software people. CINT is a bridge between software and non-software experts. Masaharu Goto
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:26:20 MET