For a bit more C# perspective, and how it can help with workbench stuff, I'm pretty much done with my data acquisition app. For now. Maybe 75% of it I wrote today, and that's after not touching C# for a while. Nice and quick to get user interface stuff done.
Basically it reads a data acquisition device (Labjack) via USB. I'm also using an excellent C# math library called Mathnet. You can do FFT, for example, in just a single line or so.
You first connect to the Labjack data acquisition device, and it has 8 analog inputs (plus some digitals and other I/O stuff). So I've set it up to let the user enter how many seconds to scan, and it plots that on the top chart. You can then do an FFT on the waveform.
Or you can log data from 4 other inputs, and you can also select via checkbox to do realtime graphing of any of those. The FFT and logging charts are on top of each other, so whatever you select will be enabled and displayed. And you can stop the plotting whenever you want.
In the screenshot below I've grabbed 0.5 seconds of a 60Hz triangle wave, and simultaneously done realtime plots of a couple analog inputs (I varied some power supply dials). I've hard-coded it to sample the bottom inputs every 0.5 seconds, and the chart automatically updates and re-scales the X and Y times and magnitudes. Very slick. And this is just default behavior of Windows forms.
Yes, you can do something like this in 12 other languages. No question. Though I'm sure I'll be corrected that "it's not 12, it's 13".
I'm just giving one example of something that can be done real quick, with drag-n-drop charts and buttons and a few hundred lines of code, in case anyone might be interested in setting up something for their workbench.