(If you are looking for my 'wisdom' on programming and FB tips, go here.)
FreeBasic (FB) is a 10+ year
old project that attempts to bring real power to the BASIC language and
try to support as much of the syntax as possible from the old QB4.5
It does not try to be a plug-in QB replacement.
It is NOT an interpreter - it is compiled.
It has versions that run in DOS, Linux, and Windows. ARM, BB, more. Release cycle
tries to be about every six months, but that changes.
The current version is 1.06. It is now fully 64 bit, along
with the original 32 bit.
It has 3 huge features (from my point of view.)
Execution is FAST. While it is not always as fast as that big many-multiple-pass C ...
monster out there, it isn't slow. My estimate and benchmarking
makes it from near as fast to maybe one-half the speed. Depends on
what you are doing. HOWEVER ... if you look at benchmarks of the other
languages - this is still better. I work in linux. That means pretty much
all I do is terminal/console bound. For graphics, you need to move to one
of the larger graphics libraries to get speed in graphics to the screens.
BUT - there are bindings for all the current libs.
It produces small files. My learning project of listing files in a
folder was only 20 k. Testing single functions can approach 10k.
It is simple. It is BASIC, after all, and that is what BASIC is
supposed to be. This means that it is simple to maintain your source
code - probably the single largest fault with C languages.
Now for the really good stuff.
It will produce a C output file for you if you want to really get into
the deep stuff. Not really, just kinda wrap your code a into c file that
is all FB library calls, so still - a little use there. However ...
Macros in the precompiler. Functions in UDT's. Sophisticated graphics possible.
Inline assembly. Thread/mutex/assert/bitwise/wide. Mouse! Not the BASIC
in my TRS80 (actually - LNW) or C64.
It will work very well, and with not too much difficulty, with any C
library. Sure, I complain about that language elsewhere on this site,
but I do embrace and respect the investment and effort by a great many
talented people that have produced mountains of excellent code that
will do about any job you desire.
And static libs. Write YOUR library - gui, disk, whatever - make a static
library for it, and you don't have to bulk up your source with it anymore.
It is pretty simple to set up - on Windows - on Linux. And the source
will work for either. DOS, also, but that is so restricted in
capability that one has to be careful. For example, ZERO real graphics.
The standard C routines have include files that makes their use
trivially simple. For Windows, an API interface is available. For both -
sound, graphics, tutorials, examples. Reinventing the wheel is, at the
You can do pointers. You can do objects. Up to you. (The developers
need to be careful, here. In trying to provide objects, containers and
inheritance, they are moving too much toward the current language
fashion of RTTI, properties, etc. that will slow down and bloat the
language into something like ... C++? The arguments are on the forums
about this. I hope the developers listen. My thought? The language
should do the work, not knowledge of hundreds of qualifiers/modifiers.
If I have to resort to a ton of pointers and exercise RTTI functions,
then the language is incomplete and has failed to be coherent. If they
hide it so I don't NEED it to do my work, that's fine - as long the
resultant code stays small and fast. I DO NOT want an answer to a
question on the forum to be incomprehensible glyphs that will scare
away a ten year old. Is it BASIC, or is it not?)
The only major thing missing WAS 64 bit.
It is here, now. VERY few bugs left in it (none?)
One can write libraries and have them precompiled to further reduce program
size and compile time when using your own custom routines.
The community is certainly the nicest, most helpful of any I have been
involved with. Helpful, VERY few trolls (one?), a wealth of old and new
postings organized such that topics are easy to search. Gentle
The current principle developers/editors of the language are not so
full of it that they DO watch the boards, DO chip in frequently to even
tiny, newb questions, and DO pay close attention to the educated
conversations about directions the language should take as suggested by
the users. And have been willing to test a direction of the concensus
if it isn't too far away from the basic philosophies of the intent of
Is it perfect? NO. I'm not perfect - so no one else gets to be perfect.
For me, you have to worry about how you ask a question. Not careful,
and you will get a tutoring lesson that *may* net some college credit
if you sit through it all. (Well, used to be able to give training
hours for payroll and training time requirements before I retired if I
spent time with techs in the field. Special account setup just for me.)
I should give what is now a standard warning to anyone that asks for advice from anyone:
Pay attention to who is answering your request for help. Examine the answer and see if it applies to YOU.
Be sure that this person does NOT have a stake in the answer. Worst problem: teachers and gurus.
They want to be THE PERSON that has the answers. And they want to always be right. If the answer is overly
technical, well, maybe it is overly technical. If you had a simple solution that didn't quite work, be
sure they answered what is WRONG with your approach, not just counselled you on what they thought was right.
In programming, the best example is - GOTO.
NEVER use GOTO - it means you [ insert a favorite insult here ]
This is mostly a support of arguments for object based programming. It originated with a guy
named Dijkstra. Bright guy. It is valuable for you to know how important he is to modern
programming. Unfortunately, no computer could exist if the GOTO statement did not exist.
He also said, basically, that anyone that started with BASIC in programming
was broken and couldn't be fixed.
Your teacher gives you a grade. You need to pass the class. Do what he says.
Just remember: teachers used to teach that the Earth was flat. And, for a long time,
continued to do so even when they knew it was incorrect.
For FB, my most frustrating issue WAS that it may decide to just do a
dump of all the asm code, rather than compile my program(s). If I find
the right place to add or remove a blank line, it might work. The same
listing compiles just fine with option -gen gcc. (Alternate gcc
toolchain compiler.) Two of the key guys involved have tried a bit to
find it, but no real luck. I(we) thought the issue was related to using
what might be asm register names as variable names. (Known bug.) I did
whittle one program down to 20 lines or so, and this was the problem.
Well, no simple variable names, now, and no more problems.
The current set of programs I am working on is at least 27000 lines
long in 65+ files.
Bottom line: Freebasic is fast, not bloated, simple, powerful.