Computer Science    
   
Table of contents
(Prev) Free web hosting serviceFreeBSD (Next)

FreeBASIC

FreeBASIC
The FreeBASIC Logo
FreeBasic help.png
Paradigm(s)Procedural, object-oriented
Appeared in2004
Designed byAndre Victor[1]
DeveloperThe FreeBASIC Development Team
Stable release0.24 (August 19, 2012; 6 months ago (2012-08-19))
Typing disciplineStatic
Influenced byQuickBASIC, C
OSDOS, FreeBSD, Linux, Microsoft Windows
LicenseGNU GPL, Standard libraries licensed under the GNU LGPL

FreeBASIC is a free/open source (GPL), 32-bit BASIC compiler[2] for Microsoft Windows, protected-mode DOS (DOS extender), Linux, FreeBSD and Xbox. The Xbox version is no longer maintained.[3]

According to its official website,[4] FreeBASIC provides syntax compatibility with programs originally written in QuickBASIC. Unlike QuickBASIC, however, FreeBASIC is a compiler only and users must manually download, install and configure their IDE of choice.[5] IDEs specifically catered to FreeBASIC include FBide and FbEdit.

Contents

Compiler features

On its backend, FreeBASIC makes use of GNU binutils in order to produce console and GUI applications. FreeBASIC supports the linking and creation of C static and dynamic libraries and has limited support for C++ libraries. As a result, code compiled in FreeBASIC can be reused in most x86 native development environments.

C style preprocessing, including multiline macros, conditional compiling and file inclusion, is supported. The preprocessor also has access to symbol information and compiler settings, such as the language dialect.

Syntax

Initially, FreeBASIC emulated QBASIC syntax as closely as possible. However, as the language evolved, breaking away from this was necessary. As a result, FreeBASIC now offers several language dialects.[6] New features include support for types as objects, operator overloading, function overloading, namespaces and others.[7]

End-of-line characters indicate the termination of programming statements. Multiple statements may be written on a single line by separating each statement with a colon.

FreeBASIC supports block commenting as well as end of line remarks. Full line comments are made with an apostrophe ', while blocks of commented code begin with /' and end with '/.

FreeBASIC is not case sensitive.

Graphics library

FreeBASIC provides built-in, QuickBASIC compatible graphics support through FBgfx, which is automatically included into programs that make a call to the SCREEN command. Its backend defaults to OpenGL on GNU/Linux and DirectX on Microsoft Windows. This abstraction makes FBgfx graphics code cross-platform compatible. However, FBgfx is not hardware accelerated.

Users familiar with external graphics utilities such as OpenGL or the Windows API can use them without interfering with the built-in graphics library.

Language dialects

As FreeBASIC has evolved, changes have been made which required breaking older-styled syntax. In order to continue supporting programs written using the older syntax, FreeBASIC now supports the following dialects:

  • The default dialect (-lang fb as a command-line argument) supports all new compiler features and disallows archaic syntax.
  • The FB-lite dialect (-lang fblite) permits use of most new, non-object-oriented features in addition to older-style programming. Implicit variables, suffixes, GOSUB / RETURN, numeric labels and other features are allowed in this dialect.
  • The QB dialect (-lang qb) attempts to replicate QuickBASIC behavior and is able to compile many QuickBASIC programs without modification.

Example code

Standard programs, such as the hello, world program are done just as they were in QuickBASIC.

Print "Hello World" sleep:end 'Comment, prevents the program window from closing instantly

FreeBASIC adds to this with support for object-oriented features such as methods, constructors, dynamic memory allocation, properties and temporary allocation.

Type Vector Private: x As Integer y As Integer Public: Declare Constructor (nX As Integer = 0, nY As Integer = 0) Declare Property getX As Integer Declare Property getY As IntegerEnd Type Constructor Vector (nX As Integer, nY As Integer) x = nX y = nYEnd Constructor Property Vector.getX As Integer Return xEnd Property Property Vector.getY As Integer Return yEnd Property Dim As Vector Ptr player = New Vector() *player = Type<Vector>(100, 100)Print player->getXPrint player->getY Delete player Sleep 'Prevents the program window from closing instantly

Future development

Using the GCC as a back-end remains on the FreeBASIC TODO list.[8] However, since 2008, official updates to the compiler have been anywhere from six months to years apart.[9]

References

External links

IDEs
(Prev) Free web hosting serviceFreeBSD (Next)