Rene, Fons and Valery, Here is a crude translation of my CINT book's preface. Maaharu Goto ======================================================================== PREFACE What is CINT? Computer software is used everywhere and its' importance is decisively increasing. Not only products like Personal Computers and Workstations, which are evidently sold as computers, many of the electronic devices we use in our life are controlled by microprocessors and software operating on them. Application spreads all around scientific and engineering field as well as economy, management, etc... Software is already a fundamental component in today's society. With the increasing importance of software, productivity of its' development becomes an important issue. As software is used for wider range of application, there are increasing number of occasions that software professional has to work with expert in other professional area. Excellent results can only be obtained by making the best use of both software and non-software expertise. Hence, a good programming environment to support cooperative work between software and non-software professionals is demanded. (Fig 0.1 software and non-software professionals working together) Thanks to price decrease and proliferation of personal computers, writing a small computer program is not a special skill anymore. Most of the non-software expert can write some sort of computer program. It is feasible enough that non-software professional communicates with software professional directly using computer language. It is especially important to privide such environment for C/C++ because it is the most popular programming language today. # C++ is made for the serious programmer In "The C++ Programming Language Second Edition", Dr. Bjarn Stroustrup states that "C++ is a general purpose programming language designed to make programming more enjoyable for the serious programmer." As represented in his words, existing C++ development environment focuses on professional programmer who develops serious application. Such environment is often inadequate for non-software professional who writes program only part-time. Complexity of C++ is an obstacle for a beginner, however, there are number of good books about learning C++ so that non-software professinal can learn C/C++ to his needs. What bothers us in a real-world situation is a compiler/linker problem. Long turn-around-time disturbs creative thinking. You may spend a couple of days just digging out unresolved symbols in a huge software library. It is not desirable for non-software professional to spend time on such thing. (Fig 0.2 Compiler vs Interpreter) # We need an everybody-can-use interpreter BASIC interpreter has been widely accepted by computer beginners. It is very nice if we have good interpreter environment for C/C++ too. Ease of use and short turn-around-time of the interpreter is highly appreciated by the non-software professional who makes many experimental changes in a small program. I needed C++ interpreter myself in 1990. C/C++ interpreter would have perfectly fit to my need as a bridge between software and non-software professional. There was a commercial C/C++ interpreter, but the license fee was expensive and it had substantial limitation. We also tried script languages such as Perl, but nothing fulfilled our need. I wanted to avoid making C/C++ interpreter by myself. But, without having alternative, I finally decided to undertake development of CINT C++ interpreter. The first version is created in March 1991. We immediately applied it to a running project, where we saw significant improvement on productivity and creativity. After many enhancments, in February 1996, I started to expose CINT as a free software from CERN, The European High Energy Physics Laboratory. # CINT combines benefit of interpreter and compiler CINT consists of "cint" , the C/C++ interpreter, and "makecint" , interpreter-compiler. "cint" can be used standalone as a prototyping tool or for educational purposes. But, the true merit can be obtained by using "makecint". Makecint encapsurates arbitrary C/C++ object into the interpreter as precompiled library. In existing script language environment, script and compiled code have to be written in different language and interface method between them has to be manually defined. CINT automatically makes interface method so that the interpreter and precompiled library can access each other. It provides a single language solution combining benefit of interpreter and compiler. A script which is originally developped for interpreter can later be compiled and embedded into the interpreter. Or precompiled library can temporarily be interpreted. Precompiled library can be linked together with the interpreter as archived library, or can be configured as DLL(Dynamic Link Library) which can be loaded at run time. With this feature, huge library written by software professional can be embedded into the interpreter and used easily by non-software professional. (Fig 0.3 Concept of cint/makecint) CINT operates with arbitrary ANSI C/C++ compiler. It currently works on HP-UX, Linux, Solaris, SunOS, AIX, IRIX, ALPHA-OSF, FreeBSD, NetBSD, BeBox, Windows-NT/95, MS-DOS, MacOS, Convex, etc... If you feel C++ is too difficult, you can use CINT with C compiler only. CINT has other features. Interpreter should inherently be a dynamic environment. C/C++ is defined as a compiler language, however, CINT extends its' capability without changing language definition. Source code and DLL can be loaded/unloaded at run time. C/C++ statement can be evaluated from command prompt. Security mode is introduced as an option to improve robustness issue such as memory leak and access through bad pointer. CINT is already used in many research institutes and companies. User community is rapidly growing. # How to use this book I tried to explain everything about CINT in this book. Detail usage and advanced technique will be described with many examples. Reference of all special commands and APIs are descrived so that you can make the best use of CINT. Basic information: Chapter 1. Getting started: cint, the interpreter Chapter 2. Concept and background Chapter 3. Getting started: makecint, the interpreter-compiler Advanced information: Chapter 4. Cint advanced information Chapter 5. Makecint advanced information Chapter 6. Concept of C++ script Chapter 7. Example of real-world application Reference: Appendix1. CINT keyword reference Appendix2. cint command line option Appendix3. makecint command line option Appendix4. cint debugger interface command Appendix5. Syntax limitation The first part explains basic information of using CINT. Chapter 1 describes basic information about cint interpreter Chapter 2 explains feature and concept behind it. Chapter 3 describes basic information about makecint interpreter-compiler Second part explains advanced information. Chapter 4 and 5 describes advanced feature and usage of cint and makecint. Chapter 6 explains concept of C++ script which is an idea of easy-to-use class library. Chapter 7 describes how CINT is used in real-world applications. ROOT/CINT, which is jointly developped with CERN, is a remarkable achievement. It is a new generation Object Oriented Framework. You don't need to read through every chapter. Please use "Readers hint" at the beginning of each chapter as a guide to get information quickly. # Acknowledgement I'd like to say thank you to all people who supported CINT and my activity. Junichi Mizoguchi in Hewlett-Packard Japan invented basic concept of makecint. Shirou Tsuruda has deep understanding about advanced technology and promoted CINT as a standarized productivity tool in Hewlett-Packard Japan Hachioji division. Tatsuya Saito and Hiroshi Nada gave me chances to publicly introduce CINT. Dr. Fons Rademakers, Dr. Rene Brun, Dr. Valery Fine and Dr. Andres Sandoval in CERN made great contribution to the quality and evolution of CINT. Osamu Kotanigawa in Fuji Xerox, Mr. Tomina in Nihon-Denshi-Keisan, and Dr. Otofuji in Akita University contributed porting of CINT to various computer platforms. Kiyoshi Yamamoto in CQ publishing gave me opportunity to write this book and articles in Interface magazine. Spring 1997 Masaharu Goto (gotom@jpn.hp.com , MXJ02154@niftyserve.or.jp )
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:26:20 MET