‹Programming› 2023
Mon 13 - Fri 17 March 2023 Tokyo, Japan

APL, developed in early 1960s, is still used, especially in finance. More felt is its influence on algebra of programming (via FP) and on Matlab. Started as a notation for a (tensor) algebra course, APL lets us look at computation from a vantage point, discern patterns of data flow and put them into words.

APL was developed when parsing technology and the art and science of programming language design were just emerging. It is only now that we understand, from experience and information theory, that trying to assign meaning to any possible combination of tokens is a bad idea. Mathematical notation is also evolving and sometimes messy and hence is not always a good basis for a programming language. (The evolution of Maxwell equations notation comes to mind.)

How to liberate APL from its style? For two years, I have been trying to explain APL ideas to two bright sophomores, by implementing step by step a small array DSL embedded in OCaml. The students never heard of OCaml, let alone APL. In my tutorial, I will give a taste of that seminar course and tell what came out of it: a new understanding of Game of Life and Plasma Fractals, leading to many tantalizing extensions.

Objectives

  • Explain main ideas and innovations of APL, and how to realize them in one’s favorite language

  • On many examples (mainly involving arrays, matrices, images) show how to look at computation from a `higher’ point of view; how to see, and make explicit, data flow; how use and design operations on whole arrays. (Hint: loops or recursive functions are both low-level). The higher level does not have to mean inefficient!

  • The main ideas are actually very old. We are going back to the origins of procedural, flowchart, and modular programming: the ideas of Iverson, McIlroy, Parnas, Goguen – but look at them with today’s eyes and using today’s languages.

  • I will use my favorite language, OCaml. I deliberately use a very simple subset of OCaml: essentially, typed lambda-calculus with some data types and constants. The code can be easily re-implemented in Scala, Haskell, F# – probably Swift, Rust and even Java.

Intended audience

Mainstream software developers, exposed or curious about imperative-less programming. The knowledge of neither APL nor OCaml is presupposed.

Relevance

The tutorial is about the Art of programming: a way of programming by discerning patterns of data flow, and by finding, or coining, words to aptly express them

Plenary
You're viewing the program in a time zone which is different from your device's time zone change time zone

Mon 13 Mar

Displayed time zone: Osaka, Sapporo, Tokyo change

09:00 - 10:30
09:00
90m
Tutorial
ARPL
ARPL

10:30 - 11:00
10:30
30m
Break
Break
Breaks

11:00 - 12:00
11:00
60m
Tutorial
ARPL
ARPL

12:00 - 14:00
12:00
2h
Break
Lunch Break
Breaks

14:00 - 15:30
14:00
90m
Tutorial
ARPL
ARPL

15:30 - 16:00
15:30
30m
Break
Break
Breaks

16:00 - 17:30
16:00
90m
Tutorial
ARPL
ARPL

Questions? Use the ARPL contact form.