John Morley Scholes (1948–2019) was a British
computer scientist
A computer scientist is a person who is trained in the academic study of computer science.
Computer scientists typically work on the theoretical side of computation, as opposed to the hardware side on which computer engineers mainly focus (al ...
. In his professional career he was devoted to the development of the
programming language
A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.
The description of a programming ...
APL. He was the designer and implementer of
direct function
A direct function (dfn, pronounced "dee fun") is an alternative way to define a function and operator (a higher-order function) in the programming language APL. A direct operator can also be called a dop (pronounced "dee op"). They were invented ...
s.
Personal
John Scholes was born on 24 April 1948 to Gerry and Amy Scholes. He grew up in
Leamington Spa
Royal Leamington Spa, commonly known as Leamington Spa or simply Leamington (), is a spa town and civil parish in Warwickshire, England. Originally a small village called Leamington Priors, it grew into a spa town in the 18th century following ...
, Warwickshire, England, and attended
Leamington College for Boys
North Leamington School (NLS) is a mixed, non-selective, comprehensive school for students aged 11 to 18 years located at the northeastern edge of Leamington Spa, Warwickshire, England. It is rated as a ''good'' school by Ofsted, and has 6.7 ...
between 1960 and 1966. Between 1966 and 1969 he attended the
University of Manchester
, mottoeng = Knowledge, Wisdom, Humanity
, established = 2004 – University of Manchester Predecessor institutions: 1956 – UMIST (as university college; university 1994) 1904 – Victoria University of Manchester 1880 – Victoria Univer ...
and received a
BSc
A Bachelor of Science (BS, BSc, SB, or ScB; from the Latin ') is a bachelor's degree awarded for programs that generally last three to five years.
The first university to admit a student to the degree of Bachelor of Science was the University of ...
(with honours) in mathematics.
Scholes enjoyed poetic and romantic qualities in his life. Apart from APL, he also found beauty in nature, opera, the music of
Tom Waits
Thomas Alan Waits (born December 7, 1949) is an American musician, composer, songwriter, and actor. His lyrics often focus on the underbelly of society and are delivered in his trademark deep, gravelly voice. He worked primarily in jazz during ...
, the literature of
James Joyce
James Augustine Aloysius Joyce (2 February 1882 – 13 January 1941) was an Irish novelist, poet, and literary critic. He contributed to the modernist avant-garde movement and is regarded as one of the most influential and important writers of ...
,
the poetry of
W.B. Yeats
William Butler Yeats (13 June 186528 January 1939) was an Irish poet, dramatist, writer and one of the foremost figures of 20th-century literature. He was a driving force behind the Irish Literary Revival and became a pillar of the Irish liter ...
. He was a member of the Joyce society in
Dublin
Dublin (; , or ) is the capital and largest city of Republic of Ireland, Ireland. On a bay at the mouth of the River Liffey, it is in the Provinces of Ireland, province of Leinster, bordered on the south by the Dublin Mountains, a part of th ...
. In 2013, he and his wife Flora Dowling went to
Sligo
Sligo ( ; ga, Sligeach , meaning 'abounding in shells') is a coastal seaport and the county town of County Sligo, Ireland, within the western province of Connacht. With a population of approximately 20,000 in 2016, it is the List of urban areas ...
to the W.B. Yeats Summer School and met the poet
Seamus Heaney
Seamus Justin Heaney (; 13 April 1939 – 30 August 2013) was an Irish poet, playwright and translator. He received the 1995 Nobel Prize in Literature. the summer before Heaney died.
[
The APL side and the romantic side often met: The Depth-First Search video][ (]below
Below may refer to:
*Earth
*Ground (disambiguation)
*Soil
*Floor
*Bottom (disambiguation)
Bottom may refer to:
Anatomy and sex
* Bottom (BDSM), the partner in a BDSM who takes the passive, receiving, or obedient role, to that of the top or ...
) was recorded at dawn on the summer solstice
The summer solstice, also called the estival solstice or midsummer, occurs when one of Earth's poles has its maximum tilt toward the Sun. It happens twice yearly, once in each hemisphere ( Northern and Southern). For that hemisphere, the summer ...
of 2014, with birdsong in the air, while he and his wife were on a 21-day Zen retreat in France led by Thích Nhất Hạnh. Scholes was pleased with both the technical content and the circumstances of that work.[
]
Career
Scholes's first job was as a trainee computer programmer with International Computers Limited
International Computers Limited (ICL) was a British computer hardware, computer software and computer services company that operated from 1968 until 2002. It was formed through a merger of International Computers and Tabulators (ICT), English Ele ...
(ICL) (1969–70) and from there he went on to the Operations Research Department of WS Atkins in Epsom, Surrey (1971–75) and then to the Sales Support Department in Warrington
Warrington () is a town and unparished area in the borough of the same name in the ceremonial county of Cheshire, England, on the banks of the River Mersey. It is east of Liverpool, and west of Manchester. The population in 2019 was estimat ...
, Lancashire (1976–77). Between 1977 and 1978 he worked with the European Space Agency
, owners =
, headquarters = Paris, Île-de-France, France
, coordinates =
, spaceport = Guiana Space Centre
, seal = File:ESA emblem seal.png
, seal_size = 130px
, image = Views in the Main Control Room (1205 ...
in Madrid, Spain as a programmer for the International Ultraviolet Explorer project. He then returned to ICL Dataskil working on APL for the VME/B operating system (1978–82). In 1982, he started the Dyalog APL project for Unix
Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, and ot ...
machines,[ and in 1988 became a partner and director of the Dyalog Company. In 2004, Scholes sold his shares in the company, but continued as a consultant and, in his words, pursued his passionate interest in APL programming on various mathematical topics in general and ]functional programming
In computer science, functional programming is a programming paradigm where programs are constructed by Function application, applying and Function composition (computer science), composing Function (computer science), functions. It is a declar ...
and dfns in particular. Or " nerding", as he also called it.[
]
Direct functions (dfns)
Kenneth E. Iverson
Kenneth Eugene Iverson (17 December 1920 – 19 October 2004) was a Canadian computer scientist noted for the development of the programming language APL. He was honored with the Turing Award in 1979 "for his pioneering effort in programming l ...
, the inventor of APL, was dissatisfied with the way user functions were defined. In 1974, he devised "formal function definition" or "direct definition" for use in exposition. A direct definition has two or four parts, separated by colons:
name : expression
name : expression0 : proposition : expression1
Within a direct definition, denotes the left argument and the right argument. In the first instance, the result of is the result of the function; in the second instance, the result of the function is that of if evaluates to 0, or if it evaluates to 1. Assignments within a direct definition are dynamically local. Examples of using direct definition are found in the 1979 Turing Award
The ACM A. M. Turing Award is an annual prize given by the Association for Computing Machinery (ACM) for contributions of lasting and major technical importance to computer science. It is generally recognized as the highest distinction in compu ...
Lecture and in books and application papers.[
Direct definition was too limited for use in larger systems. The ideas were further developed by multiple authors in multiple works,] but the results were unwieldy. Of these, the "alternative APL function definition" of Bunda in 1987[ came closest to current facilities, but is flawed in conflicts with existing symbols and in error handling which would have caused practical difficulties, and was never implemented. The main distillates from the different proposals were that (a) the function being defined is ]anonymous
Anonymous may refer to:
* Anonymity, the state of an individual's identity, or personally identifiable information, being publicly unknown
** Anonymous work, a work of art or literature that has an unnamed or unknown creator or author
* Anonym ...
, with subsequent naming (if required) being effected by assignment; (b) the function is denoted by a symbol and thereby enables anonymous recursion
In computer science, anonymous recursion is recursion which does not explicitly call a function by name. This can be done either explicitly, by using a higher-order function – passing in a function as an argument and calling it – or implicitly ...
.[
In 1996, Scholes invented direct functions or dfns (pronounced "dee funs"), a major distinguishing advance of early 21st century APL over prior versions.] Dfns are a unique combination of array programming
In computer science, array programming refers to solutions which allow the application of operations to an entire set of values at once. Such solutions are commonly used in scientific and engineering settings.
Modern programming languages that s ...
, higher-order function
In mathematics and computer science, a higher-order function (HOF) is a function that does at least one of the following:
* takes one or more functions as arguments (i.e. a procedural parameter, which is a parameter of a procedure that is itself ...
s, and functional programming
In computer science, functional programming is a programming paradigm where programs are constructed by Function application, applying and Function composition (computer science), composing Function (computer science), functions. It is a declar ...
. The ideas originated in 1989 when he read a special issue of '' The Computer Journal'' on functional programming. He then proceeded to study functional programming and became strongly motivated ("sick with desire", like Yeats) to bring these ideas to APL.[ He initially operated in ]stealth
Stealth may refer to:
Military
*Stealth technology, technology used to conceal ships, aircraft, and missiles
**Stealth aircraft, aircraft which use stealth technology
**Stealth ground vehicle, ground vehicles which use stealth technology
** Stea ...
because he was concerned the changes might be judged too radical and an unnecessary complication of the language; other observers say that he operated in stealth because Dyalog colleagues were not so enamored and thought he was wasting his time and causing trouble for people. Dfns were first presented in the Dyalog Vendor Forum at the APL '96 Conference and released in Dyalog APL in early 1997.[ Acceptance and recognition were slow in coming. As late as 2008, in ''Dyalog at 25'',] a publication celebrating the 25th anniversary of Dyalog Ltd, dfns were barely mentioned (mentioned twice as "dynamic functions" and without elaboration). As of 2019, dfns are implemented in Dyalog APL, NARS2000, and ngn/apl. They also play a key role in efforts to exploit the computational capabilities of a GPU (graphics processing unit).
Dfns are illustrated here with an example. Much more extensive explanation and examples are found in the direct function
A direct function (dfn, pronounced "dee fun") is an alternative way to define a function and operator (a higher-order function) in the programming language APL. A direct operator can also be called a dop (pronounced "dee op"). They were invented ...
s article and in the references.
Quicksort on an array works by choosing a "pivot" at random among its major cells, then catenating the sorted major cells which strictly precede the pivot, the major cells equal to the pivot, and the sorted major cells which strictly follow the pivot, as determined by a comparison function . Defined as a dop (direct operator
Operator may refer to:
Mathematics
* A symbol indicating a mathematical operation
* Logical operator or logical connective in mathematical logic
* Operator (mathematics), mapping that acts on elements of a space to produce elements of another ...
) :
Q←
⍝ precedes ⍝ follows ⍝ equals
2 (×-) 8 8 (×-) 2 8 (×-) 8
¯1 1 0
x← 2 19 3 8 3 6 9 4 19 7 0 10 15 14
(×-) Q x
0 2 3 3 4 6 7 8 9 10 14 15 19 19
is a variant that catenates the three parts enclosed by the function instead of the parts ''per se''. The three parts generated at each recursive step are apparent in the structure of the final result. Applying the function derived from to the same argument multiple times gives different results because the pivots are chosen at random. In-order traversal
In computer science, tree traversal (also known as tree search and walking the tree) is a form of graph traversal and refers to the process of visiting (e.g. retrieving, updating, or deleting) each node in a tree data structure, exactly once. S ...
of the results does yield the same sorted array.
Q3←
(×-) Q3 x
┌────────────────────────────────────────────┬─────┬┐
│┌──────────────┬─┬─────────────────────────┐│19 19││
││┌──────┬───┬─┐│6│┌──────┬─┬──────────────┐││ ││
│││┌┬─┬─┐│3 3│4││ ││┌┬─┬─┐│9│┌┬──┬────────┐│││ ││
│││││0│2││ │ ││ ││││7│8││ │││10│┌──┬──┬┐││││ ││
│││└┴─┴─┘│ │ ││ ││└┴─┴─┘│ │││ ││14│15││││││ ││
││└──────┴───┴─┘│ ││ │ │││ │└──┴──┴┘││││ ││
││ │ ││ │ │└┴──┴────────┘│││ ││
││ │ │└──────┴─┴──────────────┘││ ││
│└──────────────┴─┴─────────────────────────┘│ ││
└────────────────────────────────────────────┴─────┴┘
(×-) Q3 x
┌───────────────────────────┬─┬─────────────────────────────┐
│┌┬─┬──────────────────────┐│7│┌────────────────────┬─────┬┐│
│││0│┌┬─┬─────────────────┐││ ││┌──────┬──┬────────┐│19 19│││
│││ │││2│┌────────────┬─┬┐│││ │││┌┬─┬─┐│10│┌──┬──┬┐││ │││
│││ │││ ││┌───────┬─┬┐│6│││││ │││││8│9││ ││14│15││││ │││
│││ │││ │││┌┬───┬┐│4│││ │││││ │││└┴─┴─┘│ │└──┴──┴┘││ │││
│││ │││ │││││3 3│││ │││ │││││ ││└──────┴──┴────────┘│ │││
│││ │││ │││└┴───┴┘│ │││ │││││ │└────────────────────┴─────┴┘│
│││ │││ ││└───────┴─┴┘│ │││││ │ │
│││ │││ │└────────────┴─┴┘│││ │ │
│││ │└┴─┴─────────────────┘││ │ │
│└┴─┴──────────────────────┘│ │ │
└───────────────────────────┴─┴─────────────────────────────┘
The above formulation is not new; see for example Figure 3.7 of the classic ''The Design and Analysis of Computer Algorithms''. However, unlike the pidgin ALGOL program in Figure 3.7, and are executable, and the partial order used in the sorting is an operand, the the examples above.[
]
Articles and presentations
* 1985 ''Operators & Nested Arrays in Dyalog APL''
* 1989 ⎕''SM: A Full-Screen Manager for Dyalog APL''
* 1990 ''Workshop on Defined Operators''
* 1990 ''A New Development Environment in Dyalog APL''
* 1994 ''Meeting: Dyalog APL Namespaces''
* 1996 ''Direct Functions in Dyalog APL''
* 1998 ''APL98 Workshop – Threads in Dyalog APL''
* 1998 ''Threads: An Introduction to Multithreading''
* 2001 ''D: A Functional Subset of Dyalog APL''
* 2001 ''Letter: Localising the Effects of System Functions in D''
* 2003 ''dfns@dyalog.com''
* 2003 ''Hungarian Method Cost Assignment''
* 2004 ''A Note on Graphs''
* 2005 ''How to Write Computer Programs''
* 2006 ''Language Extensions''
* 2006 ''Functions as Results''
* 2007 ''Version 11.1 Performance Enhancements''
* 2007 ''An Investigation into Higher Level Operators''
* 2008 ''Interpreter Performance''
* 2008 ''Journaled Files'' (video) (text)
* 2008 ''A Plea for Simplicity'' (video)
* 2009 ''Conway's Game of Life in APL'' (video)
* 2009 ''Introduction to D-functions'' (videos 1, 2)
* 2009 ''Session Whizbangs''
* 2009 ''Complex Numbers'' (video)
* 2010 ''Workshop—Introduction to D-functions'' (video 1) (video 2)
* 2011 ''Conference Edition Workshop''
* 2011 ''Introducing the Dyalog '11 Conference Edition''
* 2011 ''APL#'' (video) (text)
* 2011 ''Function Trains for Dyalog APL''
* 2011 ''What is Functional Programming?'' (video)
* 2011 ''Closures''
* 2012 ''Potential Version 14.0 Language Features'' (video) (text)
* 2012 ''State-Free Programming'' (video)
* 2012 ''Calling Alan Turing'' (video)
* 2012 ''A Sudoku Solver in APL'' (video)
* 2013 ''Train Spotting in Version 14.0'' (video) (text)
* 2013 ''Social Skills for Programmers'' (video)
* 2014 ''Depth-First Search in APL'' (video)
* 2014 ''Distractions'' (video)
* 2015 ''Dya(b)log'' (video) (text)
* 2015 ''Future Operator Proposals: Cut, Under, and Merge'' (video)[ (text)] (text)[ (text)]
* 2016 ''New Primitive Functions and Operators'' (video) (text) (script)
* 2016 ''Dyalog Implementation: The Early Years'' (video)
* 2017 ''A Case Study: Recoding from Procedural to Denotative Style'' (video) (text)
* 2018 ''Dfns—Past, Present and Future'' (video)[ (text)][
]
Wit
Scholes was well known among colleagues for his wit, sense of humor, and comic timing. His "after dinner" presentations at Dyalog conferences were highly anticipated events. A selection of them from the list above:
* 2008 ''A Plea for Simplicity'' (video)[
* 2009 ''Complex Numbers'' (video)][
* 2011 ''What is Functional Programming?'' (video)][
* 2012 ''State-Free Programming'' (video)][
* 2012 ''Calling Alan Turing'' (extract of previous item, video)][
* 2013 ''Social Skills for Programmers'' (video)][
* 2014 ''Distractions'' (video)][
Other examples can be found in ''Scholisms''.]
References
External links
* , John Scholes (1948–2019): Genius, Gentleman, and Mischievous Schoolboy
Dyalog: Direct functions
{{DEFAULTSORT:Scholes, John M.
1948 births
2019 deaths
Alumni of the University of Manchester
APL implementers
British computer programmers
Functional programming
People from Leamington Spa
Programming language designers
Programming language researchers