7 ms·
Escher: A language for programming in metaphors
- morsch 12y agoI read through the linked GitHub readme, I don't understand what's going on. Does anybody?
- mondocongo 12y agocrickets
- integricho 12y agosame here
- Riptides 12y agoSomeone's trying to finish their thesis
- BenoitP 12y agoI don't think so. The repository owner, maymounkov, seems to be a solid guy. He co-authored "Kademlia: A Peer-to-peer Information system Based on the XOR Metric in 2002.":http://www.maymounkov.org/papers/maymounkov-kademlia-lncs.pdf http://www.maymounkov.org/papers/maymounkov-kademlia-lncs.pd... Still don't understand what his Escher metaphors are, though.
- worldsayshi 12y agoAlthough I'm not grasping the idea here I'm feeling that it resonates a lot with my own dream project. My only documentation is here: http://patch-tag.com/r/worldsayshi/nodespace-staging/wiki/ http://patch-tag.com/r/worldsayshi/nodespace-staging/wiki/ And here are some concept images trying to describe how one would model circuitry in the language: https://patch-tag.com/r/worldsayshi/nodespace-staging/wiki/conceptPics/ https://patch-tag.com/r/worldsayshi/nodespace-staging/wiki/c... I'm thinking I should use something like this for the back end: https://github.com/giorgidze/Hydra https://github.com/giorgidze/Hydra
- petar 12y agoI am glad. The truth is: Eventually every mind, in trying to save itself from "repetitive" work, reaches the same conclusion: recursive metaphorical programming. It comes out in different buzz words "flow-programming", "metaphor mechanics", etc. They are all fuzzy but roughly correct. The only way to propose a theory of 1st-person consciousness, which is not ambiguous (the theory as communicated to others), is to give a programming language. This supersedes a philosophy paper that no one reads and is predicated on the author's "knowledge". And if the author is an academic, they can just assume "people don't know math" and people assume "we don't know math", so no knowledge is transferred at all.
- robmccoll 12y agoAt first this reminded me of an HDL. Now I'm a bit lost. More of a stream processing language?
- petar 12y agoIt looks familiar to every other language you know and yet to no one in specific. That's the point: It unifies them all as a common denominator and you have to break out of your conventional thinking to see the differences. Alternatively, you have to try to write many programs in Escher and then you will gradually start "getting it"
- zaptheimpaler 12y agoThis seems very interesting - its like a graph based computation language! OP - it seems to me that executions of programs in this context are kind of orientations through the graph by drawing arrows all in one direction or the other.. So can this run programs in both directions? For example, orienting the NAND gate from "X NAND Y" to X and Y (i.e providing X NAND Y as say, TRUE) would generate the X and Y that could lead to the input? If we added that functionality to the basic gates (i.e allow running OR in reverse and have it return {(X=1,Y=0), (X=0,Y=1)} when given input (X OR Y=1)), and accumulated the possibilities at each step as a tree. Of course, it could take very long to run. Actually, maybe it would even be possible simply fill in certain nodes and propagate out to all connected nodes, keeping track of possible inputs. So it can complete the whole graph (or connected component to be precise) with possible values given any random nodes filled out. So it can give you all possible executions subject to restrictions on any nodes values. That would be awesome! OP - Does that make any sense? If it does, I may try to implement it and see what kinds of cool things we can do with it.
- kilburn 12y agoTo me this seems to be exactly what constraint programming is about. Think prolog: you define the relationships (edges in this computation graph), instantiate some values and then ask the solver to fill the rest. Is there anything fundamentally different in your idea?
- petar 12y agoYes. All the functional programming language had the right idea (as you point out). But not the right grammar. Escher has 3 grammar rules (reflex, circuit and valve). All these other languages have much much more. That's the point.
- petar 12y agoThe language for expressing constraints is what different, not the meaning. People are confused because they properly evaluate that you can do with this language what you can do with any other. But only up to a point of scale. Then the bugs that other languages make you introduce catch up with you. And you can't produce more software because you have to spend too much time fixing bugs of old software. In Escher, every circuit without valves is forever closed as design: for the same reason electrical circuits are rarely recalled. Did you ever wonder why that is?
- tmcb 12y agoIt wasn't clear to me at first if choiceless computation is present due to a mere design decision or if it is necessary to the Escher paradigm. I suppose it plays a role on the load distribution over different instances of a same computation unit --- as "computation unit", I mean reflexes, gates and circuits. Am I right? It reminded me of languages like Lucid[1] and Quil[2], which treat non-von Neumann models of computation; Escher, though, seems to focus at the IPC level. [1] https://en.wikipedia.org/wiki/Lucid_%28programming_language%29 https://en.wikipedia.org/wiki/Lucid_%28programming_language%... [2] https://sites.google.com/site/quilweb/ https://sites.google.com/site/quilweb/
- deleted 12y ago[deleted]
- petar 12y agoChoiceless Computation is how the "outside" world looks to an Escher program. This is easier to understand, if you study go circuit.org because it is a concrete product not just a semantic. There: A program starts and sees nothingness. Then a host emerges out of nowhere. (A human provisioning engineer must have turned it on in the data center.) Then the program can do something with it (like start a database) or it can wait (indefinitely) for another emergence of a host (before it sets up an elastic DB, say). The point is that objects emerge in your "sight" and they are nameless. The namelessness is the choicelessness. And this might seem like a small difference, but it is huge. Chomsky tells Linguists: Try to imagine the world from the new-born baby's point of view; and trust me that the baby is born knowing nothing. The only difference is that the baby sees a "blooming buzzing confusion" (i.e. many hosts are online already). But the connection is that everything is nameless (at first). The baby sees many visual pixels. They have no meaning (i.e. no linguistic names). Later the baby sorts out the confusion and assigns names to all phenomena in its sight. Same for circuit programs. They see a nameless army of live hosts. They are all equally good, hence nameless. Then the program start purposing them differently (some are dbs, some are https, etc.). This is the same as the baby assigning names to pixels in its sight until it wakes up one day at age 5, thinking it understands the world. Ha :)
- 12y ago
- rmohanx 12y agoSee: cognitive blends by Mark Turner. Metaphor Mechanics
- petar 12y agoThanks for the link! It's time to meet my peers. I will say to all people who find similarities between my work and cognitive scientists or neuroscientists: I have never read a line of text on either of these subjects, nor have I ever read anything written by Chomsky (other than email exchanges). I've only listened to Chomsky's you tube vides and skimmed the titles of his book. This was suggestive enough.
- adrusi 12y agoSo is this a joke? The readme reads like satire, but it serm somewhat useful and interesting. Is this some guy's toy project where he just makes fun of academia in its documentation? I'm confused.
- krazydad 12y agoI am relieved that I am not the only one that suspects this may be horse shit. If it's not, then it's extremely poorly presented.
- petar 12y agoTime is my only limited resource. Which is why it is poorly presented. Don't forget to notice that along-side Escher (which took 2 years to invent) I am maintaining https://github.com/gocircuit/circuit Which is a major piece of software that earns me my salary. if you kickstart what I want to be a non-profit software research foundation, gocircuit.org and escher.io, then the doc would be brilliant and interactive in no time flat :)
- tmcb 12y agoIt doesn't look like a joke. The use of unconventional terms seems to be justified by the vast coverage seen on the references: arts, linguistics, cognitive sciences, just to name a few. It even looks a bit non-academic, in the best sense of the term: it departs from the classical aggregation of buzzwords backed by a properly chosen set of bibliographical references.
- petar 12y agoThat's correct. For instance, I discovered the link to Choiceless Computation AFTER I invented Escher. It is a real mathematical connection, and I only bothered with it, because academics will not look at my work unless you shove some terms of their own into it. So I do, and it is real, because you can go and verify that Shelah's paper exactly matches the sematics of Escher. And the conclusion is that Shelah's paper wasn't necessary for my invention. It was necessary to convince an audience of a specific kind. (Not that this is accomplished yet. But it will. With time.)
- samirmenon 12y ago"Just like Physics is particles and waves at the same time" Really?
- petar 12y agoYes: At a smentic linguistic level. Not as a physical substance. At which point you ask: What is a physical substance formally? Well, that depends on your dictionary of the world. Cognition is relative, people don't get that :) There is no absolute knowledge. There are only interpretations of individual participants. And our programming languages have to reflect that.
- drdeca 12y agoa->a ?
- michaelfeathers 12y agoIt looks like the Voynich manuscript for programming.
- petar 12y agoNot incidentally. The Voynich manuscript simply demonstrates that if you mix concepts at all scales of visual perception (color, texture, page organization, etc.) the document looks un-intelligible yet familiar. Incidentally, so do Escher's painting, and so does my documentation (to you). Now think about why? Think about Escher-Godel-Bach, think think :)
- rossjudson 12y agoYou can see a pretty thorough treatment of these ideas in Ptolemy II, at http://ptolemy.eecs.berkeley.edu/ptolemyII/ http://ptolemy.eecs.berkeley.edu/ptolemyII/. Ptolemy II offers a variety of underlying computation models to execute the "program graph".
- tobico 12y agoI don't really know enough about the maths here to interpret the background to this project, but going on the way it's written, I'm concerned the author may be suffering from schizophrenia. I'd recommend seeking advice from a mental health professional.
- sergiotapia 12y agoMake sure you use this with H9RBS.js - it'll make your website really responsive. http://html9responsiveboilerstrapjs.com/ http://html9responsiveboilerstrapjs.com/
- thewarrior 12y agoIf gates are functions and their inputs are like function inputs and composing gates is like function composition, then how is this different from a normal programming language ?
- tmcb 12y agoIt is not intended to be solely a general purpose programming language. It looks more like a DSL for inter-process communication. As "process", I mean not ordinary OS processes, but computation units written either in Escher or other languages, like Go, at the moment. It's mostly systems programming research (IMO, at its best, given the poor state of the art nowadays), but at that intersection area with programming languages.
- modarts 12y agoCouldn't help but think of this site while looking over the readme http://www.timecube.com/ http://www.timecube.com/
- vladimir-vg 12y agohey, @petar, why you're tilting your texts?
- lolol12345 12y ago"Four beer caps are placed on the corners of a square table with arbitrary orientations...." Please can you tell us the solution to this puzzle? I cannot find the answer anywhere online. What is the solution?
- NoodleIncident 12y agoStart from the last step: AB BA From here, flipping two opposit corners will result in all 4 being the same way. One step before: AA BB Flipping any two adjacent ones will either solve it or get you to the previous step. So from here, we can see that any state with two up and two down is solvable. The state with all four one way or the other is already solved. The only thing left is the state with just one out of line. AB BB No matter which individual one is flipped, you are in a solvable state.
- archgoon 12y agoSuppose all caps face the same direction... DONE! Suppose two caps (AB) face the same direction, if they're diagonal, then you can flip the diagonal. Regardless of which caps flip, all caps will then have the same orientation. If the two caps are along a side, then you perform a side flip. If you get the other two caps, or you flip AB, then all caps have the same orientation. If you flip one of the AB caps and one other, you now have a diagonal setup, which we have already solved. If you have one cap, then flip a cap, you will either have two caps in the same orientation (which we know how to solve) or all caps in the same orientation. Three caps is the same as one cap in the same orientation.
- cturner 12y agoThere's other answers here that suggest it's enough to merely pass though a correct state, without having executed all of the operations. If that's valid, then the wording of the puzzle should state this more forcefully. Even then, the last sentence can't be satisfied. Imagine if you were competing against the machine, it could simply always select moves that left one corner in the down position. From my reading of this puzzle, you can't sample the board in order to capture the orientation of the caps. Hence, I don't believe there's a way you could reach an outcome. Also, the base case doesn't work. Imagine there was one cap. You can choose to flip it or not flip it. Can you get everything in the up position without sampling the board? "Can you devise a sequence that ensures they all face up? Down?" No. Garbage in, garbage out. The only thing I can think of that might be useful at the moment: repeatedly hammering some combination of sides and diagonals, causing some statistical pattern to emerge. But without knowing the origin states, not sure how to use that. There's a similar problem here: http://gurmeet.net/puzzles/tumblers-on-a-rotating-table/ http://gurmeet.net/puzzles/tumblers-on-a-rotating-table/
- vladimir-vg 12y agohey petar, why you're tilting your texts?
- petar 12y agobecause it disturbs the visual perception and prevents people from glossing.
- MichaelAza 12y agoA lot of the terminology here is different just for the sake of being different, I think. That, along with the feeling the author believes himself to be some sort of genius, kinda remind me of Urbit and TempleOS (google at your own peril). Interestingly enough, all three projects seem to get some level of respect from HN, for reasons that are beyond me.
- heylefty 12y agoThis is some crazy-ass shit.
- pavpanchekha 12y agoThe author seems to have a thing against academia. This confuses me: his work is related to the Choiceless Computation work (which is academic), and though the author never cites it, the same ideas were explored by Sussman and Radul in The Art of the Propagator. Why the hatred of academia? Why the frustration with computer scientists? It's a cool set of ideas, that admittedly is not in the mainstream of PL research. But there's no reason to hate the mainstream for this reason: they are working on cool ideas too, and are making good progress. There's value, yes, in working on things off the beaten track, and there are academics that do just that. If the goal is the advancement of human knowledge, we're all in this together, and author's bile is unnecessary.
- arcameron 12y agoI really love the diagrams; very beautiful and good palette.
- portlander12345 12y agoIt's true that the writing style here is a little grandiose. However, the vociferous rejection without understanding of new ideas exemplifies the crushing small-mindedness of HN. The author has schizophrenia? Really? It reads like time cube? Honestly? Apparently it's Boilerstrap or get out!
- deleted 12y ago[deleted]
- artpar 12y ago@petar, how can i explore and understand escher ? The two example codes doesnt tell me much.
- thedeepself 12y agopeter - there is a language called Escher already - http://en.wikipedia.org/wiki/Escher_(programming_language) http://en.wikipedia.org/wiki/Escher_(programming_language)
- switch33 12y agoHave you looked a bit at replicode?: http://wiki.humanobs.org/public:replicode:replicode-main http://wiki.humanobs.org/public:replicode:replicode-main Or dylan?: http://opendylan.org/index.html http://opendylan.org/index.html Maybe you can grab an idea or two from them as well. How does this compare? What makes it specially useful for reasoning newer ideas. I've read some of the introduction about it using the PAC model, but can you give an example of how it goes about using that? I like the idea of the language, I think it follows with Global Workspace Theory: https://en.wikipedia.org/wiki/Global_Workspace_Theory https://en.wikipedia.org/wiki/Global_Workspace_Theory and Global Neuronal Workspace: https://en.wikipedia.org/wiki/Dehaene%E2%80%93Changeux_model https://en.wikipedia.org/wiki/Dehaene%E2%80%93Changeux_model Say you compile 2 machine learning algorithm implementations. If the reverse compiler gives you an interface with a choice between say those 2 algorithms and a % accuracy rate with a visual representation this definitely sounds like a working idea of a global workspace theory. As it abstracts the complicated parts into simplistic choices that are selectable to be do-able in linear time with some statistics.
- gone35 12y ago"Escher presents the world in a model called Choiceless Computation (...) Understanding the difference between Turing Machines and Choiceless Computation, while not entirely necessary, sheds much light on the profound difference between Escher and other languages. (...) Why you should be excited: It may seem that Escher is not more than a new semantic to do an old job. But something nearly magical happens when transition to using the Escher semantic—various compiler intelligence improvements that used to be NP-hard become simple and tractable." Just there is no misunderstanding: any polynomially-bound choiceless computation (CPT+C) can be carried out by a polynomial time Turing machine, so choiceless computation does not buy you any extra power strictly speaking (CPT+C \subseteq P); and might even be less powerful than P [1]. That is not so say there might be low-hanging prefix-free benefits in average case applications due to better parallelism or easier use of heuristics, which seems to be what the author is pointing at. So be excited, but not unreasonably so. [1] http://research.nii.ac.jp/%7Erossman/yg70.pdf http://research.nii.ac.jp/%7Erossman/yg70.pdf
- sitkack 12y agoCan't believe no one has posted propagator networks. http://groups.csail.mit.edu/mac/users/gjs/propagators/ http://groups.csail.mit.edu/mac/users/gjs/propagators/ In Clojure https://github.com/tgk/propaganda https://github.com/tgk/propaganda https://github.com/jimwhite/clojure-propagator https://github.com/jimwhite/clojure-propagator https://github.com/zcaudate/kiran https://github.com/zcaudate/kiran talk at ClojureConj https://www.youtube.com/watch?v=JXOOO9MLvhs https://www.youtube.com/watch?v=JXOOO9MLvhs
- dfischer 12y agoIs it ok that I don't understand ANYTHING going on here? I feel so dumb at the moment. Any ELI5? :(