Monday, September 13, 2010

Visual Programming and LabVIEW, part 2

In Friday's post I wrote about the latest LabVIEW version, my reactions to it, and some thoughts on graphical programming.  This weekend I thought more about that conversation and wrapped it up with what I think LV should look like in the (near) future.

I applied for the App Inventor for Android, but I've read it takes a while to get approved for it.  When I get it and play around with it some I'll probably write a post about it.  But getting back to the Cube language thing from Friday, last month I started asking myself how would this translate to LabVIEW?  First I made a little logo, since that's the most important part.



Then I started thinking about how it would look.  It should be a stylized 3D environment: zooming in and out, pan and tilt, looking at it from top, bottom, front back, etc.  Then I started defining some details:
  • Navigation: As I just said, it would be a 3D experience.
    • You could spin the entire wire layout like you spin around a 3D graph
    • You could "peer inside" a subVI object by making it slightly transparent
    • You could "zoom" into or out of subVIs
  • Icons: All the current LV icons should probably just be 3D renderings of their current 2D versions.  But user-defined icons... THAT could be the cool part.  Imagine designing an icon for a subVI that, instead of a small square with a little image and text inside, is a 3D image of the test equipment it uses (provided by the manufacturer of course).  You could even swivel around to the back and see all the plug in options.  Cool, huh?
3D image icon of a Keithley 2400
Stylized 3D icon

  • Debug:  This option could be very slick.  When debug is turned on, you could have the option of "following" data travel from a "first-person-shooter" perspective.
Still a classic
  • Optional: It might need to be something you could turn on or off, depending on the speed of the computer's graphics processing.  Turn it off, and you're back to the 2D version of the flow.  
    • This also gets down to the choice of whether the 3D view is superficial or impacts how the block diagram is compiled.  If it's just visual, then you're fine.  If, however, certain aspects of your 3D model impact how the program runs (see, for example, "Flow" below), then you might lose that if you turn off the 3D viewing.
  • View hidden items: The "hidden" frames of a case structure, event structure, etc., could be viewable as stacked items behind the front of the structure.  It could appear perhaps as slightly separated index cards, with maybe the option to fan them out like a poker hand (which would look very cool).
Error case viewed from the front, maybe 30 degrees above the plane
  • Data Flow: This might be a tricky one.  One of LV's defining paradigms is data flow, and style guides suggest left to right.  But what happens if you can also go towards or away?  Should there be a switch in the compiler that says that code "behind" other blocks is not as preferential and should run "as time allows."  Or perhaps data on a tangentially angled line travels more slowly?  I think there are several games you could play with that idea.
  • Layers:  Mechanical modeling programs, imaging programs, and semiconductor layout programs all have the concept of layers.  Different things happen on the different levels.  Could we do something similar with LabVIEW 3D?  I alluded to that idea with "Data Flow" above, but maybe it should be more concrete.  
    • What if you defined separate layers for DB interfacing, hardware control, etc?  But instead of switching to those different different layers, you could see them physically: just zip over to that layer with your mouse.  
    • Or how about, for multi-core programming, coding on those different layers happened on different processors?  
    • There are certainly other tricks you could do.

I really like this idea of a true 3D interface.  I think the computing horsepower to do nowadays, it could improve the quality of LV programs by letting you see more details of the code, and it would be really fun to program in it.

Will this happen?  Who knows.  But if NI starts working on it, I want them to know that they heard it here first.... can I get royalties on that?

No comments: