6 ms·
The APL Orchard
- BenoitP 6y agoI feel like APL would really benefit from a shadertoy-like site. It is an array language, an image is worth a thousand words, and an array[3][2][500] is a square image. It'd be fun to tinker with visual effects of an APL function, and fun is a great way to fuel learning?
- kick 6y agohttp://beyondloom.com/tools/specialk.html http://beyondloom.com/tools/specialk.html
- BenoitP 6y agoNice! I did search for something like this, but I guess my Google-fu is not the best!
- kick 6y agoHe has a lot of really good blog posts and software toys on his site and on itch. I recommend looking through them. He also has a web comic that's pretty good, but he hasn't updated it in a while. http://beyondloom.com/blog/index.html http://beyondloom.com/blog/index.html http://beyondloom.com/things/index.html http://beyondloom.com/things/index.html http://beyondloom.com/games/index.html http://beyondloom.com/games/index.html http://beyondloom.com/comic/page0.html http://beyondloom.com/comic/page0.html ('RodgerTheGreat on HN)
- alaaalawi 6y agoThis may be not colorful, but was definitely fun for me https://youtu.be/tcix3IxaX3g https://youtu.be/tcix3IxaX3g
- kick 6y agoThe SE chat is really worth lurking if you're at all curious about APL; nearly everyone who has written a publicly-available array language implementation who isn't dead or over sixty is active on it.
- Bostonian 6y agoAs a Fortran programmer, I found his comments on "Evolution, not Revolution" to be interesting, including his argument for retaining 1-based arrays :).
- kick 6y agoIf you're interested in recent developments in array languages, I recommend checking out: BQN https://mlochbaum.github.io/BQN/ https://mlochbaum.github.io/BQN/ ngn/k https://git.sr.ht/~ngn/k/tree/master/item/readme.txt https://git.sr.ht/~ngn/k/tree/master/item/readme.txt (Previous discussion: https://news.ycombinator.com/item?id=22009241 https://news.ycombinator.com/item?id=22009241) aplette, which is a modernization of Ken Thompson's APL (with a LOT of projects in between them; Ken's APL interpreter -> ? -> OpenAPL -> aplette) https://github.com/gregfjohnson/aplette https://github.com/gregfjohnson/aplette (Previous discussion: https://news.ycombinator.com/item?id=21740536 https://news.ycombinator.com/item?id=21740536) I'd also recommend checking out J, which isn't a recent development, but has the best syntax out of all array languages, has the best development environments, is the easiest to learn (it has a way to learn it built into the language itself!), and is the only one that treats making GUIs as a first-class feature (and, also, critically, is not proprietary, unlike Dyalog): https://jsoftware.com https://jsoftware.com (Has so many previous discussions I just recommend using HN search to find them.) The chat is biased in favor of Dyalog APL, but a lot of the modern additions Dyalog has made to the language make it (in my opinion) worse as a notation, so ideally don't let it turn you off of the concept of array languages entirely if Dyalog doesn't "click" with you. If you haven't already, you should also check out Notation as a Tool of Thought, a paper so good it won Iverson the Turing Award: https://www.eecg.utoronto.ca/~jzhu/csc326/readings/iverson.pdf https://www.eecg.utoronto.ca/~jzhu/csc326/readings/iverson.p...
- jodrellblank 6y agoDyalog clicks a lot more than J; "the best syntax"? "Easiest to learn"? Can you expand more on these positions? And "a lot of the modern additions Dyalog has made to the language make it (in my opinion) worse as a notation" this one. I don't know when you mean modern but as a casual user, {} functions, trains, nest ⊆, rank adjustment ⍤ (like J), seem to make things more convenient?
- kick 6y ago"the best syntax" Yes, absolutely. By a long shot. For starters, J can actually be parsed. (k can also be parsed, for what it's worth.) "Easiest to learn"? Spend ten minutes using J's built-in Labs feature. Or read J for C Programmers (also ships with the language), if you come from a non-array background. Iverson was able to teach this stuff to public school children in no time at all; modern array languages seem to deliberately make themselves obtuse to outside observers. APL was doomed to obscurity because the people making it decided to please existing customers rather than try and make it approachable. I don't know when you mean modern Pretty much every APL2 feature and everything that came after it that they didn't borrow from J. While J has English control statements, they generally aren't used, but nearly every time I come across something written in Dyalog APL it's full of :If :EndIf and all sorts of atrocious English words which mock the ideal of a better notation than ALGOL.
- totemandtoken 6y agoI can't for the life of me find it again, but there was a youtube talk an hn user posted in a thread about array based languages a few weeks ago that basically showed a non-turing complete but still powerful array processing language based on Iverson and APL. I think it was developed specifically with streaming in mind. It was a really cool DSL that showed how much you can do without iterating over arrays. It really kills me that I didn't save that talk. If I find it, I'll try to remember to update this comment with a link. It was kind of slick though.
- moonchild 6y agoGilead Bracha's rankshape?
- rscho 6y agoYes, that's the one: https://youtu.be/x1FoTYnJxeY https://youtu.be/x1FoTYnJxeY
- totemandtoken 6y agoYes! Thank you so much!
- Avshalom 6y agohttps://tkatchev.bitbucket.io/tab/index.html https://tkatchev.bitbucket.io/tab/index.html maybe? from this thread: https://news.ycombinator.com/item?id=25090816 https://news.ycombinator.com/item?id=25090816
- totemandtoken 6y agoNo but that is a fascinating thread, so thank you
- fuzzer37 6y agoSerious question, are people still using this language (APL) for anything serious? Or is it just a hobby language at this point. I notice that Dyalog sells commercial runtimes for about $2500 a year for Unix, so there must be someone.
- deleted 6y ago[deleted]
- kick 6y agoMorten Kromberg (big guy at Dyalog; coincidentally, author of the post we're discussing) in "justifying" why Dyalog isn't libre, just a few days ago: There is little risk of the demise of Dyalog APL any time soon. Our customers run businesses that are based on Dyalog APL with a combined annual turnover in excess of a billion euros/dollars. https://chat.stackexchange.com/transcript/52405?m=56860424#56860424 https://chat.stackexchange.com/transcript/52405?m=56860424#5... There are a few other companies with proprietary APL implementations that are also getting by really well. k, which is pretty similar, is even more of a money-maker than Dyalog APL, having been responsible for a company worth a billion or more (Kx) and an entirely different company that also seems to be doing pretty well. J also is used somewhat commonly, though less, and its users seem to be doing more than well, too (my current employer and most of my previous employers have been J shops, and none of them have gone under yet. I think a couple of them had record-breaking years in 2020). J is also free, libre software, so instead of paying for a Dyalog or K license, you should really just use it (or ngn/k, if k is more your thing).
- rscho 6y agopretty much every bank and heavy industry company.
- warpspin 6y agoI love this: "it is my very strong conviction that making breaking changes would violate the trust that exists between Dyalog and its customers, and I would personally consider it to be unethical." I do not actually have a personal need for APL or Dyalog's product, but nowadays it is pretty refreshing to see somebody who seems to deeply care about backwards compatibility.
- wrp 6y agoIverson's original APL was a notation for doing linear algebra. To make it a general purpose programming language, it had to be extended significantly. As a result, each commercial flavor of APL is rather different. I found APLX the easiest to understand and APL+Win the hardest, with Dyalog somewhere in between. APLX was a commercial product but is now free and is hosted on the Dyalog site. Another good one to start with is IBM's APL2. The demo version is full featured but time limited. It looks old, but has a well designed interface and good learning materials.