I was once renowned and reviled for my lack of regard for Visual Basic. I have since reformed, realising that we all benefit from languages that target developers at different skill levels and shorten the distance between concept and delivery. Modern server computing power and capacity more than offset the performance limitations of Visual Basic and its follow-ons, .Net and Java.
Even though it tags me as a greybeard, I have a firm belief that the welcome trend toward slower, cooler, more power efficient systems — as well as powerful converged mobile devices — requires nosing away from VB, Java, and .Net and back towards software that compiles from an editor down to byte patterns that match a target CPU’s unique, or native, machine language. One finds the antithesis of Java and .Net in C, C++, and Objective-C, the most popular programming languages that compile down to native code.
Native code, you say? Machine language? Egad, how primitive!
How dangerous, bug-friendly, non-secure, outdated and utterly purposeless such nuts-and-bolts techniques are while we live under the rule of Moore’s Law!
Native languages continue to exist, budding PC developers are taught, solely for the purpose of producing “system software”, an umbrella category that covers device drivers, operating systems, video games, viruses, worms and DVD rippers. Only these sorts of programs must sacrifice ease of development and short time to market for maximum performance and minimal memory footprint.
Software performance — or more appropriately, efficiency — and minimal utilisation of memory and other system resources are objectives that remain relevant to broad classes of applications on non-PC platforms, including embedded, mobile and low-power systems, minicomputers, mainframes and the Macintosh. Characteristics of all these types of systems are being folded into everyday hardware and what all of these platforms have in common is the need for native code.
On the Macintosh, it’s every application’s duty to conserve resources. If all applications share that goal the user can do far more with far less hardware. As a result, Mac users can run six or more user-facing applications at once on systems with 1GB of RAM or less, with newly launched applications having little or no impact on the performance of those already running. Objective-C native code and the programming discipline that grows from it make that possible.
In embedded and mobile systems, native languages rule. Two embedded architectures from Rabbit Semiconductor (now part of Digi International), Renasas and Maxim/Dallas Semiconductor operate at speeds less than 100 MHz and with total memory of 1MB or less. Yet, they’re programmable in advanced multi-threaded C dialects and require optimisation techniques that should be required learning for all developers.
Big iron, on the other hand, clearly shows that worries about the lack of sandbox security are overblown. That’s because mainframes run operating systems on virtual hardware: if it isn’t real ham-handed or malicious code can’t break it. Applications with the efficiency of native code and the safety of .Net or Java? Maybe there’s something to this virtualisation thing, after all.
If so, my VB rehab might have been a waste of time.
Yager is chief technologist at the InfoWorld Test Centre. Email him at firstname.lastname@example.org