(Editor's Note: Please also read Scott Klement's blog, "RPG Is Dead? Are you Serious?!")
The headline is a question that must be asked, and one that finally has a rational answer: Yes.
Before you set your phasors on "kill," please hear my explanation. First, what do I mean when I say a programming language is dead? Obviously, I can't mean that no programs written in the language are still executing today. RPG runs on tens of thousands of systems, and will continue to do so for another decade or more. But mainframes are still running IBM's ancient Basic Assembler Language (BAL), a language that is clearly dead. Neither could I mean that nobody writes programs in the language anymore. After all, a few computer history aficionados still write programs today in ALGOL, a language contemporaneous with RPG's 1959 birth. But no one questions that ALGOL is a dead programming language.
By "dead" I mean that the language is no longer routinely used to write new programs that solve current problems. The operative word here is "routinely." Certainly some people (even me) occasionally write a new RPG program. But the vast majority of my RPG work is maintaining existing code, to either adapt it to work with the Internet or to add new features because starting over from scratch would be too expensive. I suspect this is true for most programmers who still have a finger in the RPG world.
System iNEWS author Carson Soule last mentioned the D-word in 2005 ("RPG Is Dead—Long Live RPG!", April 2005). His piece closed with this: "The path ahead is not at all clear. I hope we do not lose the language we love or forget the lessons it taught us." But the passing of RPG need not mean losing the language, nor forgetting the lessons learned using it.
However, establishing a boundary for life is important to letting the professional community move on to new computing paradigms. Without some kind of qualitative rule to define the death of a programming language, none would ever die, and the distinction between dead and alive would be meaningless. Such a distinction is important because we need to know which languages are worth using for new projects, and which are worth teaching to new programmers. So I offer this as a concise and effective rule: "Is the language still routinely used to write new programs that solve current problems?"
Newer languages have a number of common features that greatly aid software engineering: free-format syntax, frameworks and macros, extensible variable typing, interpretive execution and debugging, graphic rendering, and object orientation with inheritance. RPG has one very valuable feature: fixed-point arithmetic for accounting calculations. But that's about it. I do wish that newer languages had more consistent standards for financial math, but that's one negative in a sea of positives.
Crucial Change Unlikely
For a long time, many of us hoped that RPG could evolve to acquire the features it lacked. Paul Conte was one of the earliest advocates for this approach, and through sheer force of will eventually pushed the language to adopt a free-format syntax in the 1980s with his RPG/free pre-compiler. RPG/free eventually informed IBM's introduction of free-form syntax with RPG IV in 2001.
More recently, IBM has brought RPG into its software development lifecycle product Rational Developer for Power Systems Software (RD Power), as well as extended RPG's device support via the excellent RPG OA open access device I/O package. These are welcome developments for harried RPG code maintainers, but they don't address the fundamental language limitation RPG faces.
The most important single modern language attribute that RPG needs to stay among the living—object orientation (OO) with inheritance—is not being worked on by anyone, while two of RPG's contemporaries (COBOL and FORTRAN) have managed that leap. Given the many powerful alternative languages with this feature already supported on IBM i, I doubt anyone will spend time reforming RPG to include it. Without OO, RPG can't create class libraries for code reusability, build open frameworks to which many programmers can contribute, and, most importantly, easily design programs that model the way the real world works.
Signing RPG's death certificate isn't meant to impugn its value, both historically and today. RPG began life perfectly adapted to its punch-card environment and well suited to solving business problems of the day, which primarily involved accounting. It evolved tremendously over five decades to stay useful and relevant, incorporating many computing innovations with relative ease: disk storage, networking, screen I/O, time sharing, structured and modular programming, relational databases, ASCII (yes, ASCII), TCP/IP, HTTP, Web Services, and Web 2.0. These are amazing accomplishments, ones that the entire RPG programming community helped bring about. In fact, RPG's tight-knit community is almost certainly the main reason it has persisted this long.
But every technology has an end to its adaptability, and I believe RPG has reached its limit. This seems like a good year to admit RPG to the history books. It will be in good company, with ALGOL, BAL, BASIC, PL/I, and SNOBOL, to name a few. We still have many years of active RPG work ahead of us: modernizing existing RPG code where it makes financial sense, and extracting the business logic from RPG programs to migrate them to new languages. Tools such as RD Power and RPG OA will help immensely with those efforts.
But it's time to make arrangements.
Mel Beckman is the senior technical director for iPro Developer.