Goldenseal Pro and C++ (Aug 3)

For the code that runs Goldenseal, we use the C++ programming language. C++ was first developed in the early 1980s as an object-oriented extension of the C language, which was introduced itself in the early 1970s.

C is currently the second most popular programming language (behind Java). It’s often used to write operating systems (Windows, Unix, Mac OS), code libraries, and imbedded systems like the one that runs your car or truck. C++ is the third most popular language (per Wikipedia). It is better suited for large desktop apps like Goldenseal. The object-oriented features make it a teeny bit slower, but they also make it much, much easier to program big projects.

C++ was first “standardized” in 1998, with a set of “standard libraries” for handling many basic programming tasks. At that time, we were already using PowerPlant, a similar framework written in the mid-1990s. We used a few of the new C++ standard library features, but for most, we already had a decent version from PowerPlant.

Since then, C++ had a minor update in 2004, and then big upgrades in 2011 and 2014. Another is due this year. Unfortunately, we couldn’t use the many new features and improvements in the C++ language until we updated from 32-bit to 64-bit. That broke most of PowerPlant, so we started using a few of the new C++ features two years ago, to replace the old PowerPlant code.

Some programming work requires intense “focus”. Basically, the programmer needs to immerse in the entire system for days on end, and not think about much else. It’s similar to what you need when working around high-voltage electricity, or on steep roofs. But it goes on for weeks, not hours. It takes a day or two to rev up.

We left some of the interface work unfinished in May. The weather probably won’t suck enough until October, to start back on it again. Dealing with the quirks of Cocoa, MFC and Objective-C require lots and lots of focus. However, there are simpler things our staff can work on, even with summer’s distractions. Some programming is fairly routine, and can start and stop at will. It’s more like, say, painting walls or mowing grass.

We are currently going through the C++ 2014 standards, and picking out things we can use now, to improve Goldenseal Pro. There is some really nifty stuff in there.

Some of the features will help us do a better job with the networked apps. Some will help support multiple threads (e.g. use the Find command, and then do something in another window while it runs).

Many of the improvements are “safety” features, which allow code to not crash or run out of memory. We already have ways to accomplish that, but modern C++ does it better, and more concisely. Some things make the code stricter, so the compiler will point out stupid errors. Using the new C++ libraries means we will accidentally fix a few bugs, and prevent more in the future.

There are a few things we can probably change with a huge text-replace. Most will require looking at hundreds or thousands of code bits, and deciding what to change. It is all stuff than can be done gradually. We’ll work on it now, and probably will be doing it for many summers to come.

It’s invisible work, but it will make Goldenseal Pro more reliable, and easier to program and maintain.

Dennis Kolva
Programming Director

Author: Dennis Kolva

Programming Director for Turtle Creek Software. Design & planning of accounting and estimating software.