Next Previous Contents

1. Introduction

1.1 What is GAPP

The meaning of the word GAPP is Generic Advanced Programmable Preprocessor. Every C and C++ programmer knows that the preprocessor (CPP or CCCP) are integral parts of the programming system. It's certainly hard to even think about programming in C++ without preprocessor, but sometimes it also hard to do it because it generate hard to resolve errors. Even if not actively used, most modules will only work wel by including definitions and declarations in order to use the standard libraries. Mostly it is used for header files, simple definitions and macros. I have worked a lot with the standard preprocessor, till I found it very restrictive and - inspired by a few customer procjects - the need for a more advanced preprocessor was born. In fact I found it rather silly to work with a stone aged preprocessor while having such advanced programming language as C++. GAPP has been based on a mixture of fast interpreting scripting languages. The most importand one is Slang because its speed, right properties for the job and simple C like syntax that every minimum C programmer can learn quickly. But Python also plays a prominent role. There is a small GAPP integration control language (called SWITCH) which is both, the core of GAPP and starting point. GAPP can be integrated with any scripting language, programm or tool in several ways. It also can cooperate with m4 and CCCP without conflicts. Besides that it does multipass preprocessing so a preprocess replacement can itself be preprocessed to be replaced. Replacement continues as long as possible. This sounds strange but novices to GAPP may view GAPP preprocessing as being capable of writing self rewriting programs, so a customized (extended) GAPP application is in fact a self rewriting program. GAPP is intended as a customizable programming tool to preprocess and generate programs. You no longer write programs your self, rather you write input code to GAPP in order to let it write the program for you. With GAPP you can become several times more productive. If applied there right way, code repeation (typed or by Cut & Paste) can be eliminated in all cases and software becomes better maintainable. GAPP does not assume any language syntax in its input text, it does not even know or recognize a language. This way we can use GAPP for everything we like, not just C++ but also SQL or Java or flat text, what ever!

The name GAPP also sounds like 'gap'. It is intended to do so to signal the gap there is between developping program's with it or developping without it. Another way you could see it is as closing a gap. The gap to close is the difference in writing code manually versus code generation. GAPP almost from it self evaluates from being a tool for preprocessing and creating preprocessing constructs while programming, up to a code generation tool for applications. Because GAPP is released to the open source community, it could have a dramitic effect on the way (open) software is developed.

1.2 Changes

This is the first public release.

Date                    Platform        Version         Release description
2 February 2002         Linux on AXP    Alpa 0.1        Stable on initial development engine
6 October  2004         Linux on iX86   Beta 0.9.       Well tested stable and portable to GNU systems

1.3 Todo and future extensions.

Some parts are already documented but not yet implemented, so here is a list you can use to avoid unimplemented specifications.

  1. Improve documentation, command specifications and examples.
  2. Internal refactoring.
  3. Commandline options to work with standard input and output.
  4. Improve marco handling.
  5. Improve error handling.

1.4 Versions of GAPP

GAPP will come in different open and commercial versions:

GAPP/Open

This is the open source version. You can do with it mostly what you can do with open source code. Please send me your bug reports, questions, remarks, suggestions critique,... anything. Contact me through http://members.home.nl/tosics/ .

GAPP/Professional

A version of the shelf version that provides additional functionallity to save professional developers a lot of time and money. It provides more usefull functionallity and add-on's you do not need to invent your self. It is better and more detailed documented. With GAPP/Professional you can stay ahead of competition even if you need to deliver (open) source code. This is because the final source code is (partly) generated and can be a lot more then when it was handwritten. And much of it can be done with ready made functions/commands and macro's that are provided with GAPP. I'm working on multiple versions, for several operating system platforms and other variants.

If you develop software for living, please use one of these versions It's reasonable priced and it is licenced, but worth the money. However, you can also ern GAPP/Professional. Watch my website http://members.home.nl/tosics/ to discover how you can get it legally, free and unrestricted.

GAPP/Team

More extended version intended for software development teams in complex software construction environments and client/server architectures. Generates code from database resources. GAPP/Team will be an exploration in very advanced software construction techniques and dedicated data storage and programming language. It goes far beyond preprocessing alone and provide software teams with a powerfull productivity tool.

GAPP/Enterprise, GAPP/Enterprise-Plus and GAPP/International

These will be large scale and customized GAPP based software building environments with a high degree of automation and code generation. It adaptively snaps into the clients information environment by information gathering and data mining of the client databases. Development of these versions has not been started. You should contact me for consulting and advise.


Next Previous Contents