I'm the resident "computer guy" in the optics laboratory of the local astronomical observatory...
First of all, most people here is technically-minded. That means, if they need a simple program, they can often program it on their own. No one is scared by the command line, etc. The astronomers still have lots of Sun workstations still around, but in our department we basically only have PCs.
There are three categories of software: hardware interface, data analysis and complete systems (in our case, that would be a telescope).
For the hardware interface, you use whatever is available at the moment. Most experiments are one-off jobs that will last from a few days to a few months tops. Usually the hardware has an SDK with a C interface and, possibly, a Labview module. What I usually do is to wrap the C interface to the higher-level languages we use in the lab (see below)
Data analysis is done in Matlab and IDL (IDL is quite popular in astronomical and medical environments). IDL's syntax is horrible, but it's a powerful data and visualization package. Most people here are proficient in at least one of those two languages, and if I write the appropriate wrapper, they can use the lab devices on their own. Windows and linux share about 50% each of the computers, and all window machines, including laptops, have putty, winscp and possibly X servers installed and regularly used.
At the telescope, everything is custom-built from the ground up, because you want to know what it's doing down to the last bit. The lower level part is in usually in C, then you may have user interfaces written in Qt or whatever, databases keeping the records, modules in Python or perl or something else etc. Things are developed by teams rather than individuals, so there is lots of documentation to write and APIs to specify. Windows is usually banned from this environment, and *everything* is done in Linux.