If you want to just use the GPIB functions, then you do not need NI-VISA. If you want your application to be portable, then VISA is the way to go. With VISA, you could change to a non-NI controller and the program would still work. This would be assuming that the vendor of the different controller has a VISA driver for their board. VISA is also portable in the sense of using something other than GPIB. Many vendors offer isntruments with either GPIB, USB, serial, or Ethernet connections. With VISA, you could swap connection types without making any changes to the program.