That last point is one of the reasons for why I switched away from iOS to Android. I have yet to encounter an Android phone that doesn't do Wifi tethering because the mobile career says so. And my prior mobile career also had the nerve to ask me for an extra 4 EUR per month for wifi tethering. It's my device damn it and I feel that Windows Phone is a shitty iOS replacement, without the sexy.
> How many languages can you use to write apps for your iPhone or Android device? Objective C and Java respectively and that's about it.
For targeting iOS you can actually use Ruby [1], C# [2], Java [3]. Many iOS games are using Lua for scripting. Speaking of which, Unity 3D is a platform for building games and you can use Javascript, C#, Boo or UnityScript (a sort of ActionScript). The problem with iOS is that Apple had artificial restrictions that disallowed virtual machines, so bytecode and virtual machines were out. I think they lifted those restrictions, though iOS is what I call a defective by design platform.
On Android there are no limits. People build stuff with Java, because it's the least painful path and works fairly well. Games are still being built with C++. I have used Scala and it works well. Many people are also building apps with JRuby and Clojure ... though Dalvik is not as capable as a real JVM, so dynamic stuff has performance issues.
Even if you target the browser, you can compile C++ to asm.js and for replacing Javascript there are full-featured replacements available that use Javascript as bytecode - like Dart or ClojureScript.
> server side development which is in a sense a niche
Err, what? 99.9% of all software being built today is either server-side or has indispensable business logic that's handled server-side.
> [Linux, server-side] could have co-existed with Microsoft perfectly happily
You're probably too young to remember all the shit Microsoft did to prevent Linux and the web as a platform from happening. That's OK, you'll live and learn.
[1] http://www.rubymotion.com/