Sophie Wilson is responcible for bringing us ARM BASIC, also known as BBC BASIC V. This BASIC is very optimal for many things (there are a few areas where it is closer to others than others), having been implimented by the person that simulated the ARM ISA in an earlier version of BBC BASIC.
While missing some feaures that many of us would like to have, it has support for a decent set of features, beyond many other BASIC's.
ARM BASIC has among its native features (this list incomplete):
- Parameterized subroutines (PROC's and FN's).
- IF/THEN/ELSE/ENDIF block statements.
- Multiple types of loop.
- Execute on value statements (CASE/WHEN, like C's switch/case).
- += and -= operators.
- Decent set of graphics commands.
- A very good builtin ARM Assembler, that is still kept up to date with the latest 32-bit ARM ISA.
- A good set of sound releated commands and statements.
- Support for libraries.
- Support for directly making system calls.
Features we do not have:
While it is missing structured data types, it is still possible to deal with structured data fairly easily using pointers.
Strings are limited to 255 bytes, as in many other languages. Though again using blocks of memory and pointers you can get around this, or by using multiple strings.
There are multiple extensions available to extend the function of ARM BASIC, providing some features it is missing (like structured data types), as well as some features that no one wants (like toolbox).
Depending on what test you run, ARM BASIC may be significantly faster than others. In most cases it outperforms all other BASIC interpreters that I am aware of on the same HW, there are very few exceptions to that rule that I have seen.
Lets keep this thread straight. I know that ARM BASIC has its limits. I also know that there are many BASIC interpreters that are clones of ARM BASIC. I also know that for some poor implementations of algorithms the margine of speed is less.