I also thought FreeBASIC was dead until I entered this forum today. I've created a compiler
for a retro-machine (ZX Spectrum) which is compatible with FreeBASIC syntax (up to some extent).
I think that FreeBASIC language is rather complete now, and adding C++ features like static objects, "templates", or alike is an error. This is not expanding FreeBASIC (which should be a BASIC to learn language, indeed), this is C-izing FreeBASIC (as someone complained in other thread), and so, making hard to program in BASIC so it's better to switch to C++.
BASIC is supposed to be a High Level Language (C is a low-level one, so allows more control of the machine, but requires more knowledge by the user, and a longer learning curve). E.g. in many BASIC implementations, SIN and COS are reserved words of the language. In C they are external functions: users must find a library (ok, math libraries are very common) or implement them themselves.
Things that could be improved (Note: I don't know al the current features of FreeBASIC so some of them might already be implemented!):
These are less important (from my point of view):
- Object inheritance: If it has objects, it makes sense. Inheritance and polymorphism (virtual methods).
- Better (updated) libraries and more platforms. FreeBASIC should be ported to x64 architectures (Linux, Windows, Mac), and also come with more widget libraries.
- Someone should also create a good IDE. Don't know what others use over there, but it's a good idea to have a standard IDE if possible.
Now, the most important
for an *evolving language*:
- Strings ByVal and ByRef (my 8bit compiler already implements that, so it's possible). This is high level language, so this should be allowed.
- More high level structures, like nowadays high level languages (e.g. python): Lists (not dynamic arrays, but real lists) and Dictionaries, and even Trees.
- Those containers should contain any kind of object (like a "Variant Type"). I mean, a single array might contain an integer in one position, and a string in another.
This 2nd list is what, IMHO, BASIC should evolve to. Using "pointers", and so on is going to the lowlevel C-ish language (and C/C++ already exists). Going to higher abstract data structures is what current languages do, because that's what's suppose we human do: higher level of data abstraction. Eg. Python, Java and many others (don't use pointers).
If I'm going to manage "a dynamic array of pointers to objects", then I will write such a program in C. This is no "basic" at all, it's advanced instead. But if I'm going to manage "a list of items of any kind" (numbers, strings, arrays, objects or even other lists) then that's BASIC with new features.
Hope I've explained well :( (I'm not a native English speaker, so sorry in advance).