[HN Gopher] l-2D: An exploration of drawing as programming language
       ___________________________________________________________________
        
       l-2D: An exploration of drawing as programming language
        
       Author : ink404
       Score  : 149 points
       Date   : 2022-04-06 14:44 UTC (8 hours ago)
        
 (HTM) web link (www.media.mit.edu)
 (TXT) w3m dump (www.media.mit.edu)
        
       | somewhereoutth wrote:
       | Very nice!
       | 
       | However written languages convey not just what a program _does_ ,
       | but also, through the names of things, what it _means_.
       | Unfortunately there is no validation of (or other computation
       | with) the meaning - so what it seems to mean may or may not have
       | any bearing on what it actually means, either now or previously.
       | 
       | Thus a program is not just how humans talk to machines, but also
       | (one of many ways) humans talk to humans.
        
         | DennisP wrote:
         | They do show some diagrams with comments.
         | 
         | It's true that there's no validation of comments. But there's
         | also no validation that the name of a variable is what that
         | variable actually means, or that the name of a function is what
         | that function actually does.
        
       | nuancebydefault wrote:
       | Cool, but in practice, for software development you need version
       | control. Has anyone ever seen a workable solution for diffing --
       | let alone merging -- _any_ graphical language?
        
         | gaetgu wrote:
         | No, but that is probably because such a thing hasn't ever
         | really been needed. To be a reasonably good product, it would
         | probably need to parse the language to show both an actual
         | pixel-for-pixel difference and a what-is-practically-different
         | diff. Merging seems next to impossible with more complex
         | programs, unless there could be an art->program->art program.
         | The problem with that is that it would (probably) destroy any
         | comment art or organization that was in the program before. The
         | more I think about it, the more I think that a merge for this
         | sort of file would be a really cool semester project for a comp
         | sci class.
        
           | nomel wrote:
           | > because such a thing hasn't ever really been needed.
           | 
           | I think this is backwards. I think the lack of collaboration
           | is exactly why graphical programming _can 't_ be used by
           | most. It's so badly needed, that it's not even usable without
           | it, for the majority of people.
        
       | zitterbewegung wrote:
       | What was that language or system where it would read what you
       | wrote down on a piece of paper and then execute the program ?
        
         | nomel wrote:
         | Since the purpose of all programming languages is to be readily
         | readable by biological OCR systems, I would think all. ;)
        
       | xixixao wrote:
       | Who immediately thought: Factorio!
        
       | lonk wrote:
       | Crazy. Alien tech.
        
       | camtarn wrote:
       | Very interesting! Reminds me a bit of ladder logic, a 2D visual
       | programming paradigm based on wiring together relays - but at a
       | higher level of abstraction, since ladder logic is mostly based
       | on simple boolean operations and doesn't really have any notion
       | of defining functions.
       | 
       | The fractal tree and UTM examples are absolutely beautiful and
       | mind-bogglingly simple.
        
       | awhitty wrote:
       | The author [1] was somewhat recently featured on Hacker News [2]
       | for their Fishdraw [3] project, if you're wondering why their
       | name might look familiar. Always a treat to see what they come up
       | with next!
       | 
       | [1] https://lingdong.works/
       | 
       | [2] https://news.ycombinator.com/item?id=28157657
       | 
       | [3] https://fishdraw.glitch.me/
        
       | LichenStone wrote:
       | This is very cool. I've always been very disappointed that
       | programming is so utterly dominated by the linear text format. It
       | feels like so much potential for expression and feedback is
       | getting left on the table, making use of our capacity to
       | understand and work with spatialisation, patterns, sounds,
       | colours, dynamics, etc would make a lot of sense.
       | 
       | Bret Victor's The Future of Programming and other talks come to
       | mind - https://youtu.be/8pTEmbeENF4
        
         | agumonkey wrote:
         | I wish we had a smarter feedback loop between trying an idea
         | (aka typing stuff) and reacting to results. Right now tdd or
         | type inference doesn't really produce backward infered hints.
         | Types do help exhaustive matching but you may be able to
         | reverse trials output back to function types and conditionals.
         | 
         | Your editor would become a convergence game.
        
           | ilaksh wrote:
           | Like SmallTalk?
        
             | agumonkey wrote:
             | Smalltalk is live object but, afaik[0], the base
             | interaction is still work for edit, work for test, work for
             | resolution. I thought about making them one concept..
             | something like gradually pruning input spaces. test and
             | code being somehow isomorphic (each failing test is
             | implicitely mirrored in the working code).
             | 
             | [0] I only did a pharo MOOC and read some bits about
             | smalltalk but considering the crowd, it's possible someone
             | has an image with similar if not better ideas.
        
           | dgb23 wrote:
           | A REPL?
        
       | Minor49er wrote:
       | There's a bug where if you have an animated run, but switch
       | programs, the first animated run will keep executing over phantom
       | pathways. You can start another animated run at the same time.
       | The resulting visuals and audio are really interesting.
       | 
       | I also love the option to obfuscate the code in two separate
       | ways. This project rules.
        
       | Razengan wrote:
       | This made me wonder, of course if electrical circuits can be
       | expressed as pretty much 1:1 WYSIWYG diagrams, why not computer
       | programs?
        
       | NeutralForest wrote:
       | It's very cool and the presentation is clear. The animation of
       | the parsing is fun as well =)
        
       | tromp wrote:
       | > To be able to draw programs that look visually appealing
       | themselves, such that someone would want to put a frame around
       | them and hang them on the wall.
       | 
       | I've done that with the predecessor function in lambda diagram
       | form:                   +----------         +-----+----
       | +-----+-+--         | --+-+ + +         | +-+-+ | |         | |
       | +-+ | |         | +-+   | |         +-+     | |           +-----+
       | |                 +-+
       | 
       | Lambda diagrams [1] are just a graphical output format for the
       | pure lambda calculus though, and not a 2D programming language
       | like L-2D.
       | 
       | [1] https://tromp.github.io/cl/diagrams.html
        
       | twofornone wrote:
       | Those animated runs look like they would be super useful for
       | debugging. Offloads a ton of working memory that comes with
       | tracking stack traces in your head when you can just see a visual
       | representation of the stack and watch data flow in real time.
        
       | munificent wrote:
       | _> Coding in l-2D is somewhat like playing Minecraft or Factorio,
       | but it 's even better because I can call it research._
       | 
       | I love the honesty in this sentence so much.
        
       | Cloudef wrote:
       | This is pretty cool, the programs end up looking pretty pleasing
       | to eye. Looks like schematics.
        
       | zozbot234 wrote:
       | The untyped lambda calculus seems pretty uninteresting compared
       | to 'typed' counterparts that tend to come with more interesting
       | graphical visualizations out of the box, viz. string diagrams
       | (where the topological features of the diagram have their
       | counterpart in useful program transformations).
       | 
       | Also, I thought it would be fairly well established by now that
       | the De Bruijn notation for the untyped lambda calculus, with
       | prefix function abstraction but _postfix_ application, better
       | reflects its underlying properties since it allows for an
       | intuitive visual understanding of reduction, where applications
       | can be directly matched up to abstractions.
        
       | ammanley wrote:
       | Absolutely fascinating. I actually put a lot of time a while back
       | into looking for a way to "draw" either a psudeo-code
       | specification language, or just Python, on an iPad for
       | "programming doodling" that could be scanned and parsed for later
       | execution (spoiler: handwriting code outside of a drawing program
       | is terrible). I love the idea of being able to bring computation
       | closer to a hand-to-paper medium. Computer vision processing of
       | code -> computation in an editor would be a dream. Please keep at
       | this.
        
       ___________________________________________________________________
       (page generated 2022-04-06 23:00 UTC)