Welcome to wxBasic
wxBasic is a Basic Interpreter that brings the easy to learn programming language Basic together with the power of the widely-used wxWidget library.
Following the cross-plattform idea of wxWidgets, wxBasic is available on Windows, MacOSX and Linux/Ubuntu.
wxBasic comes in 3 different version.
- The GUI version (wxbasic) is linked to the powerful wxWidget library. Creating and calling the wxWidgets code closely parallels the wxWidgets C++ API.
- The Console version (bvmc) allows to write simple Basic applications for Console mode and looks a lot like QBasic.
- Another Console version (wxbc) is positioned in the middle. It runs in console mode and is linked with wxBase. wxBase is part of the wxWidgets library and contain all classes good for writing automatic background jobs.
It is possible to write applications very quickly and create stand-alone executables.
The package contain a lot of sample applications. So it's easy to start with wxBasic.
wxBasic was first developed in 2002 by David Cuny. In the meantime the development is done by Ralf Peters.
The fundamental idea was to have an easy to learn and use programming language together with a powerful GUI library, that is platform independant or at least support the major known platforms (which is wxWidgets) and should be compact enough to be independant from external libraries.
With wxBasic a C/C++/wxWidgets developer can easily test some new ideas, before start coding in C/C++. It's a hassle to setup a new project, include the correct (and not too much) header files and libraries and end up in a time consuming loop of edit, compile, link, test and start all over again. wxBasic combine everything. Just type some ideas and run. That is really an easy way to try out all the powerful classes and functions of wxWidgets. At the end the developer can decide to distribute a wxBasic application or to rewrite his code in C/C++. In most situations a wxBasic program is more than enought. The developer can focus on solving problems without the hastle to learn a complex programming language.
During the last time two further demands came up for wxBasic.
With the new console version wxbc it is possible to write complex time controlled background jobs or helping create dynamic HTML pages. Basic together with wxBase and database access is a really easy new way to automate daily recurring jobs. Especially in the internet world where socket (e.g. HTTP) processing together with string operations and database access is needed.
The other demand is to have an plattform independant macro language. As Visual Basic for Applications is used as a macro language in the Office bundle for years, the idea came up to use wxBasic as a macro language in other programs, either called via exec or linked in as an embedded macro programming language. The first idea is settled, the other one is in investigation.
Some words on the database connection functionality. As it was known for some time that database support is dropped in wxWidgets from 2.8 to 3.0 we developed an wrapper in wxBasic from the beginning (called wxDbEngine, which integrated Sqlite access beside the offically supported ODBC functionality). It's a pity to have a powerful library without any database support, but it's understandable the wxWidgets team dropped wxDb. wxDb was unattended for a long time because there was no owner. On the other hand we needed a solution as we want to keep the whole strength of wxBasic.
Current version of wxBasic is still linked against wxWidgets 2.8 on Windows and Linux, but on OS X it is already linked against wxWidets 3.0.2. Windows and Linux will upgraded to wxWidgets 3.0 the next time anyhow. All version now (even 2.8) are dropped wxDb support and using an enhanced library called wxDatabaseLayer (can be found on wxCode) to access ODBC and Sqlite databases from the wxDbEngine wrapper. The major extension to wxDatabaseLayer we did for wxBasic is database cursor support. Because of the wrapper wxDbEngine there is no need to change any code if the wrapper was used.
For now, enjoy the current version of wxBasic.