This is basically a method for me to express my views on the future of this
project.  Since this project is Free Software, that does not mean that someone
else can take the project in a different direction.  This is just what I think.

 - Anthony Liguori <ajl13@bellatlantic.net>

LBPP Frequently Asked Questions

0) What is LBPP?

LBPP is a GNU Common Compiler (GCC) front end to allow the compilation of
Liberty Basic code.  It works by translating Liberty Basic code to C code in a
similiar way that some C++ compilers work.  The official home page of LBPP is

1) What is Liberty Basic?

See http://www.libertybasic.com

2) Is LBPP affilated with Shoptalk Systems?

No.  See the README file.

3) What is the difference between LBPP and libLB?

LBPP is the program that translates the Liberty Basic code into C code.  libLB
is a C library that provides the implementations of all of the Liberty Basic
functions and statements.  They are also independent of each other and carry
different licenses.  The different licenses are to allow programs that link
against libLB to remain closed source.

4) I thought GNU was encouraging libraries to be licensed under the GPL?

The reasoning for this was for libraries that provide unique functionality to
encourage more programs to be open sourced.  Since there are many other Basic
languages out there, using the GPL for libLB would only encourage people not
to use libLB which would not help the spread of Free Software.

5) What is all this GNU and GPL stuff you are talking about?

See http://www.gnu.org

6) When will LBPP be ported to Windows?

I have no plans to port LBPP to Windows.  I run Linux and do not have access to
a Windows development machine.  This is because I do not need Windows and do
not wish to support Microsoft in any manner.  I am experience in Windows
programming and in order to support Free Software, am willing to port libLB to
Windows on the conditions that a copy of Windows is donated to the LBPP
project.  I will not purchase a copy of Windows and will not use a pirate
copy of it.  If you really want LBPP to be ported to Windows, you can attempt
to port it yourself.  I am not against Windows or Windows developers.  I cannot
justify purchasing a copy of a properitery piece of software in order to
support Free Software.

I will gladly contribute code and tips but have no means to actually compile
Windows libraries.  If there is a strong desire, I may be able to use the
Wine libraries to develop some code.  If anyone has experience cross-compiling
from Linux to Windows, please contact me as this would be a very feasible
alternative that I would support fully.

* Updated 12/15/2001 Anthony Liguori <ajl13@bellatlantic.net>

Plans for a Windows port are in the works.  The current plan is to support
GCC compiled with the CYGWIN dll which forces all programs compiled with LBPP
to be licensed under the GPL thereby encouraging open source development on

7) Will LBPP be ported to *BSD or another Open Source operating system?

Sure, if there is a demand for it.  I can also justify spending resources on
that so I will obtain a copy of a BSD if there is a desire.

* Updated 12/15/2001 Anthony Liguori <ajl13@bellatlantic.net>

Easy port if the system runs GTK

8) What are function and statement defines?

The define statement allows for the definition of a LB statement or function.
This definition will allow for a C function prototype to be generated for
the corresponding statement or function.

* Updated 12/15/2001 Anthony Liguori <ajl13@bellatlantic.net>

Changed to declare statement but same idea

9) Does this mean I can add used defined statements to LB?

Yes.  Since statements can be so different though, I am going on record saying
that only very select statements should get officially added to the list of
predefined statements.  This will help keep executable size low and reduce
the complexity of the language.

I also would like to see in the future the ability to have special libraries
that include a statement/function declaration with the support object code.
That would allow someone to delivery a package of a new functionality that
could either reside in a static or dynamic library.

10) Do programs created by LBPP have any external dependency.

No.  Well, only the standard C library but that really doesn't count.

11) Is there a way to embed resources in an executable?

No, although this is a very interesting topic.  I would love to see some
discussing about this.

12) Will LBPP ever have a IDE and debugger?

I have no plans or desire to create an IDE for LBPP.  An IDE sounds like a
great project all on it's own.  I imagine it could borrow a lot of the syntax
parsing and verifing features of LBPP which is a good argument for moving
those features to an external library.  Those features will remain GPL'd though
so any IDE that wished to use those features would also have to be GPL'd.

A WYSIWYG editor is also another great project that is outside the scope of
LBPP.  Many efforts to create a Liberty Basic driven WYSIWYG editor have
already been undertaking with a great deal of success.  A bench mark of version
0.1.0 is surely the ability to successful compile one of this programs.

A debugger is a very interesting topic of discussion.  Due the the symbol
storage methods employed by the translator, it would be very easy to be able
to interactively view and modify symbols without having to deal with all the
debugging information of the executable.  Line information is something that
can be outputed directly by LBPP to be used by GCC.  The only thing that would
really be required is the ability to set breakpoints by reading the line table
and the ability to put the executable in single step mode safely - read the
LCC documentation for info how this effects Windows.

13) Why doesn't LBPP use LCC?

I used LCC for quite some time.  The original Liberty Basic compiler I wrote
many moons ago used LCC.  LCC is a great Windows compiler but unfortunately,
is no longer Open Source, and not ported to a great deal of platforms.  It is
also no where near as robust as GCC.

GCC is by far a superior compiler than LCC.  GCC is a much larger package but
that is because it supports so many languages.  The components of GCC that
are included with LBPP will be considerably smaller in size.

14) What is GCC?  Is it a compiler or set of compilers or what?

GCC is actually a collection of tools.  It is referred to as the GNU Compiler
Collection.  There is a tool in it that is called GCC which is the GNU C
Compiler.  This is what LBPP uses.  All the GNU Compiler Collection tools are
based on a common source and hopefully some time in the future, LBPP will also
draw from that source.  When this happens, LBPP's name will be changed to
reflect what it is.  For now, since LBPP is providing functionality similiar
to the CPP tool, it's name will be LBPP to reflect the fact that is a Liberty
Basic Pre-Processor as far as GCC is concerned.

I wouldn't be suprised if LBPP never became part of the GCC tree though.  The
GCC developers are very hardcore Unix C programmers.  I am amazed that they
let the Java compiler become a part of the project.  I have a hard time
imagining that they would want a Basic language to be part of the project.
Currently, the LBPP code is no where near the quality that would be required to
become part of the GCC tree, so this is a very far off consideration.

15) What is Linux?

I figured I should do some advertising atleast :)  Linux is an incredible
operating system that is absolutely free.  It is both free as in speech - you
modify and change it your hearts content - and as in beer - you can download it
free off of the internet.  If you are new to Linux, I recommend buying a
distribution.  They are available in most if not all software stores and in
most decent bookstores.  I recommend buying a book along with it since it is
rather different than Windows.  It is absolutely worth checking out.  I have
used Linux since the 1.x days and about two years ago, switched over to use
Linux as my main OS with Windows as a supplemental OS.  I am happy to say
though that after not using Windows for quite some time, I removed it from my
system and am now only running Linux.

I have to tip my hat to all the people who have contributed to Linux in some
way or another.  It is truely an amazing thing.

Here is a list of good sites for info on Linux:

 [General Linux Information]

 [RedHat - Leading Linux Distribution]

 [Linux Documentation Project]

16) How is LBPP different than BCX?

I truely believe that LBPP and BCX are two entirely different projects with two
entirely different motives.  This is highly subjective though.

First let me start by saying that BCX is an amazing project that I have a great
deal of respect for.  I considered concentrating my efforts on porting BCX to
Linux prior to writting LBPP.

BCX is an incredible language.  It is a highly sophisticated Basic language
that can do amazing things though.  I think the power of a Basic language
though is it's simplisity.  All languages have a special niche.  

For heavy duty production applications, the language of my personal preference
is C++.  For fast, efficent, and complex programs (or rather, programs that
have a higher degree of complexity than code size) I prefer straight C.  For
problems that need a small bit of logic but high level of OS level interaction,
I prefer shell scripting (csh's my favorite).

The niche I think Liberty Basic - and Basic languages in general - occupy are
small GUI applications that don't require complex logic behind the scenes but
do require some logic.  With a few simple statements, a GUI can be created that
can do an amazing amount of things.  There have been many instances where I
wanted to automate some job that required a large amount of data to be entered.
The ability to make a quick GUI to do this is indespensable.  In a lot of
circumstances, it is impossible to justify writing a C/C++ application for a
certain task.

With that being said, I think BCX is trying to fill part of the niche that
C++ occupies.  I could not personally imagine having to maintain 10,000+ lines
of Basic code but thats just me.  That's where the encapsulation features of
C++ come in handy.  I guess some people really like Basic.  Of course, one
writes Free Software for himself so I guess that's all that really matters ;-)