HackerTube
HomeLongsLikedHistoryWatch laterCategoriesPlaylistsSettings

Breaking Down Programming Paradigms: APL's Surprising Learning Curve // Aaron Hsu // Dyalog '17

Dyalog User Meetings1 HN recommender · recommended in 1 month, 2018-2019
YouTube
7K views · 9 years ago · talk · evergreen

Aaron Hsu explains why programmers often find APL harder to learn than people with no programming background. He identifies eight patterns that contrast traditional software engineering practice with APL practice, starting from Ken Iverson's language design principles.

Shared in APL threads as a thought-provoking talk with lots of useful commentary beyond the slides.

Programming language designFunctional programming#apl#dyalog#arrayprogramming#aaronhsu#languagedesign

4 comments from Hacker News

@jodrellblank2019 · in “Blurring the Line Between User and Programmer”

Aaron Hsu’s talk on APL - I think this talk - ▶ this video - has a more radical interpretation; by the time you’re using lisp to compose lightbulb apis and Bluetooth stream hacking, you’re already past the point of divergence that you mention and are on the wrong side of it. APL does the hard part of choosing composable functions and presents those to the user, as a simplified interface. Sorting isn’t a global namespace of thirty different sort algorithms so you can delight in picking the exact one you want, sorting is one character (⍋) so you can use it as a composable building block and not care about the details. I might agree that the core issue is that programs have become less composable over time - but what you ask for doesn’t seem to address that at all. Part of the job of designers and creators is to make simplifying decisions on behalf of users; I don’t want the lightbulb raw interfaces to be exposed to me as an alternative to a crummy closed app product, I want a well designed composable app product as the api I use - all at once, so I don’t have to care about negotiating access tokens or header padding anymore than I have to care about LED heat dissipation or mains smoothing inside the bulb when I flick a light switch. For composition I want Lego not a machine shop, and I accept compromises in ability to get that. I want grep not fopen(). When you say you want composition what you’re asking for is a machine shop; not a bad thing to ask for, but completely different fro

CitesView on HN
@eggy2019 · in “Translating math into code with examples in Java, Racket, Haskell, Python (2011)”

@ddragon your points are well taken. I will look further into Julia. I still think when I wrote "out of the box" with APL in mind as far as expressing math, or J for that matter if you learn the ASCII symbols. I've seen other examples since your post on Julia that show similar math expressiveness, but they seem to rely on libraries or the syntactic sugar provided by the libraries. I haven't tried your example, but it looks like vanilla Julia. My familiarity with Matlab makes Julia an easy choice for me too. Here is a simple example in J: +/ % # The above is an average function in J. It is a fork, where you fold right over the input (+/), and divde (%) by the tally (#) or count of items, so that (+/ % #) 4.5 3 2 12 produces 5.375 as the average of the input vector. Notice the array-based language deals with singular quantities or scalars, vectors, and multi-dimensional arrays as fundamentals of the PL. You could also define it as: average =: +/ % # for those who make the readability argument, however, you learn math symbols and read math papers full of them, and not lengthy verbal descriptions of these math formulas (average is equal to the "sum all of the input elements, and divde by the count or tally of input items"). The fact that a highly-functional APL program can fit on one screen negates the argument that you need readability, so that when you pick up or someone else picks up, your 110K lines of JavaScript code they can make a change. You may have to do a refresh read

CitesView on HN
@feelin_googley2018 · in “APL Style: Patterns/Anti-patterns”

For those who do not use Javascript in the browser, here is another source of the presentation: ▶ this video Lots of good commentary not in the slides. And here is a way to download the video without Javascript. I have been meaning to try to rewrite this in k. # Notes # Works by brute force and has been reliable for years # Was easily updated when YouTube made changes (rare) # Zero dependencies except tr, sed and an https client # Takes a YouTube URL on stdin # Example usage: # echo ▶ this video 22 file # "ytd" is name of the script # "22" is itag-no in this case large mp4 ("18" is smaller mp4) # "file" is optional filename, no extension required # if no filename given video is saved as "1.mp4" # UNIX-like: url-filter < file-containing-url|ytd 22 # Caution when copying and pasting: line 2 needs to retain the 4 space indent # N.B. Will not work with restricted videos; *this is not for downloading music or other commercial crap*; use youtube-download if thats what you are after # N.B. Some videos may require a few tries, most will work on the first try; if get 403 try again #!/bin/sh case $# in [123]);;*)exec echo usage: $0 itag-no \[file\];esac;a=$(exec sed 's/http:/https:/;s/m.youtube/www.youtube/;s/youtu.be./www.youtube.com\/watch?v=/;s/hooktube.com/youtube.com/;s/embed./watch?v=/;#etc.;s/?version.*//;s/;.*//'); n=0;while true;do b=$(curl $a|exec tr -cd '\12\40-\176'|exec sed 's/https%3A/\ &/g;s/ *//;/ https%3A%2F%2F/!d;s/%3A/:/g;s/%2C/,/g;s/%2F/\//g;s/%3D/=/g; s/%3B/;/g;s/%3F/?/g;s/%

RecommendsView on HN
@ognyankulev2018 · in “APL Style: Patterns/Anti-patterns”

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

CitesView on HN
Does APL Need a Type System? by Aaron W Hsu at #FnConf1854:31

Does APL Need a Type System? by Aaron W Hsu at #FnConf18

ConfEngine
6K views • 7 years ago
Design Patterns vs  Anti pattern in APL by Aaron W Hsu at FnConf1754:10

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

ConfEngine
8K views • 8 years ago
Conway's Game Of Life in APL7:48

Conway's Game Of Life in APL

Dyalog
236K views • 17 years ago
High-performance Tree Wrangling, the APL Way // Aaron Hsu // Dyalog '1830:37

High-performance Tree Wrangling, the APL Way // Aaron Hsu // Dyalog '18

Dyalog User Meetings
6K views • 7 years ago
Depth-first search in APL11:32

Depth-first search in APL

Dyalog
11K views • 12 years ago
Co-dfns Live Stream: Compiler Design and Architecture2:03:12

Co-dfns Live Stream: Compiler Design and Architecture

Aaron Hsu (arcfide)
21K views • 9 years ago
A Sudoku Solver in APL9:43

A Sudoku Solver in APL

Dyalog
47K views • 14 years ago
Keynote: The Last Hope for Scala's Infinity War - John A. De Goes45:03

Keynote: The Last Hope for Scala's Infinity War - John A. De Goes

Scalapeño
36K views • 8 years ago
Four Languages from Forty Years Ago - Scott Wlaschin1:01:45

Four Languages from Forty Years Ago - Scott Wlaschin

NDC Conferences
33K views • 8 years ago
Dynamic Languages Wizards Series - Panel on Language Design1:58:46

Dynamic Languages Wizards Series - Panel on Language Design

Eduardo Cavazos
16K views • 14 years ago
Stephen Wolfram's Introduction to the Wolfram Language12:56

Stephen Wolfram's Introduction to the Wolfram Language

Wolfram
924K views • 12 years ago
Simon Peyton-Jones: Escape from the ivory tower: the Haskell journey1:04:16

Simon Peyton-Jones: Escape from the ivory tower: the Haskell journey

Churchill College, University of Cambridge
170K views • 9 years ago
Effective Programs - 10 Years of Clojure - Rich Hickey1:14:52

Effective Programs - 10 Years of Clojure - Rich Hickey

ClojureTV
176K views • 9 years ago
Clojure for Lisp Programmers Part 1 - Rich Hickey1:28:59

Clojure for Lisp Programmers Part 1 - Rich Hickey

ClojureTV
25K views • 13 years ago
The Next Five Years of ClojureScript - David Nolen1:00:58

The Next Five Years of ClojureScript - David Nolen

Metosin
19K views • 10 years ago
Effective ML1:09:24

Effective ML

Jane Street
30K views • 10 years ago
Why Isn't Functional Programming the Norm? – Richard Feldman46:09

Why Isn't Functional Programming the Norm? – Richard Feldman

Metosin
1.6M views • 7 years ago
Practical Common Lisp1:12:10

Practical Common Lisp

Google TechTalks
98K views • 19 years ago
Stanford Seminar - Concatenative Programming: From Ivory to Metal1:04:45

Stanford Seminar - Concatenative Programming: From Ivory to Metal

Stanford Online
14K views • 8 years ago
"Shen: A Sufficiently Advanced Lisp" by Aditya Siram40:20

"Shen: A Sufficiently Advanced Lisp" by Aditya Siram

Strange Loop Conference
26K views • 12 years ago