@screwlisp is having some site connectivity problems so asked me to remind everyone that we'll be on the anonradio forum at the top of the hour (a bit less than ten minutes hence) for those who like that kind of thing:
-
@dougmerritt @kentpitman @ramin_hal9001 @screwlisp @cdegroot
To the point where, the following summer as an intern, I was needing to write a tree walk, and I wrote it in FORTRAN — because that's what was available at AT&T Basking Ridge (long story) — using fake recursion (local vars get dimensions as arrays, every call/return becomes a computed goto, you get the idea…) because I wanted to see if this *could* actually be done in FORTRAN, and it could, and it worked, and there was much rejoicing; I think my supervisor (who, to be fair, was not really a programmer) blue-screened on that one.
And *then* I tried to explain it all to my dad...
8/11
@dougmerritt @kentpitman @ramin_hal9001 @screwlisp @cdegroot
You may say that untyped lambda calculus and SKI combinatory calculus and so on) are all *dreadful* in terms of expressiveness, and I will probably agree,
... but it also seems to me that Barendregt got pretty good at it.
I'm also guessing TECO wouldn't have existed without there being people who managed to wrap their brains around it and found it to be expressive and concise. I myself never got there (also never really tried TBH),
... but at the same time, it's *still* the case that if I need to write a one-liner to do something, chances are, I'll be doing it in Perl, and I've heard people complain about *that* language being essentially write-only line-noise.
10/11
-
@dougmerritt @kentpitman @ramin_hal9001 @screwlisp @cdegroot
You may say that untyped lambda calculus and SKI combinatory calculus and so on) are all *dreadful* in terms of expressiveness, and I will probably agree,
... but it also seems to me that Barendregt got pretty good at it.
I'm also guessing TECO wouldn't have existed without there being people who managed to wrap their brains around it and found it to be expressive and concise. I myself never got there (also never really tried TBH),
... but at the same time, it's *still* the case that if I need to write a one-liner to do something, chances are, I'll be doing it in Perl, and I've heard people complain about *that* language being essentially write-only line-noise.
10/11
@dougmerritt @kentpitman @ramin_hal9001 @screwlisp @cdegroot
To be sure, my Perl tends to be more structured.
On the other hand, I also hate Moose (Perl's attempt at CLOS) and have thus far succeeded in keeping that out of my life.
I also remember there being a time in my life when I could read and understand APL.
But if you do think it's possible to come up with some kind of useful formal definition/criterion for "expressiveness", go for it.
I'll believe it when I see it.
11/11
-
@dougmerritt @kentpitman @ramin_hal9001 @screwlisp @cdegroot
To be sure, my Perl tends to be more structured.
On the other hand, I also hate Moose (Perl's attempt at CLOS) and have thus far succeeded in keeping that out of my life.
I also remember there being a time in my life when I could read and understand APL.
But if you do think it's possible to come up with some kind of useful formal definition/criterion for "expressiveness", go for it.
I'll believe it when I see it.
11/11
@wrog
Thank-you for the wonderful autobiography!
@dougmerritt @kentpitman @ramin_hal9001 @cdegroot -
@dougmerritt @kentpitman @ramin_hal9001 @screwlisp @cdegroot
To be sure, my Perl tends to be more structured.
On the other hand, I also hate Moose (Perl's attempt at CLOS) and have thus far succeeded in keeping that out of my life.
I also remember there being a time in my life when I could read and understand APL.
But if you do think it's possible to come up with some kind of useful formal definition/criterion for "expressiveness", go for it.
I'll believe it when I see it.
11/11
@wrog@mastodon.murkworks.net your story about learning recursion in Algol reminded me of a story that was told about how Edsger Dijkstra influenced the Algol spec (through a personal conversation with I think John Bakus) to include what we now understand as a "function call," by specifying the calling convention for how the stack must be modified before the subroutine call and after the return. I first heard the story in a YouTube video called, "How the stack got stacked".
Regarding "expressiveness," you do make a good point about it (possibly) being fundamentally a subjective thing, like "intelligence." Personally, I never felt the restrictions in Haskell made it any less expressive as a language.
It is interesting how you can express some incredibly complex algorithms with very few characters in APL. Reducing function names to individual symbols and applied as operators does make the language much more concise, but is "concise" a necessary condition for "expressive?"
@dougmerritt@mathstodon.xyz @kentpitman@climatejustice.social @screwlisp@gamerplus.org @cdegroot@mstdn.ca
-
@wrog@mastodon.murkworks.net your story about learning recursion in Algol reminded me of a story that was told about how Edsger Dijkstra influenced the Algol spec (through a personal conversation with I think John Bakus) to include what we now understand as a "function call," by specifying the calling convention for how the stack must be modified before the subroutine call and after the return. I first heard the story in a YouTube video called, "How the stack got stacked".
Regarding "expressiveness," you do make a good point about it (possibly) being fundamentally a subjective thing, like "intelligence." Personally, I never felt the restrictions in Haskell made it any less expressive as a language.
It is interesting how you can express some incredibly complex algorithms with very few characters in APL. Reducing function names to individual symbols and applied as operators does make the language much more concise, but is "concise" a necessary condition for "expressive?"
@dougmerritt@mathstodon.xyz @kentpitman@climatejustice.social @screwlisp@gamerplus.org @cdegroot@mstdn.ca
@ramin_hal9001
Some clearly prefer concise, but nonetheless it is orthogonal to expressive.'Expressive' != 'my favorite approach' -- ideally expressiveness can be determined objectively by human factors studies.
Failing that, sure, it's then subjective and subject to unbounded argument.

-
@wrog
Thank-you for the wonderful autobiography!
@dougmerritt @kentpitman @ramin_hal9001 @cdegroot@wrog
Yes, thanks, I liked reading that. -
@dougmerritt @kentpitman @ramin_hal9001 @screwlisp @cdegroot
You may say that untyped lambda calculus and SKI combinatory calculus and so on) are all *dreadful* in terms of expressiveness, and I will probably agree,
... but it also seems to me that Barendregt got pretty good at it.
I'm also guessing TECO wouldn't have existed without there being people who managed to wrap their brains around it and found it to be expressive and concise. I myself never got there (also never really tried TBH),
... but at the same time, it's *still* the case that if I need to write a one-liner to do something, chances are, I'll be doing it in Perl, and I've heard people complain about *that* language being essentially write-only line-noise.
10/11
@wrog
> I'm also guessing TECO wouldn't have existed without there being people who managed to wrap their brains around it and found it to be expressive and concise. I myself never got there (also never really tried TBH),I'm one of those people, BTW. My proof is that I wrote a closed-loop stick figure ASCII animation juggling three balls.
As with any complex TECO thing, the resulting code was write-only -- and that was always the problem with even mildly powerful TECO macros.
Perl at its worst can be described as write-only line noise, yes, but in my experience is *STILL* better than TECO!
I am indeed fortunate to be able to stick with Emacs and Vi.
-
@wrog
> I'm also guessing TECO wouldn't have existed without there being people who managed to wrap their brains around it and found it to be expressive and concise. I myself never got there (also never really tried TBH),I'm one of those people, BTW. My proof is that I wrote a closed-loop stick figure ASCII animation juggling three balls.
As with any complex TECO thing, the resulting code was write-only -- and that was always the problem with even mildly powerful TECO macros.
Perl at its worst can be described as write-only line noise, yes, but in my experience is *STILL* better than TECO!
I am indeed fortunate to be able to stick with Emacs and Vi.
@dougmerritt @wrog @ramin_hal9001 @screwlisp @cdegroot
TECO was a necessary innovation under word-addressed memory. With 36 bits per word, you couldn't afford that much space for an instruction. 5 7-bit bytes (with a bit left over) 8n one word was a lot more compact than an assembly instruction. With only 256 KW (kilowords) total addressable in 18 bits, you had to get all the power packed in you could. And we didn't have WYSIWYG yet, and most computer people couldn't type. So it would make a lot more sense to you if you were doing hunt and peck with almost no visibility into what you're changing. Typing -3cifoo$$ to mean go back three characters and insert foo and show me what the few characters around my cursor look like was extremely natural in context. That it became a programming language was a natural extension of that so that you didn't have to keep typing the same things over and over again.
-
@dougmerritt @wrog @ramin_hal9001 @screwlisp @cdegroot
TECO was a necessary innovation under word-addressed memory. With 36 bits per word, you couldn't afford that much space for an instruction. 5 7-bit bytes (with a bit left over) 8n one word was a lot more compact than an assembly instruction. With only 256 KW (kilowords) total addressable in 18 bits, you had to get all the power packed in you could. And we didn't have WYSIWYG yet, and most computer people couldn't type. So it would make a lot more sense to you if you were doing hunt and peck with almost no visibility into what you're changing. Typing -3cifoo$$ to mean go back three characters and insert foo and show me what the few characters around my cursor look like was extremely natural in context. That it became a programming language was a natural extension of that so that you didn't have to keep typing the same things over and over again.
@dougmerritt @wrog @ramin_hal9001 @screwlisp @cdegroot
In effect, a Q register, what passed for storage in TECO, was something you can name in one bite. So 1,2mA meaning call what's in A with args 1 and 2 was a high-level language function call with two arguments that fit into a single machine word. Even the PDP-10 pushj instruction, which was pretty sophisticated as a way of calling a function, couldn't pass arguments with that degree of compactness.
-
@dougmerritt @wrog @ramin_hal9001 @screwlisp @cdegroot
In effect, a Q register, what passed for storage in TECO, was something you can name in one bite. So 1,2mA meaning call what's in A with args 1 and 2 was a high-level language function call with two arguments that fit into a single machine word. Even the PDP-10 pushj instruction, which was pretty sophisticated as a way of calling a function, couldn't pass arguments with that degree of compactness.
@kentpitman
As usual, Kent, an excellent description -- and I had forgotten some of those details, but yes, those were very real advantages. -
@kentpitman
As usual, Kent, an excellent description -- and I had forgotten some of those details, but yes, those were very real advantages.@kentpitman
Incidentally, I did *not* hate TECO at the time. I'm just remarking on some fairly objective issues with it.But at the time, I really appreciated its power (even though for me this was after using vi and emacs).
Also, if one reads about its history in the literature, about how it originally worked in 8 KB with a sliding window on files, and then later versions added more and more commands and power, it all makes sense as an organic 4D creation.
Which is true of most software that one is sympathetic to.
-
@dougmerritt @kentpitman @ramin_hal9001 @screwlisp @cdegroot
To be sure, my Perl tends to be more structured.
On the other hand, I also hate Moose (Perl's attempt at CLOS) and have thus far succeeded in keeping that out of my life.
I also remember there being a time in my life when I could read and understand APL.
But if you do think it's possible to come up with some kind of useful formal definition/criterion for "expressiveness", go for it.
I'll believe it when I see it.
11/11
@dougmerritt @kentpitman @ramin_hal9001 @screwlisp @cdegroot
... and, crap, I messed up the threading (it seems 9 and 10 are siblings, so you'll miss 9 if you're reading from here. 9 is kind of the point. Go back to 8.)
(I hate this UI. If anybody's written an emacs fediverse-protocol thing for doing long threaded posts please point me to it, otherwise it looks like I'm going to have to write one ...)
𝜔/11
-
@dougmerritt @kentpitman @ramin_hal9001 @screwlisp @cdegroot
... and, crap, I messed up the threading (it seems 9 and 10 are siblings, so you'll miss 9 if you're reading from here. 9 is kind of the point. Go back to 8.)
(I hate this UI. If anybody's written an emacs fediverse-protocol thing for doing long threaded posts please point me to it, otherwise it looks like I'm going to have to write one ...)
𝜔/11
@wrog @dougmerritt @ramin_hal9001 @screwlisp @cdegroot
It's a bit low tech but if you noticed it in time that other people don't have a ton of other stuff attached to it, just save the text, delete the old post, attach the new. Someone could make that be a single operation in a client and even have it send mail to the people who attached replies saying here's your text if you want to attach it to the new post. Or you could attach your own post with their text in it. Low-tech as it is, existing tools offer us a lot more options than sometimes people see. I'm sure you could have figured this out, and are more fussing at the tedium, but just for fun I'm going to cross reference a related but different scenario...
-
@dougmerritt @kentpitman @ramin_hal9001 @screwlisp @cdegroot
... and, crap, I messed up the threading (it seems 9 and 10 are siblings, so you'll miss 9 if you're reading from here. 9 is kind of the point. Go back to 8.)
(I hate this UI. If anybody's written an emacs fediverse-protocol thing for doing long threaded posts please point me to it, otherwise it looks like I'm going to have to write one ...)
𝜔/11
@wrog
> (I hate this UI. If anybody's written an emacs fediverse-protocol thing for doing long threaded posts please point me to it, otherwise it looks like I'm going to have to write one ...)There are *so* many programmers using variants of this UI that you would think someone would have addressed it by now.
But you never know, maybe not. Certainly everyone who does multi-posts seems to be struggling with doing it by hand, from my point of view, so that would seem to cry out for the need for some fancier textpost-splitting auto-sequence-number thingie, in emacs or command line or something.
Conceivably a web search would find the thing if it exists. I personally almost never do long posts, so I just grin and bear it when it comes up.
-
@wrog
> (I hate this UI. If anybody's written an emacs fediverse-protocol thing for doing long threaded posts please point me to it, otherwise it looks like I'm going to have to write one ...)There are *so* many programmers using variants of this UI that you would think someone would have addressed it by now.
But you never know, maybe not. Certainly everyone who does multi-posts seems to be struggling with doing it by hand, from my point of view, so that would seem to cry out for the need for some fancier textpost-splitting auto-sequence-number thingie, in emacs or command line or something.
Conceivably a web search would find the thing if it exists. I personally almost never do long posts, so I just grin and bear it when it comes up.
I think for protocol reasons it is necessary to try and connect up the thread using quote-posts, however any particular client understands that.
If you visit the topmost toot of the thread, you at least get the whole (cons) tree.
@dougmerritt @wrog @kentpitman @ramin_hal9001 @cdegroot -
I think for protocol reasons it is necessary to try and connect up the thread using quote-posts, however any particular client understands that.
If you visit the topmost toot of the thread, you at least get the whole (cons) tree.
@dougmerritt @wrog @kentpitman @ramin_hal9001 @cdegroot@screwlisp
Y'all are misunderstanding. Due to the error-prone nature of labelling a series of posts, from one way of viewing he skipped post 9, and 8 linked to 10.Another view showed simply the correct sequence.
Regardless, anyone who has written e.g. "3/n" on a post is already implicitly indicating a desire for automation.
-
@screwlisp
Y'all are misunderstanding. Due to the error-prone nature of labelling a series of posts, from one way of viewing he skipped post 9, and 8 linked to 10.Another view showed simply the correct sequence.
Regardless, anyone who has written e.g. "3/n" on a post is already implicitly indicating a desire for automation.
@dougmerritt
Lots of clients are available that will daisychain toots within the constraints of your instance if you send a large one. I think mastodon.el is like this. I think that the 𝜑/ζ post counting is often some interesting but quasi-ironic metadata about how the author is feeling about local restarts available to them at the time of writing.
@wrog @kentpitman @ramin_hal9001 @cdegroot -
@dougmerritt
Lots of clients are available that will daisychain toots within the constraints of your instance if you send a large one. I think mastodon.el is like this. I think that the 𝜑/ζ post counting is often some interesting but quasi-ironic metadata about how the author is feeling about local restarts available to them at the time of writing.
@wrog @kentpitman @ramin_hal9001 @cdegroot@screwlisp
Well there you go. So wrog just needs to find a list of such clients to choose the most suitable one -- if any. -
@wrog
> I'm also guessing TECO wouldn't have existed without there being people who managed to wrap their brains around it and found it to be expressive and concise. I myself never got there (also never really tried TBH),I'm one of those people, BTW. My proof is that I wrote a closed-loop stick figure ASCII animation juggling three balls.
As with any complex TECO thing, the resulting code was write-only -- and that was always the problem with even mildly powerful TECO macros.
Perl at its worst can be described as write-only line noise, yes, but in my experience is *STILL* better than TECO!
I am indeed fortunate to be able to stick with Emacs and Vi.
@dougmerritt @kentpitman @ramin_hal9001 @screwlisp @cdegroot
Yeah I had <1 year stuck on DEC-20s at Stanford before Unix boxes became generally available (originally had to be an RA on a grant with its own VAX, and incoming students on NSFs typically weren't). Seeing Gosling Emacs that first spring, it was clear that was The Future...
⟹ less reason to do TECO... though ironically, I *did* learn the SAIL editor (SAIL/WAITS -- TOPS-10 derivative -- was, by 1985, a completely dead software ecosystem, *only* continued to exist because Knuth and McCarthy had decades of crap + sufficient grant $$ for the (by then) fantastic expense to keep it going; the only other people who used it were the 3 of us maintaining the Pony (vending machine))
-
@dougmerritt @wrog @ramin_hal9001 @screwlisp @cdegroot
In effect, a Q register, what passed for storage in TECO, was something you can name in one bite. So 1,2mA meaning call what's in A with args 1 and 2 was a high-level language function call with two arguments that fit into a single machine word. Even the PDP-10 pushj instruction, which was pretty sophisticated as a way of calling a function, couldn't pass arguments with that degree of compactness.
@kentpitman @dougmerritt @ramin_hal9001 @screwlisp @cdegroot
it's not so much the editor itself, which, from your description doesn't seem that much worse than, say, what you had to do in IBM XEDIT to get stuff done,
but the macro system, specifically, which as I understand it,(1) was an add-on, (2) would have needed utility commands that one didn't use in the normal course of editing (e.g., for rearranging arguments + building control constructs) and therefore were put on obscure characters, and *this* is where things went nuts…
I recall briefly viewing the TOPS-20 Emacs sources … *did* look like somebody had whacked a cable out in the hall (time to hit refresh-screen)
… granted, I may be misremembering; this *was* 40 years ago…