Aardvark DailyNew Zealand's longest-running online daily news and commentary publication, now in its 25th year. The opinion pieces presented here are not purported to be fact but reasonable effort is made to ensure accuracy.
Content copyright © 1995 - 2019 to Bruce Simpson (aka Aardvark), the logo was kindly created for Aardvark Daily by the folks at aardvark.co.uk
Please visit the sponsor!
Prepare your inner geek.
Today's column is probably only of interest to the real geeks within the Aardvark community because I'm talking programming languages and what's wrong with at least two of them.
As regular readers will be aware, I've been doing some programming in Python recently -- more out of necessity than desire. This was my first experience with Python and I chose it because it is pretty much the 21st century equivalent of the BASIC interpreters we all used and loved to hate back in the early days of microcomputers.
BASIC became the language de jour for home computer users for quite a few reasons.
It was easy to learn, ubiquitous, fairly standardised and there was a lot of good instructional material available for those who wanted to use it.
Of course Microsoft were hugely instrumental in making BASIC as popular as it was because their version of the language was available on almost every single 8-bit and many early 16-bit systems. Other versions did exist however, and I remember writing a huge amount of code in CBASIC, a pseudo-compiler that had the unusual property of representing numeric values in BCD (binary coded decimal) rather than binary.
BCD was deemed to be very important in accounting applications because it got around the representation errors that might otherwise occur when trying to store fractional values in base-2. If you are unaware of what this means, do some research, it's fascinating!
BASIC also had the advantage that it was interpreted. This meant you could type in short bits of code and run them immediately, without the need to pass them through a compiler and linker.
Now to Python, the modern-day equivalent.
In many ways, Python is light-years ahead of BASIC but in other ways it's just as bad, if not worse.
The biggest weakness of BASIC was that it lacked much in the way of data or code structuring. Perhaps its only concessions to code-structuring were the abilities to define subroutines and very crude functions. From a data-perspective, arrays were about as clever as BASIC got.
Never the less, and despite these impediments to the creation of reliable large-scale projects, I cut my fair share of MBASIC interpreted code, creating a bewildering array of systems that did everything from simple accounting to a full-blown mail-order database system for what was (at the time) NZ's largest mail-order supplier. Those systems ran on TRS80 computers, ranging from the lowly Model 1 through the Model 3 and right up to the much bigger (it had eight-inch floppy drives!) Model 2.
Due to the limitations of just 64K of RAM and the sometimes very slow speed of interpreted BASIC I ended up coding key aspects of most programs in assembler and ran them as machine-code.
Once you got to a certain level of complexity and scale, BASIC just created more problems than it solved -- not the least of which is that because it was interpreted, there was always the risk of an unexpected "Syntax Error" or whatever popping up when an extremely rarely used line of code was called and it contained just such an error.
This was another reason for me opting to use CBASIC later in the process. At least the compiler would catch all the syntax errors before they became an issue weeks or even months further down the track.
The other problem with large interpeted BASIC programs was that of garbage-collection. Once the string pool had become sufficiently fragmented, the program would go to sleep for what sometimes seemed like inordinately long periods of time as the humble Z80 processor struggled to re-arrange data so as to create some contiguous space for variables.
Python's interpeted nature means that it also has the lurking syntax error problems in lines of code that may only be called once in a blue moon, something that would give any programmer sleepless nights in the early days after commissioning a new system.
The reliance on weakly typed variables without predefined length means that eventually garbage collection would also be an issue with Python, however the fact that we're no longer constrained by a wimpy 64K of RAM probably turns this into a non-issue.
What is more concerning though, is the lack of need to define variables before they're used and, as mentioned above, that very weak type-checking. In fact variables are typed through use rather than by definition -- risky stuff!
Fortunately, Python does have the ability to define functions and therefore the evil GOTO has been banished into the history books. However, there is no real ability to create a data-structure, unless you're defining a new class and within that class we still have the lack of type definition.
Exception-handling is a nice addition (the equivalent of ONERROR GOTO in BASIC) and there is some rather poor concession to (pseudo)multi-threading
So, after a month or so of playing with Python I'm firmly of the equivalent that it really doesn't offer a whole lot more than old BASIC did, aside from a little more ability to structure code, some concessions to object-oriented techniques and significantly better performance -- although the latter is probaby more attributable to the speed of the hardware on which it runs.
Perhaps the ultimate proof that "not much has changed" is the fact that the software I've written (for my ADSB drone/aircraft alarm) still required me to delve into a lower-level language for the time-critical parts and where true multi-threading was necessary.
Yes, Python is the new BASIC and I probably won't be using it again, if I can avoid it.
I'd love to hear what readers' experiences with and thoughts of Python are.
What is your preferred language these days -- whether knocking up a few lines of code or embarking on something a little more ambitious?
Please visit the sponsor!
Have your say in the Aardvark Forums.