Gambas Documentation - /doc/intro

/doc/intro

# Introduction

- At the beginning...

- Features

- Prospective

- About me

- Acknowledgements

## At the beginning...

### This project aims at making a graphical development environment based on a Basic interpreter, so that we have a language as easy as 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 was aware of the poor quality of its language, as VB .Net is not backward compatible with older versions of Visual Basic.

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. That's all. I could have chosen the syntax of almost any other language, but I was fed with Basic from childhood, so...

I dislike the 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 some effort in return! :-)

I hope other people will join me to help to increase the possibilities of the language. There is a lot to do and polish yet!

## 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. Components can be written in Gambas too. The component architecture is documented in the Wiki encyclopaedia.

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+, Qt4, etc.

6. I have decided to start implementing the graphical user interface with the Qt toolkit, as it is easier for me. The GTK+ component is not finished yet, but it will have almost the same interface as the Qt4 component.

7. Gambas projects are easily translatable, in any language.

8. Its object model is simple but powerful.

## Prospective

In the very far future (do you hear the Star Trek theme?), many improvements are planned. They depend on my time and my many other occupations!

Task | Detail
--- | ---
Enhanced web component | New controls and containers that generate HTML Web pages, with some JavaScript magic.
Database component enhancements | New data controls, like a bound TreeView for example.
Graph component | Making graphs in Gambas.
Object persistence system | Make Gambas objects transparently persistent: you can get rid of a database management system.

## About me

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

My name is Benoît Minisini. I am a french man born in 1972, living in Paris. Programming is one my passion since I was twelve, and is now my job for many years now. 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 the last 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...

So, the development of Gambas is not as fast as it could be.

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

## Acknowledgements

Gambas is build on top of many free softwares, and could not exist without them.

So I would like to thank every people involved in the following projects:

- Linux

- KDE

- GCC and all of the GNU tools, of course.

- The Qt toolkit.

- The GIMP and its toolkit GTK+.

- Libre Office.

- The MySQL, PostgreSQL and SQLite database management systems.

- And any other libraries used by Gambas.

Some pieces of code of Gambas are based on third party software:

- The hash tables management routines are heavily based on the Glib ones.

- The date management routines are heavily based on the Glib ones as well.

- The Gambas syntax highlighting editor is based on the QMultiLineEdit code of Qt3.

- The image information component is based on some source code from PHP.

- The natural sorting comparison routine is based on the algorithm made by Martin Pol.

And last but not least, I would like to thank every people who help me out with programs, patches, program examples, bug tracking, help writing, financial support, judicious remarks, and so on...