Prathyush
09/12/2020, 10:25 AMStefan
09/12/2020, 4:52 PMPrathyush
09/12/2020, 6:56 PMPrathyush
09/12/2020, 7:04 PMPrathyush
09/12/2020, 7:09 PMStefan
09/12/2020, 8:52 PMPrathyush
09/12/2020, 9:18 PMStefan
09/12/2020, 9:24 PMGarth Goldwater
09/12/2020, 10:09 PM...there is something fundamental about computational structures (in a topology like sense) that we are all groping at in our daily lives...
I am trying to see if those things can be made first class in a visual fashion and PLT semantics looked to me like the place where I can dig in as I have some idea of PLs and a bit of logic knowledge. Also, there are a great community of people studying this deeply and communicating about it in this field. But it is filled up with waaaay too much jargon to repel most programming practitioners as the notations are dense and require an understanding of mathematics before approaching it.
and
All these things are very different disciplines but somehow I started to see strong parallels and connections which I totally believe can be expressed mathematically. And very likely we have already identified all the structures we need, we just need to make the connections explicit. Unfortunately, I often find it hard to describe and it makes total sense in my head, but then I’m struggling explaining it to others.
resonate really strongly with me—better-worded versions of stuff i’d tried to explain to other people in the past the aforementioned references im working with off the top of my head: • call by push value • ohm/ometa • kernel/vau/f-expressions • partial evaluation • programming should eat itself • the work going on at red planet labs, alluded to by a few talks on the specter library for clojure • meander, another clojure library • the stuff rich hickey has started saying about functions having some knowledge about what they require to work properly (instead of specifying requirements on data structures directly) • towers of interpreters • f-algebras, recursion schemes • scoping and binding in the rebol programming language, APL • defunctionalization and refunctionalization • concatenative languages, because: the current continuation for them is always the state of the stack plus the rest of the tokens in the source, so you can always split a program at any point, pause it and restart it, and composition instead of application is the default action of putting two words next to each other. another way of looking at it is that every concatenative program always carries with it the context it’s operating in/on. plus there’s this cool video i shared before:
Stefan
09/13/2020, 10:12 AMCole
09/13/2020, 2:40 PMGarth Goldwater
09/13/2020, 4:26 PMPrathyush
09/14/2020, 9:14 PMThen read this whole blog in chronological order (it’s not as much content as it seems): https://chomskyalexander.blogspot.com/?m=1I went through all of the blogposts and it was pretty intriguing to see him combine Chomsky’s and Christopher Alexander’s work. I have only read Notes on the Synthesis of Form by him and the bibliography of it have sent me inquiring in a lot of directions. I would love to read up APL and NoC sometime. I loved the idea of how he thought of unfolding as in a morphogenesis of a biological organism can be brought into computer programming. This would be a really fertile area and I want to check out what he has done on https://www.corememory.org/ I already love the diagramming he has done for it. Pretty intriguing stuff. I will dig into these a bit more and report back. Thanks for the share!
Prathyush
09/14/2020, 9:22 PMStefan
09/14/2020, 9:22 PMPrathyush
09/14/2020, 9:42 PMPrathyush
09/14/2020, 9:42 PMHere’s something I’ve been looking into for a while that I didn’t see you mention specifically: the connection between
(embedded) domain specific languages
parser combinators
abstract algebra
transducers (you kind of mention that with generators/iterators, I think)
transformation passes (towers of interpreters?)I will definitely go through these and attempt to catalogue them on the page. I have renamed it to morphisms of computational structures to capture more of these morphisms. I think it would also help me bring in work like that of Hoare/Milner and talk about them if I go a bit more general than control constructs.
They all involve (or at least can facilitate) transformations from a sequential to hierarchical structure.
They
all represent a set of well-defined composable entities that together
form something like a grammar (some more directly than others).
They
all in a sense resemble words of a language, which can be combined to
describe a lower level thing in more detail (-> Alexander’s Pattern
Language).
They all enable and/or are based on a fundamentally
recursive pattern which allows them to be used on various levels of
abstraction at the same time; they’re something like an abstraction of
an abstraction, if that makes sense?
Garth Goldwater
09/15/2020, 1:58 AMGarth Goldwater
09/15/2020, 2:02 AMStefan
09/15/2020, 8:43 AMStefan
09/15/2020, 8:45 AMStefan
09/15/2020, 8:47 AMStefan
09/15/2020, 10:42 AMPrathyush
09/15/2020, 11:25 AMPrathyush
09/15/2020, 11:30 AM@Garth Goldwater Yep, I was aware and didn’t think it was ambiguous because in that paragraph @Prathyush was exclusively talking about Alexander, I think…? Not sure what NoC is though; I just read that as Nature of Order…@Stefan I did indeed mean Nature of Order. Sorry for the typo. Re: APL I was pleasantly surprised to find APL in the form of K, making headway into financial markets in the form of Shakti and high performance numeric computing: https://shakti.com/
Prathyush
09/15/2020, 11:33 AMand anybody else who feels crazy enough for this conversation; it seems we scared most of them away thoughYeah, I really wish there were more programming practitioners who tried to bring these ideas back into a setting which we can inspect like that Javascript talk on folds/unfolds. These ideas I think provide a great leverage point to think about what is happening when you compile your program or work towards implementing a certain UI interaction. There is very less awareness about the perspective that logical inquiries and mathematical language is a way to cast these ideas with least amount of distracting details and then inspect them for their properties and what they provide/take away from us.
Prathyush
09/15/2020, 11:39 AMPrathyush
09/15/2020, 11:46 AMWe can only determine where we are in the hierarchy of abstractions in a relative way, by pointing out what's above or below. There is no stable absolute coordinate system that's granular enough. Feels a lot like category theory.If I may venture a guess, I think this is where metric spaces and gauge theories come in. Once you have vector spaces to locate a manifold, the idea of measure gives it a way to locate certain points at a certain distance from one another. This is how topology differs from geometry, in that, topology or set elements for that matter, doesn’t have a notion of distance between them. So you can continuously transform them without losing the “resolution detail” between the points. Having access to a coordinate and then being able to ground these structures gives a way to talk about distance from your point of reference and which way the hierarchy is aligned. This is a stretch but the idea of left and right adjoints I think can be made visual once we have a coordinate access acting as an indexical. Also, as a related idea, if you take a different coordinate axis, you can see your perspective on these changing and the structures being cast in a different manner. Category Theory studies the perspectiveless space and hence opens up to a very general ground for studying these structures. If you would like to have a general picture of how these things stand: https://www.mathphysicsbook.com/ is one that walks you through the ideas without going all textbook style. Mac Lane, (co)inventor of Category Theory has written a book called Mathematics, Form and Function: https://www.amazon.com/Mathematics-Form-Function-Saunders-MacLane/dp/1461293405/ but I think it needs a decent grounding in at least some mathematical domains before you read it. Its his whirlwind tour though mathematics detailing how each of them relate to one another. Motivation to invent Category Theory can be seen in this work. That is my understanding so far, open to corrections if I have made any wildly wrong speculations here.
Prathyush
09/15/2020, 11:50 AMAlexander doesn't like recursion, because there isn't really an infinite sequence anywhere in nature. It all begins and ends somewhere. So it doesn't map perfectly. But I'm willing to consider that an "implementation detail" 🙂
But I expect more clarity on this from his Nature of Order series, which I will finally attempt to read soon.I look forward to your thoughts as you go through it. Christopher Alexander is a deep thinker who I think have stumbled onto something fundamental about us.
Prathyush
09/15/2020, 2:16 PMAnyway, Universal Algebra: I'm familiar with orders, groups, sets, monoids, etc. If I'm specifically interested in the mathematical definition and transformations between lists and trees and lattices, do you have any great introductory pointers to read/watch?I recently came across Brent Yorgey’s study on Combinatorial Species and I think they are a good setting to study these: https://vimeo.com/16753644 There is a way in which trees become lattices. I need to examine the exact mathematical properties that create this transformation, but I think it is when boundaries merge together around a center. For trees, you can think of nested circles, but as soon as they become a lattice, you have intersecting circles that share the same entities. I think you would have come across this, but ICYMI, Christopher Alexander has written a paper on lattices (Part I, Part II)