Does It Pass the So What? Test?


Does It Pass the "So What?" Test?

Throughout the years, I have implemented "The Animal Game" in the following languages:[6]

[6] The list reveals my programming roots: I come from the scientific side of the house, not the business side. Although I did have to manage a group of COBOL programmers once, I was so busy at the time that learning their lingo was way down on the priority list. And, to tell the absolute truth, I still suffered from "language snobbery" at that point in my career.

FORTRAN

BASIC

APL

Pascal

FORTH[7]

[7] FORTH is the exception to the rule that programming languages are all caps only if they are acronyms. Charles Moore, the inventor of FORTH, wanted it to be a fourth-generation language, but the computer he was working on only allowed five-letter identifiers and capital letters, or so goes the folklore. The individual letters of FORTH do not stand for anything themselves.

C

Ada

C++

I would have done Java, but[8]...

[8] I really am getting too old for this. And to be perfectly even-handed about it, I will decline the opportunity in C# as well.

In general, it takes me a few hours to recall how to make the linked list work and get something on the air. To allow someone else to play the game unsupervised (which means doing some error handling) usually takes me a few days of programming. I could probably go faster if I could ever find legacy code for any of the previous implementations, but I never can. The exercise gets repeated with a periodicity of every four to five years, which is just long enough to lose the last example.

But, you say, why should you need legacy code? Don't you have a design spec, a pseudo-code document, or a UML diagram lying around that would enable you to do the implementation without referring to the last piece of code you wrote?

The answer is twofold: Yes, I do develop the diagrams and pseudo-code, but I get to do it over again each time because I can never find that, either. Second, seeing how you did something in the last language is a useful crutch when trying to do the same thing in the new language. If I had my druthers, I'd be able to locate both my last diagrams and pseudo-code version and my last language implementation. Together, they would give me a quicker start. If only I kept better records. Oh well. Although this would be a grievous infraction for a software development organization, it is a somewhat lesser sin for what is, after all, a small, personal, programming effort.

By far the most bizarre implementations I've done were in APL and FORTH. Practitioners of those languages will probably understand why, and it is futile to try to explain this to non-practitioners. Absent from the list of likely suspects are LISP, Smalltalk, PL/I, and COBOL. There is nothing to prevent you from trying these; I just never have.

Incidentally, one of the other things you learn each time you do this exercise is the nature of the development environment and the available tools. I learned, for example, that the early C++ debuggers were not that wonderful; on the other hand, the utility of the Rational Environment was apparent, and my Ada implementation was done in record time. When I did it in FORTH, I learned how to reboot my machine every time there was a runtime error.




The Software Development Edge(c) Essays on Managing Successful Projects
The Software Development Edge(c) Essays on Managing Successful Projects
ISBN: N/A
EAN: N/A
Year: 2006
Pages: 269

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net