Eclectic Programming Languages C. Terrence Ireland and Norman S. Glick The George Washington University Where are programming languages headed? Will there always be many languages, or will there be one ultimate language? Will BASIC and FORTRAN disappear from the scene, replaced by new improved languages? Presently, the complexity of new improved languages discourages their general use. One end of the curvilinear relationship between general purpose computer language difficulty and computer language sophistication is clear; the other end is faith. The middle is hazy. The Display shows a partial construction of this relationship. You should feel free to rearrange the languages in the Display to fit your own beliefs. An eclectic language system, ECL, has been developed during the last five years at the Harvard Center for Research in Computing Technology. This extensible language allows you to reach out and select the "best elements." You can even change ECL language elements that you dislike, and add new ones for your specific application. Never mind how ECL appears to others. What counts is how it appears to you. If you want to redefine "=" to mean different things in different contexts, as in PL/l, then extend ECL so that A = B = C means set the value of A to "true" if the value of B is the same as the value of C, otherwise set the value of A to "false". Make sure, however, that you keep such activities secret! ECL does not have complex numbers. Why not add them yourself. You can: 1. Define a new type of data, call it COMPLEX. 2. Extend the usual arithmetic operators , -, *, and / to handle the corresponding operations on COMPLEX numbers. 3. Construct a natural print value for a COMPLEX Language I Difficulty I' \ \ ECL \ \ APL \ ALGOL \ * ~ FORTRAN ULTIMATE ' BAsic Language Sophistication Display Simple languages are easy to use because they have few constructs that you must absorb into your intuition. More recent languages carry an expanded syntax, which opens up new opportunities to instruct the computer. It will, however, take you longer to absorb the expanded syntax into your intuition; you may not find the time. One attempt at requiring programmers to publish their algorithms in a language with an expanded syntax ended in failure. Most scientific programs are initially written in FORTRAN. The Association for Computing Machinery once required that published algorithms be written only in ALGOL, a language more sophisticated than FORTRAN. As a result many of the ALGOL programs mimicked the original FORTRAN programs, instead of taking advantage of the additional sophistication available in ALGOL. Unfortunately, it is also true that well-programmed ALGOL algorithms must often be translated back into FORTRAN or BASIC to run on your machine. The Ultimate Language appears at the other end of the curve, which hopefully has descended back into view. Perhaps the Ultimate Instruction will be "You know what I want. Do it!" Presently, the Difficulty Curve for general purpose languages is still going up, and the predicted time of descent is moving farther into the future. An Extensible Language New languages should be eclectic: "not following any one system ,..., but selecting and using what are the best elements of all systems." An eclectic language permits a very rich set of elements, but you must choose among them. The choice can be very hard, particularly for novice users of the language. Many will want to be constrained by a simpler language; at least it keeps you out of trouble. number. Either a. The algebraic form, a bi. or h. The picture form, an Argand Diagram, e.g. 4. Extend exponentiation to include COMPLEX numbers. 5. Et cetera. An extensible language must also be contractable. Once you expand ECL for the complex number user, you can oontract other features that do not interest him. He sees only the language he wishes to see. In a similar manner, you can construct a BASIC-like language. ECL gives you the opportunity to produce your own extensions "as naturally as possible" in a well-understood high level "core language." But there is a cost. To tie together all the characteristics of the complex numbers into one package requires a lot of code, You can build a beautiful vertical structure; each layer of the structure feeds into the next higher layer to permit simplified programming at high altitudes. You can operate on complex types of data with the same ease that you can add two numbers in BASIC. It does take time to develop any such structure. If you use entire package often, the development time is well-spent. Perhaps your needs are less comprehensive or you want something simple in a hurry. Perhaps someone else will eventually write the package for you. ECL is a powerful system, but it is still on the upward side of the Difficulty Curve. People have different reasons for writing programs. At least three reasons are visible: 1. Instruct your computer to apply an algorithm to a set of data, and to return to you the result of the application. 2. Transport your programmed algorithm to another