From J Wiki
Jump to: navigation, search

APL2020 Panel Discussion – Notes on Where We Should Aim

In order to discuss how to promote thriving APL environments in ten years, it would behoove us to separate the small from the large issues when talking about the future of APL. The small issues are things like the value of index origin, bracket indexing, and the character set. These topics excite a lot of debate but there are larger issues on which we should concentrate. These larger issues include such things as the array languages' lack of visibility in the computing world in general and in the academic computing world in particular. On this latter point, if you search for papers on APL, you find almost none - Bob Bernecky's thesis being one of the few.

Academic visibility is important for the obvious reason that this influences is what students learn when they study programming. Another, less obvious reason is that there are any number of unsupported, and probably incorrect, fundamental notions in computer science. These notions need to be tested by empirical research to prove their validity. Here, I'm thinking of some of the examples of parallel programming problems and paradigms I encountered recently in my research for the paper I wrote for this conference. There are any number of very poor examples which are repeated in numerous papers and books.

However, the flawed axioms currently held unquestioningly in computer science go far beyond the narrow field of parallel programming. If you read texts on computers, you'll see endlessy recycled ideas like cyclomatic complexity and object-orientation stated as unequivocally good notions without any empirical backing of these claims. [A study written up in the Communications of the ACM a few years back found that only about 30% of the articles submitted to that publication included empirical data].

In a recent article in the CACM (Communications of the ACM, Vol. 53 No. 9, Pages 32-35), the author questioned whether the Emperor Object-Orientation was really wearing clothes. Most importantly, he asks the question: where is the empirical support for the claims of object orientation? There is empirical support against the claims of OO (see the comments attached to this article), so why does it still have such widespread, unquestioning acceptance? Another interesting comment in this article is that "real" engineering disciplines - unlike software engineering - do not have "paradigms".

This is just one area where more research needs to be done. The claims of the array-processing languages about better productivity could also use empirical support.

So, besides increased empirical research, what's another big issue for the future of APL in particular and computing in general? We might consider the "paradigm" of programmer as factory worker versus the competing idea of programmer as artisan. The dominant paradigm which seems to drive much of software engineering currently is the desire for programmers to be interchangable, offshorable, factory workers. This is the stated objective of any number of software engineering disciplines: that software can be assembled from re-usable components, like a car on an assembly line. Against this possible, grim future, we need to promote the advantages of the programmer as artisan. This primacy of design has any number of advantages compared to the dominant idea that shoddy, mass-produced software can be hammered into shape by finding and removing defects. One last big issue is the maturation and wide-spread availability of the various interchange standards such as XML and usage environments like browser-based applications. With any luck, these language-agnostic standards will help level the playing field to allow the array languages to shine.