FreeBASIC
Paradigm | Procedural, object-oriented |
---|---|
Designed by | Andre Victor[1] |
Developer | The FreeBASIC Development Team |
First appeared | 2004 |
Stable release | 1.10.1
/ December 25, 2023 |
Typing discipline | Static |
OS | MS-DOS, FreeBSD, Linux, Microsoft Windows |
License | GNU GPLv2+, Standard libraries licensed under the GNU LGPLv2+ |
Website | www |
Influenced by | |
QuickBASIC, C |
FreeBASIC is a free and open source multiplatform compiler and programming language based on BASIC licensed under the GNU GPL for Microsoft Windows, protected-mode MS-DOS (DOS extender), Linux, FreeBSD and Xbox. The Xbox version is no longer maintained.[2]
According to its official website,[3] FreeBASIC provides syntax compatibility with programs originally written in Microsoft QuickBASIC (QB). Unlike QuickBASIC, however, FreeBASIC is a command line only compiler, unless users manually install an external integrated development environment (IDE) of their choice.[4]
Compiler features
[edit]On its backend, FreeBASIC makes use of GNU Binutils in order to produce console and graphical user interface 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.
While not an optimizing compiler, FreeBASIC can optionally transcompile to C to compile with optimizations. FreeBASIC supports inline assembly, multi-threading, and does not use automatic garbage collection.
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 Microsoft QuickBASIC syntax as closely as possible. Beyond that, the language has continued its evolution. As a result, FreeBASIC combines several language dialects for maximum level of compatibility with QuickBASIC and full access to modern features.[5] New features include support for concepts such as objects, operator overloading, function overloading, namespaces and others.[6]
Newline characters indicate the termination of programming statements. A programming statement can be distributed on multiple consecutive lines by using the underscore line continuation char (_), whereas multiple statements may be written on a single line by separating each statement with a colon (:).
Block comments, as well as end-of-line remarks are supported. 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 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 that 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
In both cases, the language is well suited for learning purposes.
References
[edit]- ^ "freeBASIC about page". freeBASIC compiler. Retrieved 5 February 2012.
- ^ FBWiki : FaqPgxbox
- ^ freeBASIC Programming Language: Official Web site
- ^ "freeBASIC official website downloads page". freeBASIC compiler. Retrieved 13 May 2017.
- ^ "freeBASIC dialects". coderJeff's home page. Retrieved 5 February 2012.
- ^ "Differences from QB". freeBASIC.net documentation. Retrieved 5 February 2012.
External links
[edit]- IDEs
- WinFBE - Modern FreeBASIC Editor for Windows
- VisualFBEditor - Cross-platform graphical IDE
- fbide.freebasic.net — FBIDE Integrated Development Environment for freeBASIC
- FBEdit (current) — FBEdit source code editor for FreeBASIC, version 1.0.7.6c
- FBEdit source code editor for freeBASIC (outdated version: 1.0.6.8) on SourceForge
- BASIC compilers
- Free and open source compilers
- Object-oriented 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
- Programming languages
- High-level programming languages
- 2004 software
- BASIC programming language family
- Statically typed programming languages