The first question that came to mind when I read your post is what system are you using for the controller?
If you want to use a PC, then Visual C or Visual Basic very well could be the way to do as they both should have the necessary drivers to utilize the peripherals on the hardware. Linux, if you are familiar with it, could be an even better choice because it allows you a lot more functionality with regards to embedding your own systm code and drivers into the OS Kernel.
If you are talking about an embedded processor application, the question of which language to use depends on the tools available which is platform specific. Almost always, the development tools consist of some form of cross compiler which can be a C, C++, assembly, or other. It is called a cross compiler because it runs on a PC but is compiling code that is meant to be executed on a different platform.
The impression that I have developed is that most or at least many embedded applications are written in C with some assembly where required. It appears that with the creation of embedded C++ which removes some of the functions that require a lot of processing overhead that C++ is starting to gain some ground.