Learn Linux if you want to setup mail servers and do stuff with the cloud. It'll be fun, too.
I've used both Keil and SDCC, and it turned out the code generation of Keil was much better (years ago though). I'm mostly using GNU tools and my editor is emacs, but for source-level debugging the Keil tools are useful.
I think there are two reasons for this: First, there are a lot more people building meaningful stuff with software than with hardware because it is cheap and easy. All you need is a computer for a couple of hundreds of bucks, and if you like you get all the rest for free (as in beer). For everybody who wants to write software, a patent could be in the way.
Second, and more important, many if no most patents lack substance and should not be patents at all, and for software this is even more obvious than for hardware. What is this one-click-buy-stuff about? Should there maybe be patents for storing text documents on a harddisk or using pixels to show text on a screen? I probably wouldn't mind a software patent for reasonable inventions, like a O(n) sort algorithm. But it's so incredibly hard to come up with such inventions
I have a past at a global player in the electronics market and I've seen some drafts for patents that in my opinion should never be granted. However, giving the current patent system, the number of patent applications is a value in itself, regardless of the substance behind.
All that said, as long as the patent system is not fundamentally changed, software patents are going to do a large damage to both the economy and the consumers.