Languages, Platforms, and Paradigms:
Choosing for Long-term Fit
Many, if not most of us, have worked with systems where the language, paradigm, or platform was a poor fit to the task at hand. We have seen scientific tasks written in COBOL; string manipulation written in FORTRAN; incomprehensible spreadsheets; and positively impenetrable scripts. Nobody sets out to choose a wrong or create an unnecessarily complex project. Why does it then happen with such regularity?
Incremental engineering is often deceiving. An approach seems simple and more than adequate at the outset, yet as we delve deeper, the reality is more complex. Individual steps do not in and of themselves appreciably contribute to overall complexity; it is the sum of all such steps over time that is disheartening. This is a cost of evolving systems without forethought, a concept familiar to anatomists and evolutionary biologists.
Often, the problem can be avoided by a developing an understanding of the expected evolutionary trajectory. The key to developing this understanding is familiarity with both the positive and negative costs associated with various implementation choices.