APL95 (San Antonio) Abstracts
Vector 11:4, page 10
Transcribed from the printed issue; not yet reviewed. Read it in the PDF of the issue, page 10
Accepted Papers¶
Is APL2 a Good Programming Language? Nicholas Beaumont. This paper evaluates APL2 in the context of systems development, noting that a language is not an end in itself, but one of several tools used to create an information system. Despite its many good features APL2, when evaluated in that context, has some disadvantages, especially the lack of control structures and data typing. These omissions make finding errors in programs and translating system requirements into programs harder than necessary. These and other disadvantages of APL2 (such as its lack of portability) make its relative unpopularity explicable. Some changes to APL2 are suggested.
The Role of Dynamic Programming & Control Structures in Performance. Robert Bernecky. Dynamic programming is used infrequently by APL programmers, in spite of its ability to reduce the computational effort required to solve many problems. This paper uses the String Shuffle problem as the basis for a comparison of brute force, recursive, and dynamic programming algorithms. Simple algorithms for each of these approaches are designed and evaluated, then individually optimized and re-evaluated, to show the benefits of dynamic programming.
The dynamic programming algorithm is then recast to use flow control structures recently introduced into ISI J and APL*PLUS III. Use of control structures in conjunction with dynamic programming results in orders of magnitude performance improvement over brute force and naive recursive algorithms. APL*PLUS III control structures are shown to provide a performance improvement of up to 30% over GOTO-based loops.
Recycling APL Code into Client/Server Applications. Richard J. Busman, Walter G. Fil and Andrei V. Kondrashev. This paper analyzes the current state of modern APL and deals with the authors’ experiences in recycling and downsizing old APL applications and transforming them into more open information systems using client/server technology on different hardware and software platforms.
Infinity Arithmetic, Comparisons and J. Harvey Davies. The principles of infinity arithmetic are explained. There is a need to bring J arithmetic and comparisons into line with these principles. Many of the results produced by J are mathematically anomalous and do not comply with the IEEE 754 Standard for floating-point arithmetic.
Some proposals to generalise the concept of comparison tolerance are presented. There are also some tentative proposals regarding safety levels and precision.
The paper is oriented towards J but many of the concepts are relevant to all dialects of APL.
Deploying Complex Decision Technologies with APL to Solve the Daily Output Planning Problem: A Tale from Two of the Last of the Jedi Knights. Kenneth Fordyce, Gerald (Gary) Sullivan. A key decision faced each day, shift, or time period at a semiconductor manufacturing facility is how many wafers or lots should it commit to produce at each operation over a specified period of time to meet immediate demand and position the line to meet tomorrow’s demand. This paper will describe an approach which integrates various decision technologies using APL to generate a “daily output plan” for low part number high volume wafer fabrication lines. A related approach for high part number logic lines using due dates is not described in this paper. The ability of the “APL Problem Solving environment” to easily handle very different decision technologies was critical to the development of this approach.
Holland Classifier Systems. Andreas Geyer-Schulz. A Holland classifier system is an adaptive, general purpose machine learning system which is designed to operate in noisy environments with infrequent and often incomplete feedback. Examples of such environments are financial markets, stock management systems, or chemical processes. In financial markets, a Holland classifier system would develop trading strategies, in a stock management system order heuristics, and in a chemical plant it would perform process control. In this paper we describe a Holland classifier system and present the implementation of its components, namely the production system, the bucket brigade algorithm, the genetic algorithm, and the cover detector, cover effector and triggered chaining operator. Finally, we illustrate the working of a Holland classifier system by learning to find a path with a high payoff in a simple finite state world.
Bounded rationality and adaptive agents in economic modeling. T. Grimm, J. Mitlöhner, W. Schönfeldinger. Traditional economic theory sees human economic decisions as rational choices of action to achieve maximum utility. However, economic reality shows that people often behave in ways different from that ideal: actions are not always determined rationally; often they are influenced by other factors, such as chance and tradition. In order to describe the behaviour of economic agents in the real world, we take irrationality and adaptation into account: we present work in progress on a market simulation that shows the effects of partly irrational and adaptive consumer buying decisions on the course of action of entrepreneurs.
Translation of Nested APL to C++: Problems and Approaches. Dmitri Gusev, Igor Pospelov. This paper discusses the task of developing a nested APL compiler and puts forward the project of such a compiler. The proposed approach consists of simulating the semantics of APL by using the object-oriented C++ programming language. Different kinds of problems ranging from APL syntax ambiguity to the implementation of nested arrays and the robustness of compiled code are considered and different solutions are proposed. We conclude that it is feasible to develop a robust nested APL compiler, although the problem of performance demands further research.
Modelling the Effects of Acid Leaching on Concrete. Kevin Hartzfeld. This paper describes a partial differential equation model used to determine the service life of buried concrete vaults exposed to acidic ground water. A graphics package helped immeasurably in debugging and testing the algorithm. The collocation program developed in APL can easily be applied to solve other problems.
The Philosophy of Nothing and Everything. Neville Holmes, Colin Hallam. Perhaps inspired by the IEEE floating point arithmetic standard’s introduction of a representation for aberrant numbers, such as the reciprocal of zero, the J interpreter overtly deals with infinities and indeterminacies.
This step got rid of some domain error messages, but brought in a few new difficulties, and exposed inconsistencies in the behaviour of elementary arithmetic functions presumably as delivered by the C compilers used for the J interpreters.
This paper proposes notation that would allow the J interpreter better to deal with failures of arithmetic. The discussion should assist development of arithmetic for other interpreters and compilers.
Rank and Uniformity. Roger K.W. Hui. Rank is elucidated through an executable model. Integrated rank support for specific functions can be vastly more efficient than the general algorithm in computing v"r, and uniform verbs provide a way to extend the more efficient implementation to a large class of verbs.
Representations of Recursion. Roger K.W. Hui, Kenneth E. Iverson. Recursive definitions are important tools in mathematics and in programming. They can be represented in a variety of ways, and in this paper we examine the relations and translations between them, using a range of examples for illustration. These examples begin with recursive definitions expressed in conventional mathematical notation, in SHARP APL, and in APL2; most are drawn from published sources.
APL, Dynamic Programming, and the Optimal Control of Electromagnetic Brake Retarders. Scott Kimbrough. The basis of Dynamic Programming is described. It is a method for finding the best way to control a system when that system can be controlled by its inputs. As an example, the Optimal (or best) Control of an electromagnetic brake retarder is derived. In this example the current to the brake retarder is the input being controlled. APL is shown to be a convenient language for writing a Dynamic Programming algorithm. A set of APL subroutines is provided for solving two-dimensional problems with one input. Adept APL programmers may enjoy the challenge of generalizing this code to problems of arbitrary dimensions.
Regression Analysis with Fuzzy Knowledge Representation. Inna N. Louneva, Sergei M. Obraztsov, Alexander L. Shimkevich. An algorithm for fuzzy non-linear estimation and an APL implementation of this algorithm are discussed. The algorithm is based on using probability distributions for experimental data. The parameters of the distributions are given as linguistic variables by an expert.
The Role of Composition in Computer Programming. Donald B. McIntyre. Iverson has greatly enlarged the mathematical notion of function composition and made it available to computer programmers. This paper explains the concept, and uses practical examples to show how concise, powerful programs can be written and read. Alternative forms are given, and ways of overcoming initial difficulties are explained.
The systematic use of composition extends the well-known advantages of APL; namely conciseness, consistency, and generality.
Computing Multivariable Taylor Series to Arbitrary Order. Richard D. Neidinger. Automatic differentiation, manipulating numerical vectors of coefficients, is the efficient way to compute multivariable Taylor series. This does not require symbolic differentiation or numerical approximation but uses exact formulas applied to numerical arrays. Arrays of Taylor series coefficients of any elementary function can be built-up, as the array for each component (combination or function) is a combination of its argument arrays. The functions TIMES and EXP display the algorithmic ideas that enable all of the other standard functions. We study the interesting recursive formulas for these combinations, the resulting algorithms, and the implementation in APL. To handle all coefficients in n variables up to order m, the arrays are hyper-pyramid data structures, considered conceptually as n-dimensional but implemented as one-dimensional arrays. Unlike previous work, this implementation does not require huge arrays for binomial coefficients and indirect referencing. This APL*PLUS III implementation loops through one nested reference array and takes sub-arrays from another for a practical solution to this problem that can make tremendous demands on time and space.
Untying the Gordian Knot: Agreement in J. Martin Neitzel. The “Dictionary of J” is not written for the faint of heart. Its numerous self-references make it very difficult to tackle. The author thinks that section II.B, “Verbs”, is one of the keys for getting a confident grip of the language. This paper basically just repeats this section using a tutorial style, some historical background, and several pictures. Hopefully, it will enable people with analytical minds to find their own way through the Dictionary. It closes with a discussion of possible language changes in the context of II.B.
AVCS: The APL Version Control System. Nikolai I. Puntikov, Maxim A. Volodin, Alexei A. Kolesnikov. This paper describes AVCS, which is an APL-oriented version control system devised as a tool to track the history of software projects and to control concurrent access to project components. The basics of version control systems are explained, and specific aspects of applying a version control system methodology to project development in APL environments are considered. Particular attention is given to features which differentiate the approach accepted in AVCS from that of available version control and project management systems. Specification of AVCS’s data maintenance, programming and user interface is presented to the extent required in order to explain how the system works. In conclusion, the possible application of AVCS to solving problems of porting APL projects across different environments is outlined.
Infix, Cut and Finite Automata. Clifford A. Reiter. The behaviour of one and two dimensional automata are displayed in two and three dimensions and via animations. Implementations of finite automata in J using “infix” and “cut” to distribute local definitions of finite automata are compared. Abstract automata are considered along with applications to image processing and surface plotting.
Early Bankruptcy Detection Using Neural Networks. Gottfried Rudorfer. In 1993, Austria had the highest number of bankruptcies since 1945. The total liabilities came to approximately US$3 billion.
Powerful tools for early detection of company risks are very important to avoid high economic losses. Artificial neural networks (ANN) are suitable for many tasks in pattern recognition and machine learning. In this paper we present an ANN for early detection of company failures using balance sheet ratios. The network has been successfully tested with real data of Austrian private limited companies. The research activities included the design of an APL application with a graphical user interface to find out the relevant input data and tune the ANN.
The developed APL workspace takes advantage of modern windowing features running on IBM-compatible computers.
Fuzzy Control of Technological Processes in APL2. Alexander O. Skomorokhov, K.-H. Reinhardt, G. Roche, M. Tielemann. A fuzzy control system has been developed to solve problems which are difficult or impossible to control with a proportional integral differential approach. According to system constraints, the fuzzy controller changes the importance of the rules and offers suitable variable values. The fuzzy controller testbed consists of simulator code to simulate the process dynamics of a production and distribution system and the fuzzy controller itself. The results of our tests confirm that this approach successfully reflects the experience gained from skilled manual operations. The simulation and control software was developed in APL2/2 running under OS/2. The benefits of this product, especially multi-tasking and the ability to run AP124 and AP207 windows concurrently, are also discussed.
Concrete multidimensional statistics in APL2. Bernhard Strohmeier. This paper deals with problems which occur in discrete multi-dimensional statistics and shows how they are solved using APL2. Especially the APL2 feature primitive function with axis proves to be very helpful and allows smart solutions to the problems of computing conditional probability tables and performing the iterative proportional fitting procedure. The implementation is done using the literate APL2-style.
Namespaces: APL/W vs. APL2. Rexford H. Swain. This paper describes and contrasts the implementation of namespaces in two popular combinations of APL dialects and platforms: IBM’s APL2 (version 2 release 2) running under VM/CMS, and Dyadic’s Dyalog APL/W (version 7.0) running under Microsoft Windows.
In a traditional APL workspace, localization is the only mechanism available to isolate identifier names and values, and it is extremely potent. While a function that localizes a given name is executing, it is impossible to reference any other definition of the same name.
Namespaces are a significant addition to an APL system. They provide a way to “package” a collection of objects (variables, defined functions, etc.), and insulate them from the traditional workspace. A namespace co-exists with the workspace, yet its object names and definitions are completely independent of the workspace. Namespaces can help to organize and hide complexity in workspaces, avoid name conflicts, and share code among applications.
IBM has offered namespaces in APL2 since 1987, whereas Dyadic just recently introduced their facility. Both implementations provide encapsulation and name isolation within a workspace. But they use quite different methods to access objects in a namespace and store their initial definitions. The merits of each approach are discussed. An example is provided to illustrate how namespaces may be used to simplify the implementation and improve the functionality of workspace and function analysis tools.
Doing ANOVA Calculations on the Computer. Alan M Sykes. This paper presents an approach to providing educational software for students in Management Science and Statistics which aids the calculations and understanding required for the analysis of experimental design data.
An APL Implementation of the Club of Rome’s World Model. Clare Townsend. This paper discusses an application which models world population dynamics using initial value differential equations. The program provides the user with a simple interface that anyone with any level of experience with APL can use to generate different scenarios. In addition, the discoveries and difficulties encountered by a student using APL for the first time are explored.
Invited Talks¶
APL is Important at USAA. Rhonda K. Aikens. United Services Automobile Association (USAA), is a leading provider of insurance and financial services. Automobile insurance represents the highest percentage of USAA’s multi-billion dollar operations. Rate-making applications, written in APL, constitute the core set of tools used by the Automobile Actuary Pricing Unit. This presentation provides an overview of the APL rate-making tools, how they interact, and why they are crucial in establishing accurate, equitable, and competitive rates.
A New Approach for Developing Applications using Asynchronous AP144 and Synchronous AP207. Y. Akiyama, T. Itoh. This paper describes an approach to designing and implementing an application that uses asynchronously executed auxiliary processors such as AP144 (or AP145) and synchronously executed auxiliary processors such as AP207, for the user interface in the AIX Motif (or OS/2 PM) style.
AP207 offers very good and useful graphical functions. The window API (AP144 or AP145) commands emphasize client/server asynchronous execution of the API commands to display and update the screen, while the AP207 API commands are executed synchronously.
A difficulty comes in designing an application system when we want to implement an X Windows System or Presentation Manager (PM) style single-user interface using both types of auxiliary processor APIs.