BUSS Ltd are a specialist technical and scientific computer graphics company, who have been supplying their SIMPLEPLOT range of products and other services for over 20 years.
The BUSS SIMPLEPLOT graphing library was originally written in the early 1980's in Fortran for use on mainframe and minicomputers. Over the last 20 years SIMPLEPLOT has been ported to many systems, and languages, including C, C++, VB, Java, and Delphi.
At BUSS Ltd we like to ensure that our products are as portable as possible, while still being relevant for the platform of the day. The last 10 years has seen a profusion of language bindings and platforms which have their own strengths and weaknesses, and their own ardent followers. The problem of maintaining so many different language bindings is non-trivial, especially with the rate of change of compiler releases.
The Microsoft .NET framework offered a possible long term solution to these problems, by allowing a single product to work well with many different language bindings, and potentially across many different platforms.
Moving the SIMPLEPLOT family of products to the .NET platform would not be easy however. SIMPLEPLOT has evolved into 2 major branches, the original Fortran branch, and a new C++ based branch. At first the obvious choice was to convert the C++ branch to managed C++ for use with .NET, but other work was also required. In addition to porting the core SIMPLEPLOT code, a new .NET control would need developing to interface with Windows Forms applications and the .NET framework. This control would be independent of the underlying SIMPLEPLOT code and could be developed separately.
The complexities of learning the .NET platform, developing the new .NET control and porting up to a hundred thousand lines of code meant that the project kept getting pushed back and back. Worries about the performance of the .NET platform also did not encourage early adoption.
Enter the Silverfrost FTN95 for Microsoft .NET compiler
At BUSS we have had a long and profitable relationship with Salford Software. Back in the days of 16 bit applications the Salford compilers with their 32 bit runtime system provided the best platform for scientific and technical computing on the PC. SIMPLEPLOT has run on the Salford compilers, first under DOS and later under Windows for many years, and has many active customers.
News that Salford (the original developers of FTN95) were developing a Fortran 95 compiler for .NET provided us with the opportunity we had been waiting for. The Fortran version of SIMPLEPLOT should easily port to the Silverfrost FTN95 for Microsoft .NET compiler, allowing us to concentrate on the development of the new .NET control which would be required.
Despite the fact that we were working with a preview version of the compiler, the 60,000 lines of SIMPLEPLOT Fortran code compiled first time with the .NET compiler and we were able to get a user program running against it within a few hours of downloading the compiler. This was only half of the story however, without a .NET control to handle the interface to the .NET graphics layer, there would be no pictures.
Having the bulk of the porting work done in a couple of hours by the FTN95 for .NET compiler, freed up a huge amount of time to spend developing the .NET control.
All of the control development was carried out in C#. This meant that at some point the C# and the Fortran code would have to communicate. This turned out to be surprisingly easy. We were able to create an instance of the control within a Fortran program, pass this down to the SIMPLEPLOT Fortran code and then call the C# drawing routines directly from the Fortran.
A couple of days later, with the drawing routines added to the C# control, we managed to produce a first graphics from SIMPLEPLOT.NET.
The ability of the Silverfrost FTN95 for Microsoft .NET compiler to interoperate within the Visual Studio .NET IDE and to allow mixed language debugging was a major plus when developing the .NET control. We were quickly able to track down any issues with the C# control.
As the C# control neared completion, and we were able to start validating the output of our standard test programs, one other feature of the FTN95 .NET compiler became apparent. It was fast, very fast. This has been a major worry before we started; our experience with other JIT compilers was not good. This proved to be a groundless worry with Silverfrost FTN95 for .NET. The performance was satisfactory when running from within the Visual Studio .NET IDE, and when running standalone it was impossible to tell the difference between the .NET application and a natively compiled application.
Our experience with the Silverfrost FTN95 for Microsoft .NET compiler has been very good. There have been some issues, which you would expect with a preview release, but these have all been sorted out quickly. Overall we are delighted with how the project has gone. We went into the project looking to provide a graphing solution for users of the Silverfrost FTN95 for .NET compiler, and to develop the .NET control that would be required. The performance we have been able to achieve means that we may now postpone the idea of porting the SIMPLEPLOT C++ version to managed C++.
We would certainly recommend the Silverfrost FTN95 for Microsoft .NET compiler to our customers and anyone who wishes to move an application to .NET while reusing legacy FORTRAN code.