Bridging the Gap

Can we bridge the gap between Software Development and Researchers ?

Recently I was in a meeting with fellow civil engineers, debating the pros and cons of Fortran and C++, the argument being that some of the engineers were ready to embrace the bold “new” world of C++. This made me think about the realities of software development and numerical modelling in many companies, especially those in engineering.

Here I was in heated debate regarding the object orientated and memory management capabilities of C++ against the robustness of Array operations in Fortran, when it struck me that few, if any in the room would fully utilise the functionality of either. In reality most engineers will do little more than sequential coding, while some will venture into the object orientated world, few will understand the nuances of it, nor the complexities of memory management.

My experience has taught me that although in an utopian world we would all work together towards our commons goals from the start, that this remains unlikely. Software developers will be presented with expensively developed functioning prototypes and experimental platforms that have been inefficiently produced, with the expectation of a well polished product, at low cost.

In recent years the emergence of Python, has over taken the use of products such as Excel and Matlab in the production of prototypes in many fields. However they all have one thing in commons, firstly they all have extensive libraries with a large array of functionality and secondly, and perhaps more importantly they are all easy to use. Yet still these platforms can lead to poorly formed algorithms in the hands of the inexperienced.

So the question I would like to ponder is this, can more traditional and powerful languages be presented in such that allows efficient development by the layperson, while providing a strong basis for product development ?

To my eyes the complexities of these low level platforms, lie in the languages used, a page of often obscure commands is compiled, or interrupted, into the end product, and as with any language, the more fluent you are the better you can communicate, and this is true whether you are communicating with a person or a computer. Therefore one must ask why high-level languages have not gone beyond the written language and to a more visualized presentation above more powerful lower level languages.