FreeBASIC
![]() |
|||
| Paradigm | Procedural, object-oriented | ||
|---|---|---|---|
| Designed by | Andre Victor[1] | ||
| Developer | The FreeBASIC Development Team | ||
| Appeared in | 2004 | ||
| 1.01.0 / December 28, 2014 | |||
| Static | |||
| OS | DOS, FreeBSD, Linux, Microsoft Windows | ||
| License | GNU GPL, Standard libraries licensed under the GNU LGPL | ||
| Website | www |
||
|
|||
FreeBASIC is a free/open source (GPL) 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[edit]
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 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[edit]
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[edit]
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[edit]
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[edit]
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 Integer End Type Constructor Vector (nX As Integer, nY As Integer) x = nX y = nY End Constructor Property Vector.getX As Integer Return x End Property Property Vector.getY As Integer Return y End Property Dim As Vector Ptr player = New Vector() *player = Type<Vector>(100, 100) Print player->getX Print player->getY Delete player Sleep 'Prevents the program window from closing instantly
References[edit]
- ^ "FreeBASIC about page". FreeBASIC compiler. Retrieved 5 February 2012.
- ^ Lee Seats. "FreeBASIC the Successor to QuickBASIC". About.com. Retrieved 2008-08-17.
- ^ FBWiki : FaqPgxbox
- ^ FreeBASIC Programming Language: Official Website
- ^ "FreeBASIC official website downloads page". FreeBASIC compiler. Retrieved 5 February 2012.
- ^ "FreeBASIC dialects". coderJeff's home page. Retrieved 5 February 2012.
- ^ "Differences between QBASIC and FreeBASIC". FreeBASIC.net documentation. Retrieved 5 February 2012.
External links[edit]
| Wikimedia Commons has media related to: |
- IDEs
|
||||||||||||||||||||||
- BASIC programming language family
- BASIC compilers
- Free compilers and interpreters
- Object-oriented programming languages
- Procedural programming languages
- Free computer libraries
- Self-hosting software
- Free software programmed in BASIC
- DOS software
- Programming tools for Windows
- Linux programming tools
- Programming languages created in 2004
- Software using the GPL license
