Skip to content
0:00 / 0:00

#apl#arrayprogramming#dyalogapl

Design Patterns vs Anti pattern in APL by Aaron W Hsu at FnConf17

ConfEngine

14K subscribers • 20 videos on Hallway

YouTube
  • Recommended by 4 people: 4 on Hacker News.
  • A classic. People kept recommending it from 2019 to 2022.
  • Presented by Aaron W. Hsu
  • An opinion. It argues one side of a question engineers disagree on.

Intermediate. Assumes working knowledge.

7.7K views8 years ago4 recommendations

Programming languagesSoftware designLanguage design and type systemsDesign patternsFunctional programming

Aaron Hsu analyzes the mental shift required for array programming, comparing idiomatic APL design patterns with common anti-patterns.

APL is a notorious language with a reputation for being "write only" and difficult to learn. Yet, many people consider APL to be their single most productive, advantageous tool that they hope never to give up. In particular, it is generally observed that many computer scientists have a poor opinion of the usability of APL, while many data scientists and domain experts find the language to be exceptionally usable. This session focuses on the experienced programmer's struggle to gain real facility with APL beyond the basic, trivial understanding of its semantics and syntax (which can be taught in a few hours). We will observe this struggle through a "human-centered" experience analysis identifying a set of Pattern/Anti-pattern tensions that are at the heart of the intermediate APL learning "wall." By examining the experience of thinking and working with APL code versus regular code, we can identify principles of APL coding practice that directly oppose the widely taught and embraced best practices of the broader programming community. We'll see not only what these principles are, but also why they survive in APL and how they contribute to the positive development cycle of an experienced APL programmer, instead of the negative impact such practices usually have when writing in other languages. Understanding these practices will provide a focus point for the discussion of programming experience design and the use of concise array language, as well as provide a structure for becoming better able to write, read, and think in APL expert. Conference link: functionalconf.com More details: confengine.com/functional-conf-2017/proposal/4620

Why it's here

4 people recommend this

What people say. Highly recommended for understanding the unique paradigm of array programming and how to think in APL.

jonahxon Hacker News • Recommends

On “J Language – New Website”

All of the languages you mentioned are watered-down and inferior versions of the programming models invented by APL and J. By that I don't mean that APL/J are unilaterally better -- there are plenty of practical reasons to choose R/Matlab/numpy -- but they are unquestionably more beautiful and visionary. They hang together at a deep level in a way those languages do not. They are also much harder to learn, and much more fun. On the readability of APL (terrific video): link to this video Alan Perlis on its beauty: link

myco_logicon Hacker News • Recommends

On “Programming breakthroughs we need”

…f these languages (it's not just about code-golfing for the implicit joy of laconicism). By allowing for the direct expression of algorithms in the same context they are being used, APL and its kin enable one to tweak and optimize these idioms on a case-by-case basis: precisely the kind of specificity the author of this article is asking for. 0: link to this video 1: link…

kadblason Hacker News • Recommends

On “Why I think Haskell is the best general purpose language as of June 22 2019”

…uage that might be even better than Haskell: Dyalog APL. ( link ). Try it out yourself ( link ) To explain why, I recommend watching Aaron Hsu's videos on Dyalog APL: - Does APL need a Type System? ( link ) - This is actually a very interesting question that is more nuanced than upon first glance. - Design Patterns and Anti-Patterns in APL ( link to this video ) - The main takeaway from this video for me was the principle of "Idioms over libraries." - Higher Performance Tree-Wrangling, the APL way ( link ) - Or how to model Trees without using pointers by using "Inverted Tables." (An inverted table is a table where the columns are the rows and the rows are the columns)…

xelxebaron Hacker News • Recommends

On “APL and J (2015)”

…as a really interesting talk2 that compares APL and "other" languages via the lens of Human-Computer Interfaces. I am just beginning my journey into J, but so far it has been extremely rewarding. Head on over to #jsoftware on Freenode. The channel is super small, but has some really friendly and helpful people on it! 0: link 1: link 2: link to this video…

ognyankulevon Hacker News • Mentions

On “APL Style: Patterns/Anti-patterns”

Two talks with these slides: 1. link (Dyalog17: Patterns and Anti-patterns in APL: Escaping the Beginner's Plateau) 2. link to this video (Design Patterns vs Anti pattern in APL by Aaron W Hsu at FnConf17)

a-salehon Hacker News • Mentions

On “Non-English-based programming languages”

Maybe look at a different programming paradigm then? :) I remember trying to learn APL and then watching link to this video and was amused that there is this world where programming is just symbols :D So maybe look at i.e. something apl-like, or maybe ml or haskell or erlang, where so many things you can do with functions and composing them, or even Prolog, where everything could be thought of as a set of rules/constraints to be solved (I think? haven't programmed in Prolog since uni :) )

arcfideon Hacker News • Mentions

On “Getting Started with APL (2017)”

It's really no more difficult than learning recursion, pointers, memory allocation, type theory, functional programming, iterative programming, OOP, or any other of the myriad techniques that we use for computing. As I mention in my talk on APL design patterns, it's largely a matter of what we have been trained to understand, and there is some evidence to suggest that APL is actually arranged in a manner more natural for the human faculty than most computing languages: link to this video

invalidOrTakenon Hacker News • Mentions

On “K Language (2011)”

A story, since in retrospect I think it's worth telling. Some years ago I was at the SF Clojure meetup. Arthur Whitney's daughter worked at the sponsoring company, and he agreed to come tell us about K. In retrospect, I don't think we gave him the welcome he deserved. No one was rude or anything, but it seemed there was a disconnect: Arthur was keen to show off how fast K (and Kdb) was, over zillions and zillions of rows. But the thing that the Clojurists were all searching for (that got them into Clojure in the first place) was expressivity . Is Clojure fast? I don't know, generally the problems I face come down to avoiding balls of mud rather than performance bottlenecks. And I think that…

invalidOrTakenon Hacker News • Mentions

On “K Programming Language”

Comment from a year ago( link ): >A story, since in retrospect I think it's worth telling. Some years ago I was at the SF Clojure meetup. Arthur Whitney's daughter worked at the sponsoring company, and he agreed to come tell us about K. >In retrospect, I don't think we gave him the welcome he deserved. No one was rude or anything, but it seemed there was a disconnect: Arthur was keen to show off how fast K (and Kdb) was, over zillions and zillions of rows. >But the thing that the Clojurists were all searching for (that got them into Clojure in the first place) was expressivity. Is Clojure fast? I don't know, generally the problems I face come down to avoiding balls of mud rather than perfo…