As I've mentioned before, I was recently approached to recommend a programming language for a Maker's Club in Arizona that was decidedly NOT Python. My research turned into a large spreadsheet that covered 26 aspects of the top 13 out of a total of 54 versions of BASIC that are available in the wild. And of those 13 versions, the reason I'm here; QB64 was the hands-down winner, with second place scoring a full 18.6% lower score! I can't stress this enough: QB64 blows away all other versions of BASIC - quite handily in fact.
But it's not perfect. While the built-in editor is really quite clever in providing error reporting and interactive help, it is very legacy PC-centric, making it out of place on modern platforms, and it doesn't provide code completion or folding. Well...Oh darn. Can't have everything, right? More about that later.
For this message, I wanted to share my findings in comparing QB64 with Python. And I must admit, I was surprised by what I learned.
Python and QB64 both have a very long history, but very different paths. Python started in 1990. The path got a little confusing in 2008 when the heavily revised version 3.0 was released and it met with some strong resistance from the version 2.7 hold-outs, but that all got resolved this January when they simply stopped supporting the older version altogether. They tried as early as 2015, but the hold-outs were dug in pretty deep.
It can be argued that QB64 can trace it's roots as far back as 1975 with the first version of Microsoft BASIC. Technically however, it was first released in 2007. But since it was designed from the start to be practically an expandable clone of Microsoft's QuickBASIC, which was released in 1990, I prefer to hold onto that date. That puts it right on par with Python which was released the same year. Ooh, plot thickens!
So on to the comparison of the more important aspects... First, I decided to expand the number of comparison aspects to 28 to include Code Folding and Debugging. These two aspects were not important to the Club since they were not planning on having large code projects that would need them.
Well, after everything is scored, it pains me to say it, but with just one glaring, massive exception, Python handily beats the socks off QB64. (But don't run off just yet!) First off, there are numerous IDEs available for Python that include all of the fancy editor features QB64 lacks. Also, The Rosetta Code site is chock full of code examples for Python while the entries for QB64 are simplistic and few (I've added a handful myself, but my programming skills are very limited). And the penultimate aspect; the ability to create web pages, seems out of reach for QB64 while Python is an old hat in that rodeo. Not sure that's really all that important, but it was to the Club, so I left it on the list.
BUT!!! The biggest, and most important difference between the two is the simple fact that Python is NOT BASIC!!!
In some ways, it's deceptively close to BASIC:
print("Hello world!")
And in some ways, it's deceptively simple:
def fibGen(n):
a, b = 0, 1
while n>0:
yield a
a, b, n = b, a+b, n-1
But once you realize that tabs are required in exacting positions and to do anything beyond these simple examples requires the addition of libraries and pointless OOP elements, it very quickly turns into something that looks like it went through a wood chipper. Or worse, it's so cryptic, you can't figure out what the heck it's trying to do in the first place. I mean, what the heck is this?!
import pprint
pprint.pprint([i for i in xrange(10, -1, -1)])
It's a simple For..Next..Step -1 loop. That's it. Yuck.
So, bottom line, QB64 scored 346.5 against Python's score of 378. But by just improving two things, QB64's score could be increased to just barely outpace Python. But that's huge when you think about it! QuickBASIC could take on Python and win?! You bet. And all it would take is these two things:
1) Heavier community involvement on the Rosetta Code site. (That's very achievable.)
and
2) A more extensive and modern cross-platform IDE with automatic code completion, code folding, integrated debugger, GUI designer, icon designer, menu designer, integrated automatic help, and platform specific key assignments (e.g., CMD+C [Copy] for Mac instead of CTRL+C).
Of course, none of this is actually necessary. After all, who cares if Python can do things QB64 can't? It doesn't matter if Python scores higher on some fat, old guys arbitrary spreadsheet.
I just have a dream of one day seeing BASIC back on top in people's minds - particularly new programmers. I would love to see Raspberry Pi programmers gravitating toward BASIC instead of Python. BECAUSE BASIC IS BETTER, DAMMIT!
To that end, I humbly suggest that a more robust IDE editor and greater focus on the Rosetta Code site would be of benefit to the QB64 community, and I offer my assistance any any way I can to help those two come to fruition. It may even be possible to monetize the project by continuing to offer the language and associated software for free but charge for extensive, age-grouped, educational materials and specialized publications for subjects like game design, science, hardware projects, robotics, etc.
I would love to hear your opinions and ideas.
Thanks for reading all this crap!
:@)