Comments on Computer Languages


Comments on Computer Languages



by David Barth, 2006



I worked on Y2K with Gates Rubber Company here in Denver, and our work went very well with no problems at the turn of the century. The interesting thing is that a couple of years after Y2K, Gates management was told by Oracle that Cobol was outdated, and that Oracle apps could be put in place quickly and efficiently to provide the same functionality and even greater functionality. Gates management, like most managment, assumed that Oracle's pitch was accurate.

So, Gates hired an outside vendor to come in and rewrite their apps in Oracle. Oracle's bid was too astronomical to consider them to do the rewrite. The selected vendor promised that the work would be done in a year. At the end of the first year, they begged for six more months. Six months later, they begged for another six months. Gates was bleeding big bucks to pay those 35 rewrite guys, and after two years, Gates management said install it, bring it live, and get the hell out of our house because we can't afford to go into the third year of rewrite. Well, it was cripple-ware, and, over the first five years, it was smoothed out, but compared to the original Cobol, it is a train wreck. Much less functionality than the old Cobol apps.

Converting to a "new" language is a tough row to hoe. I hope that no companies try that trick without a lot of study (and some luck).

When Grace Hopper described Cobol to somebody many years ago, the person said, "But Grace, then everybody will be able to write programs!"

I asked a C++/Java programmer how he did maintenance on code that has thousands of lines of gibberish code that looks like "i(r,q,m)x". He said they carefully determine where the offending code is, surgically remove it, and rewrite the new code from scratch because existing code is rarely maintainable, let alone, readable.

Once the bugs are worked out of an app, maintenance is in direct correlation to changes in company policy and procedures. Maintenance that is designed to keep an app up-to-date is necessary, regardless of the language it is written in. A company that freezes the functionality of its apps can reduce or reassign its maintenance staff, but most companies don't want to do that.

The problem with C-based languages like C++, Java, C# [C Sharp], and VBA is that there is no language reference because there are a zillion ways to write code. And, that code is all in shorthand, so it isn't self-documenting like Cobol is. These languages, as well as VBA, are descendents of C, which was developed by some guys at Bell Labs who had too much time on their hands. They didn't expect or want that sort of shorthand code to be used to write massive apps. They wrote it so that they could do little, quickie programs without getting "writer's cramp."

Now, we have these huge monstrosity programs in Java and C++ that, someday, will fail massively. I think we have a long way to go before we have a way to write code easily, as we had with Cobol. At least with Cobol, you could "read," understand, and maintain it, if the original programmer did his job right.

As for "object oriented," a buzzword that ignorant managers jumped on and decided they had to have it, even though they didn't know what it was, Cobol was given that capability by Fujitsu, but it was too late. Cobol was considered "old stuff, unworthy of use." So, here we are with gobbledegook C++, Java, and VBA code that is difficult, if not impossible, to read. I took three college classes on C++ and Java, but I didn't get much out of them except a feeling that we've gone backwards as far as programming goes.

I had a project a couple of years ago to write some VBA for Excel. I bought $100 worth of books about VBA to try to write the code I needed to reformat billing statements. I soon found that the books were worthless, and the only way I could find out how to write it was to do Internet searches. And sure enough, there were guys out there who had put up blogs saying, "Hey, I accidentally found out how to do such-and-such, and here is how to do it." Thank goodness for those guys. I found the code I needed in about a dozen different Internet locations, and was able to complete the project. No one else on the planet can read that crap, but it works!

Intercom, the magazine of the Society for Technical Communications, has a technical glossary that describes C++, C# [C sharp], and Java as follows:

"Three variants of a single programming language [C] in which it takes longer to create a printout of the phrase "Hello World!" than if you were to carve it in stone with a hammer and chisel. Industry critics believe these languages single-handedly ended efforts to make computers serve humans rather than vice versa."