I think I might have, but it was a long time ago. To be sure, I'll read it again now and give you my impression. Good timing, I was in the mood for this sort of thing.
So I had read it. Some parts, I agree with, the education angle on how it should teach about how things work, how data is stored. The terseness aspect, I never really "got", I'm uncertain that BASIC takes twice as long to write as APL because it's less keystrokes. But maybe I'll change my mind on this, I've never been a fast programmer, most of the work is done in my head, and the physically of typing the thing down is insignificant. Perlis is excited about APL, and I love that.
I don't think APL is especially a good first language, but a) I hadn't really considered the verification angle, which is pretty great, and b) it depends what you consider a good first program to write. If you're making students to become data entry scientists, then yeah, it's probably a good candidate.
I've become poisoned by APL; I think that terseness is probably too sloppy a term to describe what is meant, though. I don't think it is an ur-language, better than all, or anything, and agree as a first language it is probably waaaay to highly abstracted to be a solid choice.
What I dig about it, and what I *think* terseness starts to get at, is that you can so succinctly describe something that, once you learn it, it is really easy to reason about. Little to no boilerplate.
It's not the worst kind of poison. I think what you like is its combinatory capabilities, it's also what I like most about it(by it I mean BQN, I've never really written much APL). Assembling programs from these primitives has a very nice feel to it. It's mostly good portable knowledge too, its parallizable aspect is something that you'll also find in some logic programming.
I've read this programming book recently, and it lays it on thick on how good language X is as crunching numbers, parallel data application, sorting, y'know the typical stuff. I finished the book thinking, YES, NOW I CAN OPTIMIZE ALL THE THINGS, so I've been going over the programs that I write, and there's just so little of that stuff in what I write, that all this great power is utterly lost on me..
yeah, I hear that -- I feel like my quest is always figuring out how "big" (maybe "abstract?") I want my building blocks to be when doing a thing. Most of what I do is so hilariously trivial that it doesn't end up mattering, much, or at all, so I usually land on whatever has the least headache inducing tooling.
Same, like yeah okay, maybe formal verification for the keyboard handling of sprite drawing utils for my silly gui toys is irrelevant. I've stopped thinking about programming in terms of shifting numbers around, it's not numbers, it's linear cellular automata haha, 0xff+1 is not an overflowing byte, it's just the next valid transformation of the automata. It's mud all the way down.
it's funny, i think one thing i enjoy about #uxn so much is that the space is small enough that it's possible to prove or convince yourself of the correctness or something (math, data handling, whatever). it's a great testing target. to each their own!
@d6 You know, of course, it's also why I only love to write uxntal. IT'S FOOL PROOF!
On that topic, I've only explored this space superficially with arity checking, and value bounds checking, but lately I've been helping someone with a presentation of their own on pure stack machines, and validation. They're using uxn to demonstrate, if you have anything that would contribute to this conversation, send it my way!
@d6 ah! yes that's exactly what I had in mind, I remember you had tests for determ escape codes but I didn't know you had some for fix16, I'll pass it along.
My first language was PHP, so I mean, yeah, APL would have been a massive improvement, even if I wasn't heading into data entry. Now that I think about it.
Devine Lu Linvega
in reply to eli_oat • • •Devine Lu Linvega
in reply to Devine Lu Linvega • • •Devine Lu Linvega
in reply to Devine Lu Linvega • • •eli_oat
in reply to Devine Lu Linvega • • •I've become poisoned by APL; I think that terseness is probably too sloppy a term to describe what is meant, though. I don't think it is an ur-language, better than all, or anything, and agree as a first language it is probably waaaay to highly abstracted to be a solid choice.
What I dig about it, and what I *think* terseness starts to get at, is that you can so succinctly describe something that, once you learn it, it is really easy to reason about. Little to no boilerplate.
Devine Lu Linvega
in reply to eli_oat • • •eli_oat
in reply to Devine Lu Linvega • • •yes, so much to this (and, yeah, big love to BQN, when I say "APL" I usually mean funny character array language, and not like specifically APL)
I think of ASM programming as building from atomic goo, the smallest blocks
Whereas a lot of APL programming is like playing sim city or something, where you are reshaping a planet to move data around
They're the extreme ends of a spectrum, maybe with more normy stuff living in between
Devine Lu Linvega
in reply to eli_oat • • •eli_oat
in reply to Devine Lu Linvega • • •Devine Lu Linvega
in reply to eli_oat • • •⛧ esoterik ⛧
in reply to Devine Lu Linvega • • •Devine Lu Linvega
in reply to ⛧ esoterik ⛧ • • •@d6 You know, of course, it's also why I only love to write uxntal. IT'S FOOL PROOF!
On that topic, I've only explored this space superficially with arity checking, and value bounds checking, but lately I've been helping someone with a presentation of their own on pure stack machines, and validation. They're using uxn to demonstrate, if you have anything that would contribute to this conversation, send it my way!
⛧ esoterik ⛧
in reply to Devine Lu Linvega • • •so it's not so much stack-machine specific but i have a random/exhaustive testing harness i use for testing #uxn libraries. see:
http://plastic-idolatry.com/erik/nxu/test-fix16.tal
http://plastic-idolatry.com/erik/nxu/test-fix16.py
Devine Lu Linvega
in reply to ⛧ esoterik ⛧ • • •Devine Lu Linvega
in reply to Devine Lu Linvega • • •eli_oat
in reply to Devine Lu Linvega • • •🤝 @eli_oat
first language being PHP