OT: Language for the ages
infomagic
infomagic at localisp.com
Tue Oct 18 22:32:08 CDT 2005
> Here's an interesting problem.
>
> Suppose you wanted to write an application for a
> manufacturing process that will, in all probability, run for
> the next 30 years. No direct control of the process itself
> is entailed (i.e., you don't need the program to operation
> valves or run motors), but you do need this program to
> compute manufacturing parameters for each customer. I/O
> requirements are very modest, mostly simple keyboard and display.
>
> What would you write it in? Clearly, you'd want to be
> independent of a particular software vendor, so the likes of
> Visual BASIC isn't an option.
> You'd also want to write in a language that isn't nearing
> obsolescence, nor one that's still evolving. "Niche"
> languages would be out of the question, as longevity could be
> a problem.
>
> So what would it be? My vote is for FORTRAN.
I've been following this thread for a few days now, and I'd like to contribute my $0.02.
The original problem statement asserted several presumptions:
>you'd want to be
> independent of a particular software vendor..
>...
> You'd also want to write in a language that isn't nearing
> obsolescence, nor one that's still evolving. "Niche"
> languages would be out of the question, as longevity could be
> a problem.
I think a number of people were duped by these presumptions into focusing on the longevity of
the language. To me, having seen many good things come and go, I would not speculate on
the longevity of anything that we could conclude might have permanence. Many languages have
appeared to be "the answer for all time" only to fade into obscurity, not for lack of good
qualities, but because of the money behind some other language's marketing department and
the heat of passion for the new stuff in the buyer's pockets.
But in the stated problem there are larger issues that have mostly gone by without discussion.
Given the original problem statement, I would have to ask:
- If the app is not "controlling the process itself", then what is it controlling?
Given that the process varies per customer but the app does not control the process itself, then
I'm going to hypothesize that the app controls information about the process, such as variations in a
manufacturer's process "recipe". For example, the process produces a commodity such as gasoline,
and different customers each purchase their own formulation.
If the output is a custom formulation, then, after any number-crunching, the app could produce a very
simple text document.
Would such an application require the power of FORTRAN or C?
If the I/O is mostly for data entry and display, then couldn't a raw Access databse suffice? At the very
least, the data could be more easily forwarded to a newer environment than custom code.
- Will the application run on a general-purpose computer or on a specific architecture?
If general purpose, then survivabilty of the language (its development and operational environments)
would be of primary concern.
If on a specific architecture, it would make sense to write it in the machine language of that platform,
provided it was fully documented with specs and functional comments.
- Is the manufacturing process expected to persist without significant changes for the 30 years?
If so, the app could be burned into a stable media (PROM, EEPROM, or the like).
But if it would be subject to significant changes, perhaps better to maintain source and compiled
versions.
Having run a factory for 6 years, I understand the desire for a solution that can be created and
left alone. But 20 other years in business and in systems, I know that things change, and often when
least convenient and most costly to rectify.
It is a good goal to want a system that will run unaltered and survive for 30 years. But will the business
still be in business then? Or will the industry have changed, the need for the product in the marketplace
have changed, the machinery or degree of meeting customer variation have all gone away?
I think the solution to this problem does not lie in having "one right answer", but in having a
data-forwarding strategy that is flexible, responsive, updatable, and maintainable. It would be better
to change the app several times in the 30 years with reasonable costs than to bet on one solution that
could be broken a few short years later. Just depends on what's at risk and how much of a gambler you are...
So, I hope that's some food for thought...
-John M.
Montclair, NJ
More information about the cctalk
mailing list