None/All Review
With the advent of high level cross platform languages and the standardization of things like HTML5, CSS 3 and Javascript, the OS is fast becoming irrelevant in learning to program. For example, one could simply choose to learn to program for the web in Javascript and simply do all of their coding on services such as code pen, koding, etc. Alternatively, one could choose a more "desktop" friendly language such as Java and build cross platform apps.
Ranked in these QuestionsQuestion Ranking
Pros
Pro Stop being a fanboy
Pro Potentially larger user base
You are not constrained to a subset of the market, thereby the opportunities to get help should be greater when only constrained by language rather than language & OS.
Pro There are lots of popular languages available that are pretty much OS independent
For example, node.js, Java, pearl, Python, Ruby, HTML, CSS, Javascript.
Pro You can focus on learning
Developing at this higher level allows you to focus on solving problems and learning the language rather than learning an unfamiliar OS.
Pro Can give you experience across OSes
Developing in a language that supports many OSes gives you potentially more room to grow, by giving you an excuse to try other OSes once you become comfortable in the basics of a language.
Pro Online tools
If you are keen on just diving right into coding, there are many tools that run in your browser that allow you to get going without needing to setup anything locally. For example, codepen and coding.
Cons
Con UI look and feel may be non native.
If your goal is to develop something that looks like it fits in, this can be tricky with some cross platform languages (Java being a notable example, though there are libraries that can help this).
Con You may still need to deal with idiosyncrasies
Most cross platform environments can't abstract away all the OS specific idiosyncrasies. For example, starting Java applications as a service is something Java cannot do out of the box. So you are left to come up with your own solution for that. NPM's scripts are not inherently cross platform, so if you use them while developing with Node.js, you may need to find your own ways to make them cross platform.
Con Learning how to test can be costly
Learning how to test one's code can be more complicated, depending upon the language because you may need to test certain aspects of your application on different OSes. This means more setup time as well.
Con Write once - test everywhere
The idea behind cross-platform languages looks nice at the first glance, but in reality in the very best case boils down to an infamous "write once - test everywhere" pattern.