5 ms·
Because they're awful? The author doesn't mention LabVIEW, perhaps because he is not a scientist. LabVIEW is a visual programming language -- you construct sof
by mechanical_fish 16y ago
Because they're awful?
The author doesn't mention LabVIEW, perhaps because he is not a scientist. LabVIEW is a visual programming language -- you construct software by connecting little icons together with wires.
LabVIEW has been around for decades and is a big success. Lots of science labs use LabVIEW, because (a) it's a National Instruments product and interfaces perfectly with National Instruments interface cards -- which have been the industry leaders for years; (b) it has drivers for every instrument ever; (c) the visual paradigm does work great for GUI design and layout. (Which shouldn't surprise anyone who has used XCode or Visual Studio.) Scientists love the ability to throw together a chart recorder application in ten minutes, and then wire it up to everything else in the lab, and LabVIEW works great for that particular use case.
Unfortunately, as you go beyond the most basic of computations or out of the environment's sweet spot -- in other words, as you try to use it as a general-purpose programming language -- LabVIEW just gets more and more painful. It has its own special vocabulary, semantics, and design patterns that are unlike everything else you've seen. Every time you want to define a subroutine you need to create a little icon for it, and define its arguments in terms of little panes on the icon. That's slow and painful and limiting; it makes writing Java in Notepad feel like luxury. But you have to stay disciplined and keep defining those subroutines, or your code will literally turn into spaghetti. Oh, the horrors I have seen. It's particularly awful if the code sprawls over more than one screen.
You can't effectively print out the code. It's hard to blog and hard to quote snippets from. To refactor you have to manually rearrange icons; there's a lot of time wasted laying things out. There's no way to use version control or create a patch. There's no search-and-replace.
Think of emacs. Now think of Notepad. Now think of something that is less useful than Notepad, to the same degree that Notepad is less useful than emacs. That's a visual programming language.
- pcarmichael 16y ago(Disclaimer: I work on LabVIEW.) For refactoring and layout, there is a diagram cleanup tool that will automatically re-layout your diagram for you with just a button press. It does a pretty good job IMO, and really changes the way you code. Also, version control is supported, and allows for graphical diff and merge. While there is no search-and-replace, there is a search function. (Search/replace has quite a different meaning when you're dealing with graphs rather than text.)
- mechanical_fish 16y agoAh, I forgot to mention another of LabVIEW's good features: The company has been improving it steadily for decades. ;) Diagram cleanup tool sounds interesting. I'm old enough to remember the earliest version of LabVIEW, which as I recall forced you to rewire every connection to something whenever you moved it. Now that was torture. When I went back a few years later and found that wires would automatically follow you around it felt like Christmas. Perhaps the cleanup tool is an equally big win. Version control and diffs sure would have been handy when trying to clean up some of the terrifying things I inherited back in the day.
- Qz 16y agoYou can't effectively print out the code. It's hard to blog and hard to quote snippets from. To refactor you have to manually rearrange icons; there's a lot of time wasted laying things out. There's no way to use version control or create a patch. There's no search-and-replace. None of those problems are intrinsic to visual programming, only to the IDE for one. None of those problems seems particularly hard to solve as far as I can see.
- barrkel 16y agoWhen you have to rely on an IDE for printing, sharing code, quoting etc., you've already lost.
- Qz 16y agoFrom the perspective of a text-based language that would make sense, but its completely inapplicable to a visual programming language. The IDE is the language. Printing/sharing/quoting would need to be features of the IDE and the language.
- AlfredTwo 16y agoLabVIEW is only one of many others I could have named. The three I named are the ones I personally use the most but of course there are many others. Several for programming robots for example.