First, let me say that these are my opinions. I know that thousands of people around the world are using LabView. If that many people are using it, it must not be that bad (or possibly they just have no choice). With that being said, I have used LabView now for approximately 5 years and would like to share my observations of the challenges to using LabView for any large project.
- Documenting code is hard.
- The available options I know of for documentation are: Pressing tab tab to get a text box or adding a description to your Sub-Vi.
- Complex algorithms or logic flows need the most commenting, but are often the hardest to comment. It is hard to get a comment box near enough to the piece you want to remark on to make it clear what the comment applies to. If you have to comment on two or three sections of the algorithm, then the size of the comments force the code to grow rapidly in screen real estate.
- The text boxes also take up a lot of space. The best solution that I have found is to use plenty of Sub-VI's so you only have a small amount of code to understand and comment on at a time.
- In general, LabView code can be very difficult to follow if you were not the one to write it. I know of at least one professor who refused to allow any LabView code to be included in a dissertation, because he maintained (correctly, unfortunately) that printed LabView code is nearly impossible to read.
- Automated asynchronous code execution is great, until you want
to control it.
- Large sequence boxes and other funny structures (such as snaking error lines) are often necessary just to control code execution order.
- Continuous acquisition of data from a DAQ has two options: While loops or callbacks. While loops can be temperamental (for instance if your loop takes a little too long to repeat and the buffer overflows) and as far as I know, using callbacks in LabView is quite difficult.
- Speed
- On the whole LabView code is fairly responsive. However, some blocks (MathScript, Express VIs, etc.) can be painfully slow.
- I often feel that LabView makes so many decisions for me that when I do need to optimize my code, I am essentially left out of the loop.
- Graphical Programming? Maybe my bias shows through too much here, but the graphical programming idiom has never sat well with me. I prefer text. I can edit it in any program I like. A wide range of tools are availble to manipulate and understand it (grep, diff, ctags, etc.) And typically I only have to scroll in 1 dimension to scan over the code.