View Single Post
  #4   Spotlight this post!  
Unread 03-07-2016, 17:12
Joseph DeRoest's Avatar
Joseph DeRoest Joseph DeRoest is offline
Registered User
FRC #2990 (Hotwire Robotics)
Team Role: Programmer
 
Join Date: Jan 2014
Rookie Year: 2012
Location: Stayton, OR
Posts: 25
Joseph DeRoest is a jewel in the roughJoseph DeRoest is a jewel in the roughJoseph DeRoest is a jewel in the rough
Re: FRC Java or Labview?

I've been programming in LabVIEW for 4 years now, and would like to give you some technical details about it. As for Java, I'm actually learning it as I speak, so I can't be of too much help in that. Sorry.

Pros:

LabVIEW looks more simple for beginners because of the graphical aspect: wires connecting to blocks, drag-and-drop, selecting stuff by drawing a box around them, all of that is more familiar to people with no prior programming experience.
LabVIEW is amazing at running different parts of code in parallel.
There is A LOT of support for LabVIEW on Chief Delphi!
It is an industry-standard programming language.
You can drag-and-drop other teams' LabVIEW code directly into yours.
LabVIEW has many nice tools to help you when programming. For example, to help with following data transfer inside the code, there is a highlight function that highlights the data flow in ordinal fashion.


Now, LabVIEW does come with quite some quirks and annoyances...

Cons:
LabVIEW and trackpads DO NOT MIX! It basically requires you to have a mouse.
LabVIEW's version of vision processing has a bunch of lag (about a half a second).
The LabVIEW application has no tab interface; in other words, if you have 5 VI's open at the same time, you will have a messy conglomerate of 5 windows on your screen that you will have to switch between.
LabVIEW looks like a nightmare for those who have prior programming experience in a text-based language with its wires going everywhere, random blocks and boxes, etc.
Merging two VI's in LabVIEW is literally THE WORST! A VI-merging application is included in the FRC LabVIEW Suite, but it takes at least 30 minutes just to merge average LabVIEW code, and it may not even do it just the way you want it to, either.
It takes LabVIEW quite some time to deploy code to the robot. I had a weird issue in which the code would not deploy correctly, and in the end, would display a connection issue, so I would have to almost always deploy the code twice or even thrice.
Once you begin making more advanced programs, LabVIEW code becomes more and more complex. For example, my team this year has two cameras on the robot for driver vision, and we wanted to be able to switch between the two camera views at the push of a button. To do that, we had to dig reeeaaaly deep into the existing code infrastructure (roughly seven layers of SubVI's) and change several components. It took several hours of debugging just to make it work!
Debugging in LabVIEW can be time-consuming, mind-boggling, and overly complicated overall.


Once again, I'm sorry that I can't be of too much help when it comes to Java (yet...). If you have any questions, I will reply as soon as I can. Hope this helps!
__________________
Reply With Quote