<<

Practical Robert L. Glass

One Giant Step Backward Old saying: “The more things change, the more they remain the same” … or do they?

t is common for software ating systems? The field didn’t software field. Let your letters of developers to talk about the begin with them, but by the late response fly! rapid change of pace in our 1950s (way back in those dark The point I want to make in Ifield. We say things like “It’s ages!) they were very common. this column, however, goes even hard to keep up with all the things I realize you may disagree with further than my “we ain’t made no that are happening,” and make me on this. There are lots of things progress” cry: I believe we’ve actu- apologies for not being up to ally lost ground in some areas. date on the latest whatever. That is, I am suggesting the sacri- I’ve been guilty of that lege that we actually did some myself, on occasion. things better back in those early But do you know days than we do today. what? I don’t really believe Case in point: programming it. Almost not a word of languages. I want to make the it. Except for various ven- case that, over the years, the dor products, such as tools commu- and processes, the things I nity has taken several steps learned in software backward. That’s not to say, of kindergarten, way back in course, that it has not made the 1950s, are for the progress. Today’s programming most part still valid today. languages, for the most part, are Computer hardware significant improvements over developers, I would assert, those of yester-decade and have made great strides in yester-millennium. moving their field forward But there is one important over the years. way in which programming lan- Smaller/faster/cheaper is guages have fallen backward—that almost a mantra of their fast- way is application domain focus. paced field. We software folk, by Today’s languages seem to ignore, contrast, tend to build software in that have come along since then to almost totally, defining the applica- the same old ways. Reuse? help software developers, such as tion domain for which they are Libraries were common in the methodologies and tools and most appropriate. In fact, the more 1950s. Coupling/cohesion and processes of various kinds. But I you look at today’s languages, the information hiding? We knew would assert that many of them more you realize they are intended about those back then, too, are pimples on a blister, refine- to serve whatever application although we didn’t call them that. ments on a theme, not that signifi- domain you happen to be working

JASON SCHNEIDER Programming languages and oper- cant in the overall history of the in. It’s that “one-size-fits-all” phe-

COMMUNICATIONS OF THE ACM May 2003/Vol. 46, No. 5 21 Practical Programmer

I am suggesting the sacrilege that we actually did some things better back in those early days than we do today. nomenon I’ve discussed frequently focused very carefully on the the proverbial kitchen sink. There regarding other topic areas, such as domains whose problems needed was enormous resistance to PL/1 methodologies, all over again, this solving. It wasn’t just a language (although not, interestingly time applied to the programming thing, of course. Communications, enough, to the 360). Eventually, language field. I’ve seen confer- for example, had various sections PL/1 was largely a failure. ences on “domain-focused pro- back then devoted to specific and Cobol rolled on (as PL/1 gramming languages,” but I’ve application domains. The whole began quietly dying), surviving— never seen anything of widespread field looked at the problems it had of course—to this day. significance to the field emerge to solve first, and only after that Perhaps it was an accident of from them. In fact, computer sci- looked at approaches for solving history, or perhaps it was not. But ence, over the years, has frag- those problems. about the same time the 360 and mented into such solution-focused What happened to change all of PL/1 appeared on the computing specialty areas, that I am not con- that? Perhaps the first and most practitioner scene in the mid-late vinced that one subdivision of the obvious thing that came along was 1960s, the academic field of Com- field (including the ones looking at the programming language PL/1. puter Science (CS) also was born. domain-focused languages) com- IBM, seeking to find generic And CS, for better or for worse, municates all that successfully with approaches to software problem embraced domain-independence all the others. Ah, but that’s a topic solving, decided to produce a pro- wholeheartedly. It may not have for another column sometime! gramming language that combined liked PL/1 all that well, but the Let me get specific here. When all of the facilities of the then-best- languages CS did like—the various software folks first invented higher- known and application-specific flavors of Algol—were consider- level programming languages, we languages Fortran, Cobol, and ably more problem independent did it with a particular application Algol: PL/1 was the result of that than the Fortrans and Cobols of domain in mind. Fortran for scien- effort. Many applauded PL/1, not- their time. tific/engineering applications. ing it was part of a broader trend One of the favorite topics of Cobol for business applications. toward application-independent academic CS was, and to some RPG for Report Generation. A computing approaches (computer extent still is, programming lan- variety of languages for system pro- hardware, in the early days of the guages. And, language by language, gramming, including one called field, was also problem-domain the CS-invented languages lost all SYMPL (systems programming focused, and IBM’s 360 architec- flavor of domain-dependence, and language). A different variety of ture, like its PL/1, was an attempt became generic in their approach. languages for real-time program- to produce one product line to To some extent, that has been a ming, including CORAL and serve all of IBM’s customers). good thing. As the breadth of soft- JOVIAL and, eventually, Ada. But not everyone thought the ware applications has spread so Most of that language progress 360 and PL/1 were such good dramatically, it would have been dates back to the late 1950s. We ideas. Folks made fun of PL/1 as impractical to invent yet another were just beginning to understand “the kitchen sink language,” mean- language for yet another domain. the diversity of applications that ing it contained all the imaginable And yet, I would assert, throwing software could be put to and we language features, except, perhaps, out the domain-focused babies like

22 May 2003/Vol. 46, No. 5 COMMUNICATIONS OF THE ACM Fortran and Cobol with the used for most DoD real-time the features that business or scien- domain-independent bathwater applications. As time passed, the tific , for example, has not necessarily done the field DoD—desperate to increase usage need. There are, of course, GUI any favors. I have lamented the of the language that had cost it so languages, such as the “Visual” lan- purported demise of Cobol else- much to develop—decided to guages, which are indeed focused where, not so much because it is a broaden its domain of applicability. on a particular domain—user good language for business applica- Originally focused on the real-time interfaces. Even these languages, it tions (although it still is!), but domain, with some support for is interesting to note, are as much because no one bothered to invent systems programming so that its about a particular aspect of the a better one before deciding that could also be written in solution approach (graphical user Cobol needed to be discarded. the language, Ada began to be seen interfaces) as they are about the There was an interesting reprise by the DoD as a business-domain- basic problem domain. of the domain vs. generic program- focused language! Conferences So where does the programming ming language battle in the 1970s, were held on revising the language language field stand today? The one that extended for a decade into to include business-focused capa- best-known languages are domain the 1980s. The U.S. Department bilities. Language modifications independent. The domain-specific of Defense, for a variety of good were defined. Articles advocating languages are derided, but still and not-so-good reasons, decided Ada for all application domains used. The new languages that it needed a new programming lan- began to appear in computing come along—and they appear guage to serve real-time applica- publications. It was apparent that much less frequently than they tions, especially those built for the Ada, caught in its real-time death once did—seem to follow in the Air Force, the Navy, and the Army. throes, was the subject of an emer- domain-independent footsteps of And it proceeded to perform the gency salvage operation, one their predecessors. Nothing appears most careful domain-specific lan- designed to make a domain-inde- to be happening to change that. guage study of all time. It gathered pendent sow’s ear out of a domain- What would I like to see hap- requirements for such a language specific silk purse. pening in this same world? from the tri-services and from tri- Mercifully, all of that domain- Research devoted to specific service vendors, and scrubbed independent repositioning came to domains, and their specific needs. them over and over again, and held naught, and Ada died the kind of Research devoted to languages that a language competition, and even- slow death that PL/1 has. It is meet those needs. The develop- tually picked and implemented a interesting that the life-cycle stories ment of newer, domain-focused language. A real-time language, it of the two languages are so similar, replacements, for those tired old is important to reiterate. Ada, like given their domain-related nature specialty languages Fortran and PL/1, was not universally liked, was so different. Cobol. And an acknowledgment but it was very un-PL/1-like in one Let’s do a reprise at this point. that, way back in the 1950s, we respect—it was domain specific, Domain-specific languages were knew something we subsequently just as PL/1 had been domain once prevalent in the software lost along the way. That domain independent. At this point in time, realm. They have faded, but not differences matter. at least, the last of the domain- disappeared, as domain-indepen- focused languages! dent languages have taken their And then something odd hap- place. The various flavors of C, Robert L. Glass ([email protected]) is the pened. The DoD had trouble get- including most recently Java and publisher/editor of the The Software Practitioner newsletter and editor emeritus of the Journal of ting its vendors to use the C#, make no bones about being Systems and Software. language, in spite of a variety of applicable to a wide variety of proclamations requiring that it be domains, and offer few if any of © 2003 ACM 0002-0782/03/0500 $5.00

COMMUNICATIONS OF THE ACM May 2003/Vol. 46, No. 5 23