3 ms·
That is an interesting read, although everyone seemed to be slightly hostile instead of openly discussing. I don't prefer J, even over APL; I find it not very w
by tluyben2 4y ago
That is an interesting read, although everyone seemed to be slightly hostile instead of openly discussing. I don't prefer J, even over APL; I find it not very well designed as a tool of thought. I do like some k's though; they more naturally feel like an ascii version of k. I think Arthur has a better feel for the ergonomics of verbose languages. I like BQN so far, but need to do something large-ish with it. I also like Klong, especially because Nils wrote a nice and easy to follow book about it. But it's not really a language with a community.
I think anyone interested in this kind of thing should just intern one of them ; you basically need so see every compute problem as an array problem and immediately see patterns for how to solve them. The 'gibberish' (as programmers not used to these kind of languages see it) is typically not written char for char, but the experienced programmer has idioms; when they encounter a problem seen before, an entire 'function' plops out, often shorter than a function performing the same task in another programming language would be name. Once there, the other ones are kind of more of the same. It's not very different from the first encounter with haskell or lisp or something; if you are not proficient, you won't see the advantage (or even think people using it are not totally sane).
- robomartin 4y agoYou are right on many points. When I was using APL professionally I did not think of the symbols at all. They were part of my language. That’s what Iverson meant when he called it a tool for thought. No different from using musical or mathematical notation. In all cases one does not reach that level of “flow” with notation through casual contact. Most people who complain about APL’s notation have only had casual contact with it. That isn’t a valid frame of reference at all.
- tluyben2 4y agoTo be honest, this notational tool of thought feeling I really don't have with any of the popular languages. It is indeed like a natural language you are learning or one you are fluent in; when you are learning you have to translate to your native language all the time; when you are fluent, it just flows. That's the difference. I used to have it with Basic, C and Pascal, but never as much as with apl/k. Even those are recent for me. I had it with Prolog in university doing a major tract in symbolic NLP (my natural speech and dreams sometimes where in Prolog; that when talking with someone, I would actually just for clauses automatically). I find, personally, that joy of programming is vastly less using libraries than it is just having a fixed amount of functions and stdlib you know by hard and get fluent at. But did you see / try BQN? I think it's an interesting attempt. And well built.
- harperlee 4y agoAs an outsider, I am now wondering about how cool would an APL variant be, where you composed new words based in a set of out of the box syllables! Haha
- Syzygies 4y ago> you basically need so see every compute problem as an array problem and immediately see patterns for how to solve them. I was briefly a commercial APL programmer, after APL blew my mind in college. (An IBM 1130 running Fortran punched cards was the competition.) How much mileage one can get from "Every problem as an array problem" was APL's singular lesson for me, to this day. In the same idea box for me: Monadic parsers in Haskell can be mind-blowing, but every problem isn't a string problem. Every problem is a algebraic data structure problem. They can be parsed and transformed as a natural generalization of strings. And, I love Lisps but they are as stuck in the past as APL, I truly believe that in 1,000 runs of the simulation our world would come out bottom 10% on how naturally we manipulate macros. Macros look strapped on; we're living in a first draft. The goal of any advanced programming language should be to expose the thought process as a form of algebra, so we can learn to fly. APL did this well for its time. This is the appeal of languages like Haskell. We have barely scratched the surface of the algebra of parsing combinators, as a potential backbone for programming. My imagined successor to APL is in spirit only: It is so agile at implementing macros as monadic parsing of algebraic data types that all other problems become easy.
- robomartin 4y agoExactly right. APL was great at the time. As much as I love what it taught me, that was 40 years ago. It isn’t relevant today.