When companies write apps in Objective-C for the Mac or iOS platforms, they are going to pretty much stay on the Apple platforms. Those apps, for the most part, aren't ported to the Windows and Linux (please skip the GCC discussion, it's not a 100% solution). Fortune 500 companies and commercial companies are locking consumers into Apple. There are thousands of Objective-C, Apple only apps.
That's is correct and obvious, so I thought it went without saying. Btw, there are hundreds of thousands of little iOS only apps.
If Apple had a monopoly, or even close to one, in phones then we would have a problem. However, Android leads by a wide margin and since they sell better in the rest of the world, Apple's little walled garden doesn't really matter.
My point is that creating a custom language is not necessarily a move intended to create or preserve a monopoly. Microsoft felt that the best way to innovate in the developer space was to produce a modern framework with a core set of modern languages (and to open that framework up for 3rd party integration, such as Delphi). It's unreasonable to expect that Microsoft should be limited to C++ (a non-managed and non-modern language) and Java (a language a competitor controls) for development.
Microsoft writes most of its software in C++. They love C++. If C# wasn't the only case then it might be acceptable. DirectX, for example, was done to kill off OpenGL. Microsoft hired away Borland's language team, including the Delphi developer and proceeded to build a better Java that only ran well on Windows, and some might say that they accomplished this. :-)
Objective C was developed before Steve Jobs and he simply adopted it, or his engineers did at NeXT. Personally, I'd like open languages/platforms that offer a little more reuse.
> Microsoft writes most of its software in C++. They love C++.
Microsoft writes most of its systems-level software in C++. Microsoft also writes a lot of C#. WCF and WPF are both built on the .Net stack. Bing runs on ASP.NET. Lots of stuff at Microsoft is build in C#, for the same reasons lots of stuff outside of Microsoft is build in C#: it's modern, safe, fast, and pleasant to work in.
> If C# wasn't the only case then it might be acceptable. DirectX, for example, was done to kill off OpenGL.
No, DirectX was written to replace WinG, which is what most games for Windows were written in prior to DirectX. I don't believe OpenGL had any traction on Windows at that time.
> Microsoft hired away Borland's language team, including the Delphi developer and proceeded to build a better Java that only ran well on Windows, and some might say that they accomplished this. :-)
This might be interesting if Microsoft had hired James Gosling away from Sun to work on C#, but that's not what happened. They hired staff away from Borland, who didn't design Java at all. You're conflating unrelated things.
> Objective C was developed before Steve Jobs and he simply adopted it, or his engineers did at NeXT. Personally, I'd like open languages/platforms that offer a little more reuse.
I fail to see the relevance here. The Objective-C used by Apple today is by no means the same as the Objective-C that NeXT started with. NeXT and Apple extended Objective-C significantly at both the language and the library level. This the the "embrace, extend, extinguish" cycle you accuse Microsoft of.
Sorry you fail to see the relevance. Objective-C isn't owned by Apple in any way, shape or form. Of course, they are going to try to improve the language. They sort of have to make it modern since they built their systems around it. Apple's compiler an open source project: http://clang.llvm.org/ Will Microsoft ever open source their C# compiler? That would be a great boon for making the language cross platform.
Objective-C isn't owned by Apple? Who else is using it? Of the few other people who are using it, how many are using it without Apple's extensions? Apple does indeed de facto own Objective-C. They control it. They have embraced it, extended it, and extinguished anyone else who might have had a claim on it.
It's strange too that you have a problem with C# being proprietary, but you don't have a problem with Java being proprietary. Oracle owns both the language and the implementations that everyone uses. That it's part of their business plan to maintain it for Linux does not change its fundamental nature.
And just so you know, Microsoft did open the source for C# under admittedly restrictive terms. Look up Rotor. And they have issued a Community Promise that protects projects like Mono. And yes, Mono counts, just as surely as GCC counts, unless Microsoft also owns C++.
Objective-C is an open source project, like the webkit browser. Google adopted webkit for Chrome, for example. There is nothing prevent anyone else from adopting Objective C. Your logic is pretty flawed. Just because Objective C has not gained wide adoption doesn't mean that it's not open to be adopted. Google uses "Java" for Android. Java is open source. You can download the source and build it.
Mono is fine but it's not nearly as good as Microsoft's compiler. C# is a great language. It would be great if Microsoft simply open sourced it.