Should We Still Use the C Programming Language?
Within Sage Accpac ERP, most of our Business Logic (our Views) are written with the “C” Programming Language. C was originally developed to write the original Unix kernel in. It was intended to be nearly as efficient as assembly programming but way more productive for programmers. C is still in wide use today. The Linux kernel and many open source projects are still developed in C. Many Microsoft products are still written and developed in C. Most video games are developed in C. The original idea of C was to be a portable language where you can compile your programs for different platforms, like Linux, MacOS or Windows; and in fact we can compile our Views for either Windows or Linux.
We often get asked whether we will re-write this Business Logic in a more modern programming language like C# or Java. These are object oriented derivatives of C with many of the bad things in C removed (unlike C++ which keeps all the “bad” pointer stuff in). Part of the question is whether there is any Business case for doing so? Would C# or Java make a difference for end user customers? Is this a necessary step, no matter how expensive, to keep the product maintainable and capable of delivering the features and functionality required for tomorrow?
While contemplating how old C is, I ran across a news article celebrating COBOL’s 50th birthday and pointing out the 70-80% of business transactions in the UK are still processed by COBOL programs and that 32% of enterprises still employee active COBOL programmers. I guess this shows how persistent technology can be. How hard it can be to re-write. And how much mileage you can get from an older technology. The ROI on these original COBOL programs would turn out to be huge, given how long they have been in service.
For us C has been very powerful and we’ve gotten a lot of use out of it. But questions remain. Universities tend not to be teaching C programming anymore, so can our ISV partners as well as ourselves continue to find enough C programmers to meet our needs? Is our C code getting old? Is bit-rot setting in? Is it worth re-writing in a new technology for the benefit of re-factoring all the code during the re-write to make it more maintainable and efficient alone. There is also all the logistics of transitioning from the old technology to the new; managing things when half the system is in the new technology and half in the old technology. Currently there are thousands of Views and hundreds of thousands of lines of C code; transitioning this will be a major undertaking.