Is it Possible to Program AntMiner S9 or Other ASIC Miners? Is it possible to program the AntMiner S9 or other ASIC miners? 

For example, let's say I only want it to try nonces from 1 to 1 million (instead of all 4 billion possibilities) would it be possible to somehow modify the software on the machine to do this? (please don't ask me why I want to do this, I just want to know if something like this is possible)

If it's possible, what programming language would I use?

Finally, would doing this (significantly) reduce the hash rate of the miner?
Yes it is possible. To do so, you will need to modify the firmware and install your own firmware onto the S9. The source code for the firmware is available on Github. The firmware is really a lightweight operating system and includes software such as CGMiner preinstalled. Those preinstalled software are probably what you will need to modify, and those are likely written in C/C++.

Since what you want to modify effects the data that is hashed, it should not effect the hashrate at all.