Observations about the universe, life, Lausanne and me

Monday, June 29, 2009

Why I hate Labview

I have harped about this before (and most probably will again): stay away from LabView if you want to keep your sanity. Point in case:



First of all, this is not an overly complex program. Or at least it wouldn't be, in any other language. It only has to control three instruments, using fairly simple syntax. But thanks to LabView's oh-so-simple "graphical" programming metaphor, you have lines and shit going everywhere. Furthermore, I've begun to not propagate error messages from module to module properly, just to cut down on the number of "wires" so I still have a small chance to understand what is going on in my main program. This does not make debugging easier. And now this:



Insane object indeed. I think I'll look into migrating the whole shebang to Matlab.

7 comments:

  1. I hate many "advanced" GUIs - I do. By making them "intuitive" to the general public, they end up being a pain in my butt (i.e. clumsy) with bugs I have no way to identify and correct.

    Not that I'm opinionated.

    ReplyDelete
  2. Email me your code and I can take a look and see if I can help (todd dot sierer at ni dot com). I hate to say it, but just like with text-based programming, if you don't make clean code you're likely to run into a lot of problems. That screenshot looks pretty rough...

    ReplyDelete
  3. Hey TK, thanks for the generous offer! I've already managed to fix the problem, when I cleaned up the code the "insane" connection rediscovered its sanity.

    You are right of course, clean code equals less problems. But it still bugs me that in LabView I have to clean up my code twice - first making sub-programs and gernerally clean algorithms, and then thinking about the stupid "connection-wires".

    ReplyDelete
  4. I say the same thing about trying to find the random syntax errors I make in text-based programs. Either way we'll always have some debugging to do! Thanks for the comments on my video!

    ReplyDelete
  5. It's the same thing this couple of bollocks. With LabVIEW I solve most of my errors by copying and pasting the whole crap to a new empty VI. If you copy and paste real code (AKA text) to a new file, the error is still there.

    This means when I met an error in conventional programming I usually check my code. With LabVIEW I directly go to ni.com instead, trying to figure out which LabVIEW bug could be the source of my pain.

    ReplyDelete
  6. Same here, I hate labview more every day. I don't think there is anything fundamentally wrong with a graphical programming metaphor, just with labview. I could write a 50 page essay of criticisms. It's stuck in the 1990s, I mean multiple windows, really? Have they noticed that pixels are now a fraction of the size they were when it all started (SVG anyone)? I'm sure it's not the case but I doesn't seem like they have actually seen a modern IDE. Just look at Netbeans or eclipse to name a couple, they are indefinitely superior and they are free. I know they are working on some much more modern stuff but they really need to catch up. Perhaps the number one problem is that, as previously mentioned, there are all sorts of things hidden away in menus which affect the operation of a vi whereas in overwhelming majority of text based languages it's all there in plain sight.

    NI, please please take a leaf out of the modern IDE book! I have ended my NI subscription and do not expect to renew it.

    ReplyDelete
  7. LabWINDOWS solved LabVIEW's problems for me. LabWINDOWS is a modern gui programming environment and it's very comprehensible if you're an intermediate level C programmer. I spent months trying to learn LabVIEW, referencing several texts. Then I discovered LabWINDOWS. I became productive immediately, even without books.

    LabWINDOWS is NI's best kept secret. Chances are good you never even heard of it. NI doesn't advertise it much. I exists apparently because users demand it. I suggest you give it a try if you know anything about C programming.

    ReplyDelete