Vector Functional and Table-Driven Programming - A Tale of Two Useful but Lesser Known Programming Language Paradigms
In this talk, we illustrate the essential features of the two by examples. At the end of the talk, attendees will appreciate both table-driven (TDP) and vector functional programming (VFP) and when one or both are appropriate for a given application.
I was very fortunate to be exposed to both very early in my career and have used them in many very diverse commercial applications, including embedded systems, command and control, library circulation, and cyber analytics. This presentation is inspired by our current research exploring the broader usage of VDP in data-intensive applications and TDP for small microcontrollers.
Programming Paradigms guide the design and implementation of software through a strong metaphor such as Object-Oriented, Functional, Procedural or Logic. These approaches are best supported by a Metaphor Oriented language such as Smalltalk, Haskell, C, or Prolog. The metaphor provides a disciplined mental model for expressing the requirements, concepts, design and implementation. It also influences a given language's essential concepts, types and operations. In practice, no single strong specific paradigm is best hence, many modern languages support multiple paradigms.
We briefly describe the essence of Table Driven (TDP) and Vector Functional (Array) programming (VFP), their history and evolution. They enable concise, efficient solutions for appropriate applications. Both have a strong specific view of programs as collections of tabular data! While they share a rectangular perspective of programs, their use cases differ.
TDP is applicable to the domain of application logic specification, testing and execution. TDP has been used as a design and implementation best practice since the early days of computing. It was considered the best practice for systems programmers who used a collection of tables - decision, state, constraint (spreadsheets), dispatch, etc. to describe and test complex logic. Then and now, they provide a compact representation, an efficient implementation with a clear separation of concerns.
VFP is a wide spectrum functional language(s) for arrays particularly useful for “living in” and computing over large volumes of data. The APL, J, NIAL, k, and Julia families of array (vector) languages are examples. APL strongly influenced the popular mathematical languages and environments MatLab, R, Mathematica and Octave. Today’s data science core libraries for R, Python - Numpy and Pandas are derived from the array languages. Finally, modern GPUs implement vector operations to support computer graphics and machine learning.
Attendees will leave with two new ways of looking at application design and implementation which can leverage TDP or VFP languages or libraries available in popular languages.