DISCLAIMER 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 http://lbpp.sourceforge.net 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 Windows. 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] http://www.linux.org [RedHat - Leading Linux Distribution] http://www.redhat.com [Linux Documentation Project] http://www.linuxdoc.org 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 ;-)