VPL Issues

  • thoughts from Ivan Reese's post:
    • Max/MSP / PureData seems to be a local maximum
    • most VPLs weaken naming - instead of giving names to things, you make connections between unnamed things
    • VPLs require constant jumping between mouse and keyboard (something I tried solving with DAS-UI)

    I don't think that the complexity issue (...) is essential. I think it's self-imposed by current visual language designers. Perhaps that's because the handful of visual languages that got traction (and thus the benefit of countless hours of design & development effort) are created for people who aren't computer scientists. These languages only need to be sufficient for solving a domain problem, not for advancing the art of the visual PL.

    • some ideas/prompts from Ivan:
      • use more of "visual" - borrow ideas from what designers are used to
      • layers - like in Photoshop
      • color-with-meaning - tags in Finder
      • shapes-with-meaning - using shapes to represent types, etc.
      • animation-with-meaning - step-debugger that plays things "slowly", Hest has even playback in reverse
      • possibly allowing programmer to specify what meaning they want to attach to which visual representation

    The fact that current visual languages are built of monochromatic text, a few box shapes, and a few colors of line, is a tremendous failure of imagination.

  • other prompts:

The problem with visual programming is that you can’t have more than 50 visual primitives on the screen at the same time.

— L. Peter Deutsch - https://en.wikipedia.org/wiki/Deutsch_limit

  • I like how code is expressed as "layers", borrowing from graphical applications (some other interesting prompts in this direction in VPL Issues:
    export let inner = 0.5;
    export let outer = 0.75;
    export let vertices = 10;
    // ...
      <Slider label="Sides" bind:value={vertices} min={5} max={20} step={1} />
      <Slider label="Inner Radius" bind:value={inner} min={0} max={2} step={0.01} />
      <Slider label="Outer Radius" bind:value={outer} min={0} max={2} step={0.01} />
Szymon Kaliski © 2021