Subject: Re: Starter C compiler - Win95
From: [email-masked] ("Valery Fine")

17 Aug 1997 14:04:40 -0700
Approved: [email-masked]
Distribution: cygnus
Message-ID: <[email-masked]>
Reply-To: [email-masked]
Comments: Authenticated sender is <[email-masked]>
Original-To: "Richard Thorton" <[email-masked]>, [email-masked]
X-Confirm-Reading-To: [email-masked]
X-pmrqc: 1
In-reply-to: <[email-masked]>
X-mailer: Pegasus Mail for Win32 (v2.53/R1)
Original-Sender: [email-masked]

On 15 Aug 97 at 10:18, Richard Thorton wrote:

> Im looking to find a C compiler to learn C.
> 
> Is the GNU Win32 compiler a sound one to start with. I havent used
> any other program apart from basic BASIC at college many years ago.
> I thought C might be the place to start.
> 
> Any help appreciated.
> 

  Try ROOT/Cint package. It includes C/C++ interpreter, plenty of 
graphics and Network facilities. It does make C/C++ as easy as BASIC.

  You welcome to visit our Web site

          http://root.cern.ch

  I've attached an abstract of CINT for your info too.

  With my best regards,
                 Valery

============    Attachment follows  =======================
Date sent:        Sat, 09 Aug 1997 13:59:00 +0900
From:             <[email-masked]>
Subject:          CINT book abstract
To:               [email-masked]

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 ([email-masked] , [email-masked]
)

=================================================================
Dr. Valery Fine                  Telex : 911621 dubna su
    -----------
LCTA/Joint Inst.for NuclearRes   Phone : +7 09621 6 40 80
141980 Dubna, Moscow region      Fax   : +7 09621 6 51 45
Russia                           mailto:[email-masked]                              

Dr. Valeri Faine
    ------------                 Phone: +41 22 767 6468
CERN                             FAX  : +41 22 767 7910
CH-1211 Geneva, 23               mailto:[email-masked] 
Switzerland                      http://nicewww.cern.ch/~fine
                                 
-
For help on using this list (especially unsubscribing), send a message to
"[email-masked]" with one line of text: "help".