In evaluating a programming language, as a comparison to its antecedents, one of the criteria that should be looked at is the criteria for which antecedents were considered to have weaknesses, and the advantages brought by the new language. When analyzing such language as Functional Pedagogical Array Language (FPAL), the aforementioned statement might not be always true. In that regard, taking such languages as “A Programming Language” (APL) and LISP, by which FPAL was heavily inspired, it cannot be stated that FPAL is a serious improvement over its antecedents. Nevertheless, it can be stated in general that FPAL can be seen as an improvement in terms of code execution.
FPAL as a language was designed for class project implementation, and thus, it can be stated that the main purpose for the language was explaining the programming procedures. LISP is one of the oldest programming languages in the world. LISP is a family of languages, the most widely used can be seen through common LISP, a language that was originally defined in 1984 by “the publication of Guy Steele’s Common Lisp: the Language (CLTL1)” (Graham, 1994).
APL is a programming language representation of what can be originally dated to ancient hieroglyphics (Mclntyre, 1991). The modern representation of APL is dated, however, is dated back to the early 1960s to the researcher Kenneth E. Iverson who developed APL to express mathematical functions clearly and consistency for computer use (Henderson, 2009).
The three languages explained in this a paper belonged to the family of functional languages, i.e. languages in which functions are not assigned to variables , but manipulated directly together with data items (Henderson, 2009). Thus, the way the language approach functions can be seen as an important criterion for evaluation, specifically in the syntax they are used. LISP is one of the earliest functional languages, where one of the key characteristics of LISP is that it is a collection of functions to which users can add their own. Another distinguishing characteristic is that functions in Lisp are provided as objects, i.e. they can be treated like other more familiar data types (Graham, 1994).
The syntax in which the functions are defined and used in LISP can be seen through defun which builds a function and stores it under the name given as the first argument (Graham, 1994). Similarly, APL uses functions although several deficiencies might be seen in terms lacking control structure, dynamic binding, “and the difficulty to handle properly functions” (Girardot, 1992, p. 92). Another disadvantage can be seen through the exclusive use of symbols, which implementation might provide difficulties for users, in terms of integration of character set. In FPA, the functions are first-class values, and their constructs can be used anywhere a statement requires a function.
Another point of comparison can be seen in that the scope of the FPAL is strictly static, where it depends on nesting the definitions of functions within one another, rather that the time function calls happen during execution (Baldwin, 2011). The latter can be seen as an advantage over LISP which scope is dynamic. The user looks over the containing environments at the time the functions were defined (Graham, 1994). APL’s scope is similarly defined by the sequence in which the functions are called (Henderson, 2009, p. 491).
At run time, the definition of each variable is searched within the code for the first time it was invoked, which provides a disadvantage in terms of the difficulty in understanding the program’s effect on the variables, and the search mechanism that will slow down the execution of the program (Henderson, 2009 $91). The latter makes APL difficult for the execution of powerful operators with very tense notations make APL difficult to read and understand (Scott, 2009, p. 330).
Another are for comparison can be seen through the way the language operate with arrays. FPAL contain a number of functions that conduct computations which are only relevant to array’s arguments. In terms of arrays, APL was found to be less efficient, mainly due to its interpretive nature, for which in order to increase efficiency, APL operates on whole arrays (Girardot, 1992). LISP contains an array data type, supporting arrays up to seven dimensions (Steele, 1990).
It can be concluded that at large the three languages share many similar characteristics, all belonging to the family of functional languages. The characteristics of FPAL, which generally support its improvement over APL and LISP can be seen in that developed intentionally for a specific purpose, the language took the strengths of its antecedents, while leaving the drawbacks. In that regard, it can be stated that the static scope can be seen as the main differentiating factor that might provide an impact in performance over APL and LISP. AT the same time, it can be stated that APL and LISP have their own disadvantages. Nevertheless, comparing them all, it can be stated that FPAL has an advantage over the APL and LISP.
References
Baldwin, D. (2011). An Informal Overview of FPAL. SUNY Geneseo Department of Computer Science. Web.
Girardot, J.-J. (1992). The CTalk programming language: a strategic evolution of APL. SIGAPL APL Quote Quad, 23(1), 78-87. Web.
Graham, P. (1994). On Lisp : advanced techniques for Common Lisp. Englewood Cliffs, N.J.: Prentice Hall.
Henderson, H. (2009). Encyclopedia of computer science and technology (Rev. ed.). New York: Facts On File.
Mclntyre, D. B. (1991). Language as an intellectual tool: From hieroglyphics to APL IBM Systems Journal 30(4), 554-581.
Scott, M. L. (2009). Programming language pragmatics (3rd ed.). Amsterdam ; Boston: Elsevier/Morgan Kaufmann Pub.
Steele, G. L. (1990). COMMON LISP: the language: Digital Press.