With the first few rounds of the tournament in the books, I figured it was time to dive into the first round of our programming language tournament (or Nerdament as I like to call it.) For a run-down of the competitors, you can check out the opening bracket or you can also review some of the snubs. Once you are caught up, I hope that you are as excited for some fast-paced compiler vs. IDE action as I am.
Our first matchup features the highly favored C# .Net taking on lowly, olde-timey conference winner Punch Cards. Obviously, even if we weren’t a Microsoft Gold Partner and I wasn’t such a huge proponent of C#, this still wouldn’t be much of a contest. However, there is some really fascinating history of the punch card system and how its impact can still be felt in programming today. Punch cards, in addition to setting the 80 column width limit on older terminal interfaces that you might still see today, also served as the launch pad for tech-giant IBM (originally International Business Machines.) For our purposes, however, without even getting into the mud-slinging of hanging or pregnant chads, we’ll go ahead and move C# as our first team into round 2.
Our second matchup, good ole’ plain C vs. VBA presents a somewhat more even pairing. For me, I can’t help but feel some affinity towards VBA, as was the medium for some of my earliest professional programming. After dabbling with some QBasic (ah the blue-grey IDE!) and HTML at a young age, as most young boys do, discovering VBA inside of Excel and Access really let me wow fellow engineers in my first few internships. When you evaluate VBA in the context of what it’s expected to do, it serves its purpose really, really well. However, this round it is up against C, whose versatility, in stark contrast to VBA, is practically unmatched. C can be thought of as the grandfather of languages like C# or C++, it can be compiled for almost any platform from microcontrollers to popular operating systems, and it is still one of the most widely used languages around. Ironically, both these languages have similar shortcomings, such as lack of object-oriented capabilities and manual memory management, meaning that C, with its huge advantage of portability, joins C# in round 2.
Matchup 3, Ruby on Rails and Matlab features 2 of the lesser known competitors coming into this tournament. Ruby on Rails is one of the newer kids on the block, having developed over only the last decade or so. Based on the Ruby language, which is widely used itself, Ruby on Rails is a language specifically geared towards web development. Its core principle of DRY (Don’t Repeat Yourself) coding is something every programmer should follow and the MVC architecture inherent to RoR is one of several great ways to structure a program. All that being said, however, RoR suffers from some early growing pains between versions and compatibility and probably has some maturing to do. Matlab on the other hand, has been around for what feels like forever, and most of us probably used it at one time or another to crunch numbers in school. If you have major numeric processing to do, LabVIEW is probably the way to go, but since graduating, I can’t say that I’ve seen Matlab pop up more than once or twice. Matlab just seems to be more of a research tool than an application development platform. From weak typing to limited GUI tools, the typical expectations of programmers just aren’t met, and accordingly, companies aren’t willing to invest in Matlab development licenses. Honestly, I’m not blown away by either of the two competitors here, but I think we’ll move Ruby on Rails through if for no other reasons than having the right idea in their mission statement.
Our fourth and final matchup of the day, Ladder vs. Python is an intriguing matchup, because the 2 platforms are such polar opposites. Ladder’s low-level, no-nonsense programming is specifically targeted for robust, real-time systems needing reliable control. Ladder logic and PLC’s have a fairly intuitive programming structure (it’s just like an electrical schematic!) but obviously can be restrictive at times. Ladder logic is another case of a language being great at what it’s meant for. It probably won’t be winning any software architecture contests, but it makes modern life possible, from automated factories and building technology to amusement parks and public transit. On the flip side, Python was created to be one of the most flexible languages around, and has a pretty impressive standard library. Coming from .Net, I wish that Python has static type checking, as having type checking in the compiler just makes me feel warm and fuzzy, but at least it is enforced at runtime. I also worry that, as an open source package, Python suffers from fragmentation, especially when it comes to getting started, choosing an IDE, compiling, and developing GUI’s. The choices can be overwhelming for a new-comer. Still, running the risk of global infrastructure spiraling out of control, I’m giving the nod to Python (in honor of Dan Aukes) for the first upset of the year.
Stay tuned for the second half of round 1 soon!
Return to Part 2 - The Snubs
Continue to Round 1, Part 2