# Introduction

- About Gambas
- Features
- Prospective
  - The present
  - The future
- About me

## About Gambas

This project aims at making a graphical development environment based on a Basic interpreter, so that we have a language like Visual Basic™ under Linux™.

The phenomenal quantity of bugs and inconsistencies that makes Visual Basic so delightful persuaded me to start this project ;-)

It seems that Microsoft is aware of the poor quality of its language, as VB .Net is not backward compatible with older versions of Visual Basic. I think they have thrown away the Visual Basic interpreter source code, and that VB .Net is just a .Net runtime compiler whose syntax looks like the Visual Basic one. Well, it's just my own opinion... ;-)

I want to clear up any misunderstanding immediately. Gambas does not try to be compatible with Visual Basic, and will never be. I'm convinced that its syntax and internals are far better than the one's of its proprietary cousin ;-)

I took from Visual Basic what I found useful: the Basic language, the development environment, and the easiness to quickly make programs with user interfaces.

But I dislike the very bad level of common Visual Basic programmers, often due to bad pratices imposed by the bugs and strangeness of this language. So I will try to make Gambas as coherent, logical and reliable as possible, and I hope that Gambas programmers will make effort in return ! ;-)

At the moment, I'm looking for programming help. The kernel of Gambas is now stabilized, if not well documented. There is a component example to help people learning how to write components.

I hope other people will join me to help to increase the possibilities of the language. There is so much to do !

## Features

I will try to depict the main features of Gambas and what sets it from the other languages.

Gambas is, before all, a Basic language with object extensions. A program written with Gambas is a set of files. Each file describes a class, in terms of object programming. The class files are compiled, then executed by an interpreter. From this point of view, it is very inspired by Java.

Gambas is made up of the following programs :

- A compiler.
- An interpreter.
- An archiver.
- A graphical user interface component.
- A development environment.

The development environment is written with Gambas itself, so that I can show the abilities of the language. And it is very useful for debugging !

What are the features that set Gambas from the other languages ?

1. A Gambas project is stored under one directory. The archiver transforms the project directory structure in one sole executable file.
2. Compiling a project only requires the compilation of the modified classes. Every external reference of a class is solved dynamically at the execution time.
3. Gambas has a component architecture that allows to extend the language. Anyone can write components as shared libraries that dynamically add new native classes to the interpreter. The component architecture will be freely documented as soon as possible.
4. By default, the Gambas interpreter is a text-only program. The component architecture is used for writing the graphical user interface part of the language.
5. As the graphical user interface is implemented as a component, Gambas will be able to be independent of any toolkit ! You will be able to write a program, and choose the toolkit later : GTK+, Qt, etc.
6. I have decided to start implementing the graphical user interface with the Qt toolkit, as it is easier for me. Later, I will write a GTK+ component that will have almost the same interface as the Qt component. I think GTK+ 2.0 will have enough features to be as powerful as Qt 3.0
7. Any window or dialog box can be used like a control. You cannot do such a thing with Visual Basic without using ActiveX (bless you ! I know, I'm a bit allergic too ;-) ).
8. Gambas projects are easily translatable, in any language. Well, to be honest, I'm not sure for Arabic, Japanese and Chinese...

## Prospective

### The present

Gambas is not finished yet, but it begins to be usable, and maybe useful. Here is a "to do" list that depicts what must be done before reaching a stable release :

- Document the component architecture.
- Finish and clean the Qt component.
- Finish and clean the Development Environment.
- Manage "big-endianness" and "little-endianness".
- Use projects as libraries.
- Make a preprocessor.
- Finish and clean the database component.

### The future

In the very far future (do you hear the Star Trek theme ?), many improvements are planned . Some are needed, the others depends on my time and my many occupations !

- An XML component, based on the libxml2 shared library.
- A GTK+ component, so that you can really choose the toolkit for any program.
- Manage 64 bits integer in the interpreter with a new datatype named LONG
- Make objects persistent, i.e. store them in databases automagically. A little bit obscure for me at the moment...
- A SDL component, based on the libsdl shared library. The goal is to make games with Gambas !

Well... I think I must stop dreaming, and go back coding...

## About me

Welcome to you, curious ! You're going to know almost everything about me...

My name is Benoît Minisini. I am a thirty years old french man living in the suburbs of Paris. Programming is one my passion since I was twelve, and is now my job for six years. This passion started with the Basic language on a CPC Amstrad 464, and later on an Atari 520 STE. Of course, now, I am using many other languages, but I never forgot that I have learned and done a lot with Basic.

I was always fond of writing languages, compilers, assemblers, and interpreters. I wrote a Z80 assembler on Amstrad and an interpreted language that consumed all its memory.

Later, during my studies at the E.P.I.T.A., I wrote a Lisp interpreter under Windows 3.1. During six months, I discovered Windows, its stupid memory model, the Microsoft C compiler, and its numerous bugs.

Today, I keep on raging with the Gambas language, contributing with my own experience to the free software world.

Thanks to my boss, I have a half-time job, so I have worked actively on Gambas for three years.

But I have other passions too, that burn a lot of time. There is music - I'm playing flute for a long time - and theatre now... I started to study acting at the "Cours Simon" in Paris since September 2002, and it takes me more than 16 hours a week.

So, the development of Gambas is much slower :-( But don't be afraid, I will not abandon Gambas, whatever happens in the next months.

I hope your curiousity was satisfied... :-)

-- NelsonFerraz - 04 Jul 2003