53d08a1c34
* NEW: Put it in the /app/other directory. git-svn-id: svn://localhost/gambas/trunk@2777 867c0c6c-44f3-4631-809d-bfa615b0a4ec
128 lines
4.9 KiB
HTML
128 lines
4.9 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="$(LANG)" lang="$(LANG)" dir="$(LANGDIR)">
|
|
|
|
<head>
|
|
<link rel="stylesheet" href="$(STYLE)">
|
|
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
|
</head>
|
|
|
|
<body class="none">
|
|
|
|
<table class="none" cellpadding="0" cellspacing="0" width="100%">
|
|
|
|
<tr><td class="none" height=600 valign=top>
|
|
<p>A drawing is better than a long speech. And I'm fond of this kind
|
|
of diagram that make people think that program design is completly
|
|
clean and careful thought ;-).
|
|
You can click on the picture to get details about <i><b>Gambas</b></i>
|
|
architecture...</p>
|
|
<p>The <i>Development Environment</i> hides this machinery behind
|
|
a pretty graphical interface.</p>
|
|
</td></tr>
|
|
|
|
<tr><td class="none" height=600 valign=top>
|
|
<h3><a name="interpreter"></a>Interpreter</h3>
|
|
<p>The interpreter is a program named
|
|
<i>gbx</i>. It executes the byte code of the compiled file generated
|
|
by the compiler.</p>
|
|
</td></tr>
|
|
|
|
<tr><td class="none" height=600 valign=top>
|
|
<h3><a name="project"></a>Project</h3>
|
|
<p>A project is a set of files stored in one
|
|
directory. A project can contain source files (forms, classes, modules)
|
|
or any data files of any types. The project configuration is stored
|
|
in a file named <i>".project"</i>.</p>
|
|
</td></tr>
|
|
|
|
<tr><td class="none" height=600 valign=top>
|
|
<h3><a name="native"></a>Native Classes</h3>
|
|
<p>The native classes can be used without loading
|
|
any component. They are integrated in the interpreter, and can be looked
|
|
upon as a part of the <b><i>Gambas</i></b> language.</p>
|
|
</td></tr>
|
|
|
|
<tr><td class="none" height=600 valign=top>
|
|
<h3><a name="interface"></a>Component Interface</h3>
|
|
<p>The <i>Component Interface</i> is a set of
|
|
routines and services used by the components to communicate with the
|
|
interpreter. The interpreter's internals are hidden this way.</p>
|
|
</td></tr>
|
|
|
|
<tr><td class="none" height=600 valign=top>
|
|
<h3><a name="component"></a>Components</h3>
|
|
<p><i>Components</i> are shared libraries
|
|
that are loaded at run time by the interpreter. They can contain new
|
|
classes and hook routines such as event loop management, shell arguments
|
|
analyze, etc. They can publish a set of routines as an interface
|
|
to other components also.</p>
|
|
</td></tr>
|
|
|
|
<tr><td class="none" height=600 valign=top>
|
|
<h3><a name="execution"></a>Execution Unit</h3>
|
|
<p>The <i>execution unit</i> is the heart of
|
|
the interpreter. It dispatches and executes each byte-code instruction
|
|
generated by the compiler.</p>
|
|
</td></tr>
|
|
|
|
<tr><td class="none" height=600 valign=top>
|
|
<h3><a name="subr"></a>Subroutines</h3>
|
|
<p>The <i>subroutines</i> are the interpreter
|
|
functions associated to the corresponding <b><i>Gambas</i></b>
|
|
<i>Basic</i> functions like <i>Sin( )</i>, <i>Left$( )</i>, etc. or
|
|
operators like <i>+</i>, <i>&</i>, etc.</p>
|
|
</td></tr>
|
|
|
|
<tr><td class="none" height=600 valign=top>
|
|
<h3><a name="loader"></a>Class Loader</h3>
|
|
<p>The <i>Class Loader</i> loads compiled forms,
|
|
classes and modules into the interpreter. If your project was compiled
|
|
as an executable, i.e. as an archive, the interpreter maps the file
|
|
into memory instead of loading it. It is worth doing !</p>
|
|
</td></tr>
|
|
|
|
<tr><td class="none" height=600 valign=top>
|
|
<h3><a name="archived"></a>Executable file</h3>
|
|
<p>A <b><i>Gambas</i></b> executable file is
|
|
just an uncompressed archive of your project, the compiled files included.
|
|
The archive file is marked as a script with the "<tt>#!/usr/bin/gbx</tt>"
|
|
magic header, so that <i>Linux</i> executes it by calling the interpreter.</p>
|
|
</td></tr>
|
|
|
|
<tr><td class="none" height=600 valign=top>
|
|
<h3><a name="compiled"></a>Compiled files</h3>
|
|
<p>A compiled file is a binary representation of
|
|
a class, that contains every information useful to the interpreter :
|
|
functions transformed to byte code, constants, variables definitions,
|
|
debugging information, etc.</p>
|
|
</td></tr>
|
|
|
|
<tr><td class="none" height=600 valign=top>
|
|
<h3><a name="archiver"></a>The Archiver</h3>
|
|
<p>The <i>archiver</i> is a program named <i>gba</i>.
|
|
It transforms your project, the compiled files included, in one sole
|
|
executable file.</p>
|
|
</td></tr>
|
|
|
|
<tr><td class="none" height=600 valign=top>
|
|
<h3><a name="compiler"></a>The Compiler</h3>
|
|
<p>The <i>compiler</i> is a program named <i>gbc</i>.
|
|
It transforms your project's forms, classes and modules files into binary
|
|
compiled files that can be understood by the interpreter.</p>
|
|
</td></tr>
|
|
|
|
<tr><td class="none" height=600 valign=top>
|
|
<h3><a name="comploader"></a>The Component Loader</h3>
|
|
<p>The <i>Component Loader</i> is the part of the
|
|
interpreter that loads components shared libraries, gives them access to the
|
|
<i>Component Interface</i>, and that publishes their interface to the other
|
|
components.</p>
|
|
</td></tr>
|
|
|
|
<tr><td class="none">
|
|
</td></tr>
|
|
|
|
<table>
|
|
|
|
</body>
|
|
</html>
|