FreeBASIC

FreeBASIC is a multiplatform, free/open source (GPL) BASIC programming language and compiler for Microsoft Windows, protected-mode MS-DOS (DOS extender), Linux, FreeBSD and Xbox. The Xbox version is no longer maintained.
According to its official website, 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. IDEs specifically made for FreeBASIC include FBide and FbEdit, while more graphical options include WinFBE Suite and VisualFBEditor.
Compiler features.
On its back end, 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.
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 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. New features include support for concepts such as objects, operator overloading, function overloading, namespaces and others.
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 codice_1, while blocks of commented code begin with codice_2 and end with codice_3.
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 codice_4 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.
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:
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 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()
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.