Blog

Programming Madness - Last of the Quarter Finals

Programming Madness - Last of the Quarter Finals

Man time sure does fly. It seems like it was only a few weeks ago that I started a programming language competition in perfect synchronization with that month’s college tournament. Now that we are almost into the 3rd month after March though, I can only claim laziness, busy-ness, or an extravagant penchant for prolonging suspense as excuses for dragging this series out so long. For my own sake, I think I’ll take the last option. Regardless, we have seen a lot of shattered dreams and at least one magical Cinderella run (congratulation for strong nerd support and favorable matchups, Python.)

The tail end of round 2 graces us with the matchups between Java and LaVIEW and Objective C and C++. As we have seen before, Java is a widely used, extremely flexible, and free programming platform. Despite ongoing disputes between Google and Oracle, Java is an integral part of the Android platform, which has only made Java more of a rockstar. The many high level functions that Java automatically performs “under the hood” allow developers to focus on writing great applications, rather than get lost in memory allocation issues or tied up in painful debugging or code maintenance. Java has been embraced by open source communities (again, free!) meaning that there are numerous reusable libraries you can drop in when needed. On the flip side, LabVIEW is a language that is closely managed by its owner, National Instruments. In ways this can be a very good thing, since it avoids fragmentation that can occur when too many cooks are in the kitchen. However, it has also meant that popular new features may be slow to surface. LabVIEW is also the only Dataflow based programming language on our list, meaning that it takes a different mindset than do the traditional C-like languages. This definitely has its uses, but it also can lead to silly mistakes and is prone to race conditions, and it just isn’t what programmers are generally used to. As such, for the purposes of this competition, despite being a Certified LabVIEW Architect myself, I think that I will have to give Java the edge. If the competition had more to do with hardware and data measurements, though, it would definitely be another story.

Objective C and C++ is a much less differentiated matchup. Both languages were created or popularized in the 80’s as beefed up alternatives to C, specifically adding classes and object oriented design. However, they go about achieving this goal in entirely different ways. C++ uses what is called “Simula” style, meaning that methods called on classes are all resolved at compile time. Objective C instead uses a messaging paradigm that is derived from its predecessor, Smalltalk. In this design pattern callers just blast messages out to classes who then resolve what to do on their side. This reminds me a lot of UDP versus TCP where the sender just broadcasts something and the receiver does what it wants, but there isn’t really any handshake between the two, so if the method doesn’t exist on the receiving side, the call just quietly dissolves into the ether. To me, this sounds prone to difficult debugging, and I am a huge proponent of strongly typed enforcement. Without diving more deeply into Objective C, I am going to call it here and send Objective C home, and C++ on to the semi-finals.

Well, that’s it for today, but we are getting closer and closer to crowning a champion. Honestly, I have to say that I would be happy to code all day in any of the languages we have left, but, in true DMC competitive fashion, one must be crowned the best!

See the Other Quarter Final Games

Check out the Conference Finals

Comments

Anonymous User
# Anonymous User
Programming Madness National Championship
Dan Aukes
# Dan Aukes
Who will win? Who will lose? Will python continue its ascension or be crushed by the weight of the CLR? And when will Danny finish the article series?

So many questions...

Post a comment

Name (required)

Email (required)

CAPTCHA image
Enter the code shown above: