Steve
06/17/2020, 9:40 PMIvan Reese
Jared Windover
06/17/2020, 9:55 PMJared Windover
06/17/2020, 9:56 PMIvan Reese
Ivan Reese
If you can use text for something, use it.I think the thesis behind a lot of graphical / visual programming languages is: there are things we want to be able to do in programming that we simply can't do with text. (Here's a fun seed. Imagine that all programming was graphical, and there was no use of text at all. Now imagine what people would be imagining when they say: there are things [...] we simply can't do with graphics.)
Doug Moen
06/17/2020, 10:13 PMDoug Moen
06/17/2020, 10:16 PMshalabh
06/17/2020, 10:25 PMshalabh
06/17/2020, 10:27 PMshalabh
06/17/2020, 10:28 PMshalabh
06/17/2020, 10:34 PMAndy F
06/17/2020, 10:40 PMshalabh
06/17/2020, 11:01 PMIvan Reese
Edward de Jong / Beads Project
06/17/2020, 11:44 PMyoshiki
06/18/2020, 2:26 AMyoshiki
06/18/2020, 2:27 AMyoshiki
06/18/2020, 2:30 AMyoshiki
06/18/2020, 2:33 AMwtaysom
06/18/2020, 3:15 AMIvan Reese
Felix Kohlgrüber
06/18/2020, 7:41 AMText can convey ideas with a precisely controlled level of ambiguity and precision, implied context and elaborated content, unmatched by anything else.For programming, it's important to distinguish between presentation and storage. In the presentation, you want a personalized experience, taking into account the user's context (e.g. which syntax sugar, libraries or PL features a user knows). For storage, you want an unambiguous representation including all relevant context. PLs typically use the exact same representation for presentation and storage, which requires compromises. It's neither personalized (e.g. displaying
HashMap
instead of std::collections::HashMap
in my editor) nor unambiguous (e.g. a python script that doesn't specify compatible versions of the interpreter or any of its imports).
Text is a great communication medium in a lot of cases. In others, pictures, formulas, etc. are better suited. Providing different presentations is probably better than any single presentation (which is projectional editing, after all).
Due to their conflicting requirements, it's necessary to separate presentation from storage! I don't care whether the storage presentation is textual, binary, or png-pics as long as it's well-defined, complete and easy to work with.Chris Knott
06/18/2020, 9:22 AMI think the thesis behind a lot of graphical / visual programming languages is: there are things we want to be able to do in programming that we simply can't do with text.
There's also the fact that blog posts, documentation, lectures, personal notes etc, all optimised purely around understanding programming as easily as possible, tend to be packed with diagrams
Steve
06/18/2020, 3:08 PMSteve
06/18/2020, 3:15 PMSteve
06/18/2020, 3:17 PMrobenkleene
06/18/2020, 3:37 PMGarth Goldwater
06/18/2020, 4:28 PMSteve
06/18/2020, 4:37 PMSteve
06/18/2020, 4:39 PMSteve
06/18/2020, 4:40 PMSteve
06/18/2020, 4:41 PMGarth Goldwater
06/18/2020, 5:15 PMSteve
06/18/2020, 5:20 PMChris Knott
06/18/2020, 5:23 PMChris Knott
06/18/2020, 5:24 PMshalabh
06/18/2020, 5:39 PM@shalabh — Your bridge example is interesting. What does the image convey to you?@Steve - it's about the arrangement of beams and trusses - how do you convey that in text? "There are two large trusses. The left truss has N beams. The first beam starts at coordinates (0,0) at an angle of 15%.. this is connected to two other beams". Then how do you describe all the connections? You could even make a table with the list of beams with coordinates and connections, but a reader wouln't get it until they reconstruct the diagram from the table and look at it.
Garth Goldwater
06/18/2020, 5:43 PM“Human rights are moral principles or norms that describe certain standards of human behaviour, and are regularly protected as legal rights in national and international law.”I’m not sure how to convey that graphically, but I’m also not sure how to define even a process to find an appropriate semantic model for that sentence. Some quick bullet points: • The social context for this sentence matters. You could be reading it at a filibuster, an open mic night, or during a debate around a constitutional amendment. All of those wildly change the intention that the audience (or the “compiler”) should intuit from the text • The vast majority of the meaning of this sentence is buried in definitions, assumptions, behaviors, cultures, etc—there are a million “why?” questions a naive alien could ask about this sentence—to say nothing of the non-precise definition of every single word used in it—reminding me of a long-lost old tweet: “Words are a scam. If you look them up, they just mean other words. That’s how they get you” • Even humans, who designed the damn language thing, can’t agree on definitions or reasonable inference. That’s why lawyers and judges and polticians write and argue about what laws mean all the time. All this is to say that the advantages that authors of these types of articles often cite as belonging to text tend to actually belong to human language, not arrays of ascii or unicode. Sorry—I’m bringing up storyscript again because it’s cool and a good example: I find the most appealing part of being able to write the sentence “text me when the doorbell rings” and have it work is the idea that there is a tool or process set up that 1. knows who i am 2. understands that “text me” means “text me `the doorbell has rung`” 3. knows which doorbell I mean when I say
the doorbell
Garth Goldwater
06/18/2020, 5:43 PMSteve
06/18/2020, 5:52 PMSteve
06/18/2020, 5:53 PMSteve
06/18/2020, 5:56 PMGarth Goldwater
06/18/2020, 6:25 PMthe doorbell
. It’s an implicit selection or context that doesn’t require you to hop out of your subconscious way of thinking “*that* doorbell, which is close at hand, or in my mind” and into machine language “what’s the UUID of that doorbell? what’s the order at the call site of the function? did I import the right module? is it objectName.data or objectName.value?” and pointing—whether with your eyes, explicit context from associating things with your username, using a mouse, or using the history of a conversation—makes this much, much more ergonomic. And none of those options have to do with the array of characters that you hope defines a parseable program. They all have to do with directions to the interpreter or whatever about how to look up and interpret symbols.Garth Goldwater
06/18/2020, 6:25 PMGarth Goldwater
06/18/2020, 6:26 PMJared Windover
06/18/2020, 7:11 PMJared Windover
06/18/2020, 7:12 PMSteve
06/18/2020, 8:01 PMGarth Goldwater
06/18/2020, 8:10 PMshalabh
06/18/2020, 9:44 PMIf I may continue: though text may be best in places, it does not need to be exclusively text. Why choose one? Why not choose text when appropriate and visual when appropriate? I would argue the latter here is most optimal for UX.I agree with this. If we think of 'information' as an artifact, text is a UI. The same information can have other UIs too, other text or visual representations, or mixtures of course. I think storing the text as the essential representation of information is where the trouble starts (which is what I think Garth is referring to). First, you have an incredibly denormalized representation where you have to normalize the links every time you load it (e.g. repetitive use of the same word/variable name). Second, you've embedded display and style information (80 columns?) into your information. Third, you often embed text delimiters to represent structure, and now parsing is a whole giant subject. This can go on.. Really I think we should be moving off this pattern to a more hybrid and layered approach: the innermost representation only stores the essential elements of the information (kinda closer to a graph with nodes having ids?). The the outer layers map this into various forms, adding text, graphics, style etc. This is what I mean by 'universal hypermedia'. Imagine a view that shows "when the doorbell rings, ...", what does 'doorbell' refer to? What does 'ring' refer to? If I hover over the words, I should see highlights on all currently visible UI represensations of the same entity, e.g. an icon in a different pane. If I click I should be able to navigate to other entities connected to the 'doorbell' - provenance, other rules, etc. The entities are part of the information model here, which is more unified than fragmented, and we have these kinds of 'lenses' to look at the information. Yes, various expressions in the UI may use text, but I think 'always bet on text' misses the potential power of an information/hypermedia system. You should be able to switch to other views of the same information, even multiple text views in fact.
Ivan Reese
the innermost representation only stores the essential elements of the informationI've never seen a case — including formal mathematics — where this can be taken to a perfect, full realization. You always have to draw a "good enough" line somewhere. Eg: 2+2 is not a minimal encoding of that operation. There is no one true minimal encoding. Things get even worse when you start looking at (eg) Clifford algebras. Or you could just draw a "good enough" line at the cross product, since that (comparatively) minimizes the number of CPU operations you need to burn in order to do your workaday 3d vector algebra. So if leaking some aspect or another of inessential complexity is inescapable, I argue that you (the designer of some innermost representation) should choose a healthy number of inessential elements you want to have handy and insist that all viewers understand, and not feel the pressure to scrub away as much as possible. For textual source code, we've chosen that indentation is worth storing, but highlighting is not. I think most of us can agree that these are bad choices — but that doesn't mean that the best choice is as little choice as possible. (Solidly agree with everything else you say, though!)
shalabh
06/18/2020, 10:53 PMibdknox
06/18/2020, 11:26 PMshalabh
06/19/2020, 1:10 AMKonrad Hinsen
06/19/2020, 4:35 AMshalabh
06/19/2020, 5:01 AMComputing doesn't change this, it merely makes it more obvious by multiplying the number of points of views enormously. And by driving wedges between similar but not quite identical points of viewYes exactly! 'Views' are points of view, and we have a bajillion of them in computing - each showing only a slice of what is, in its own language.
Duncan Cragg
06/19/2020, 8:23 AMtbabb
06/19/2020, 5:55 PMCole
06/20/2020, 6:11 PMSteve
06/22/2020, 2:18 PMDoug Moen
06/22/2020, 7:57 PMIt struck me as odd, and deeply wrong, that we were building tools for visual artists in a programming language that was utterly symbolic.
So I set about wondering what a visual programming language might look like. If computers had been invented by artists and visually oriented people, instead of by mathematicians and engineers, how might they write programs? It seemed to me an important question, but one that hardly bothered most computer scientists. I read about a few attempts to build visual programming languages, and decided there was something fundamental I needed to understand.
My journey took me deep into the foundations of computer science, where I asked fundamental questions like “what is programming” and “what is a user interaction” — questions that often get passed over in computer science (any definition of “programmiing” that starts with “a sequence of symbols that…” is not deep enough to encompass visual programming languages).http://www.scottkim.com.previewc40.carrierzone.com/viewpoint/index.html
Steve
06/22/2020, 8:03 PMtbabb
06/22/2020, 8:07 PMSteve
06/22/2020, 8:08 PMSteve
06/22/2020, 8:15 PMVisual vs textual thinkings💯 I agree, I personally may be blend… IDK lol — I’m not convinced that this matters however because there is still some buffer of consuming content and internalizing it. I find that most visual representations of logic require textual explanations. Books are the best example here, I’ve read a fair share of books and they are nearly 99% text to convey complex concepts with sprinkled in visuals to help where necessary — It’s not the opposite. Even a book on mastering bonsai trees was mostly text with some random images just to make it pretty. Is the domain of creating software much different?
Optimizing forWe are optimizing for HCI (human to computer interface) — Reading then writing. I want to optimize for the future technologies like direct-brain interfaces to express, query and create complex logic — Like Jarvis in Ironman (don’t take this comparison literally, but we are building an AI-assistant).
Edward de Jong / Beads Project
06/22/2020, 8:29 PMtbabb
06/22/2020, 8:35 PMIs the domain of creating software much different?I'd say that a book on bonsai is about as similar to a computer program as a sculpture is to a steam engine. To be slightly more literal: Unlike a program, a book on bonsai is a static collection of ideas, with unchanging relationships. A program is a dynamic thing, with data flowing through it, constantly changing, with new relationships materializing and dissolving. And the program itself moves too, as you rearrange its parts and add new ones. The two kinds of things will necessarily be designed and built quite differently.
tbabb
06/22/2020, 8:40 PMDuncan Cragg
06/22/2020, 9:22 PMDoug Moen
06/22/2020, 10:59 PMChris Knott
06/23/2020, 8:17 AMDuncan Cragg
06/23/2020, 12:42 PMDoug Moen
06/23/2020, 12:52 PMSteve
06/23/2020, 2:49 PMStefan
06/23/2020, 4:23 PMStefan
06/23/2020, 4:23 PMStefan
06/23/2020, 4:47 PMyoshiki
06/23/2020, 4:59 PMyoshiki
06/23/2020, 5:01 PMStefan
06/23/2020, 5:02 PMIvan Reese
Ivan Reese