Software for the finest computer – The Mind


Posted by Tim Bryce on February 26, 2012


For something that is supposed to be “soft”, computer software exhibits some pretty “hard” characteristics. The original premise behind the COBOL programming language was to devise a language that could be easily ported to several computers. This never truly happened due to computer manufacturers who tweaked the language to suit their particular needs. What ran on an IBM machine, for example, didn’t necessarily run the same on Honeywell, UNIVAC, or the rest of the BUNCH. Consequently, software developers had to maintain different versions of source code to suit the particular needs of the various computer compilers. This plagued all third generation languages until Sun introduced JAVA in the 1990’s. The JAVA premise that a programmer should “write once, run everywhere” was the right idea and the language began to gain momentum, until it ran into Microsoft who didn’t want to turn the operating system into an inconsequential afterthought. JAVA lives on, but not to the extent it should have, and developers are back to managing separate versions of source code.

The point is, software does in fact exhibit some very “hard” characteristics as it is married to the host computer configuration which doesn’t make it very portable. As mentioned, this creates headaches for those of us, particularly commercial software vendors, in terms of maintaining consistency in the different versions of our products.

What to do?

Back in the 1970’s and 1980’s our company was faced with the dilemma of managing a single product on over a dozen different computer platforms. We quickly came to the realization we would go stark raving mad managing multiple versions of source code and came to the conclusion we had better come up with a solution pretty quick. Because of our experience in converting software, we became well versed in the nuances of the various compilers and devised a Repository (we called it a “filter program” at the time) which maintained the rules of the various compilers. We were also very disciplined in writing code to specific standards and embedded certain switches in the base source code. When we were ready to produce a new release of our product, we would feed the base code into our “filter program” which would then create the different versions of the source code ready for compilation. This saved us an incredible amount of time and brought consistency to all of the versions of the product. In other words, our programming staff worked with only one set of programming code (not multiple variations). The “filter program” then analyzed it and created the necessary permeation for a targeted platform. As compilers changed, we would update the “filter program” accordingly.

We also learned to maintain print maps, screen panels, messages and help text separate from the source code, which greatly enhanced our ability to create a new version of the product to suit a foreign language and culture; see “Creating Universal Systems.”

Let us take it a step further, for years we have touted there are logical and physical dimensions to Information Systems. We look upon Systems and Sub-Systems (business processes) as logical constructs, and Procedures and Programs as physical constructs. Further, data components such as inputs, outputs, files, records and data elements can be specified logically and implemented physically many different ways. Let me give you an example; back in the 1980’s one of our customers (a large Fortune 500 electronic conglomerate) bought into our logical/physical concept and decided to put it to the test. Working from their headquarters, they designed a complete Payroll System which they wanted to implement as the corporate standard across all of their divisions and subsidiaries. They completed the system with a recommended programming solution they wrote themselves (no packages were used) which I believe was an IBM MVS solution using COBOL. However, they recognized this implementation wouldn’t work across the board in the company. Consequently, they gave the system specifications to all of their divisions who would then program it themselves in-house. The project turned out to be a major success and the company ended up with multiple implementations of the same system under IBM MVS, VM, Honeywell GCOS, UNIVAC Exec, HP MPE, DEC VAX/VMS, and Prime; all working harmoniously together. Other customers experienced similar successes, particularly in Japan.

All of this drives home the point that systems are logical in nature, and that programming is physical. If systems are designed properly, there is no reason they shouldn’t behave identically on whatever computer platform you come up with. Better yet, it allows us to easily migrate our systems from one configuration to another. Uniformity and consistency in execution; and portability to boot. Imagine that.

“Systems are logical, programming is physical”
– Bryce’s Law

Keep the Faith!

Note: All trademarks both marked and unmarked belong to their respective companies.

Tim Bryce is a writer and the Managing Director of M. Bryce & Associates (MBA) of Palm Harbor, Florida and has over 30 years of experience in the management consulting field. He can be reached at

For Tim’s columns, see:

Like the article? TELL A FRIEND.

Copyright © 2012 by Tim Bryce. All rights reserved.

3 Responses to “IS SOFTWARE HARD?”

  1. Joe Duhamel said

    Nice! The genius was in conceiving, writing, and maintaining that filter. I’m no programmer, but I do something similar when I use FileMaker Pro for various uses like grading. Scripts enable me to create filters for different courses that have a similar rubric and assignment structure, but the specific tasks for each course are all different. It’s still specific to ME and my few courses, but as I teach different courses over time, the matrix will, out of necessity, become more generic, and the scripts for each course more specific. At some point, I’m sure I could create an app for it all and sell it.


    • Tim Bryce said

      Joe –

      Great minds think alike. As I said, this was a “common sense” approach for solving the problem. Although the approach I mention sounds simple enough, it is rare to see it in the software industry.

      All the Best, Tim


  2. Tim Bryce said

    A G.K. of Morrinsville, New Zealand wrote…

    “Interesting thoughts, Tim, but this section is not quite correct.

    ‘This plagued all third generation languages until Sun introduced JAVA in the 1990’s. The JAVA premise that a programmer should “write once, run everywhere” was the right idea and the language began to gain momentum, until it ran into Microsoft who didn’t want to turn the operating system into an inconsequential afterthought. JAVA lives on, but not to the extent it should have, and developers are back to managing separate versions of source code.’

    Sun’s concept was an ‘engine’ that would interpret the code but it also realised that the engine would have to be specific to (a) the chip set (hardware) and (b) the operating system. This was not a new concept — it had been used with BASIC for more than a decade. Sun programmed the various ports of the Java engine to suit operating systems. The reason Microsoft resisted it had nothing to do with Windows. They were already developing Visual Basic which uses a just-in-time interpreter technique. They, too, were hoping to gain universal acceptance of VB. Had they succeeded no doubt we would see ports for the “engine” to other operating systems.

    The point you make, though, is valuable, which is where cloud computing and web applications come into play. Using languages such as PHP, Ruby and the like, applications which run on a server and are accessed through a browser are, as far as the user is concerned, completely independent of the operating system of his/her computer. VB Script and Java Script, which run on the client side, require an ‘engine’.

    You might recall that in my last email I referred to some systems I had developed. Parts of theses were implemented in PHP and accessed by a web page on an internal server.

    It is not surprising that Microsoft, Google, Apple, VMWare and others are offering Cloud Computing facilities is it?”

    A J.S. of Skidway Lake, Michigan wrote…

    “I am impressed, Tim. I know how to use my computers, but don’t really know how they work. I need to thank you and others like you for making the process so much easier.”


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: