I'm not sure the author is really distinguishing between his personal tastes and the actual characteristics of each platform. But his personal tastes are shared by an enormous number of Windows developers, so based on his blog post, I imagine that WP7 will succeed with in-house corporate developers. Interesting.
I don't understand where you got your summary. Looking at his CV - http://home.pacbell.net/eevans2/resume.html - it seems he has a range of experience.
From this part of the article: I admit that I’ve spent many more years developing in Visual Studio than Eclipse or Xcode...
Based on my own years in Visual Studio, I assumed that this meant Windows development of one flavor or another.
I'm not sure that's true. To answer that question you'd have to compare WP7 development to MonoTouch. There's no doubt the WP7 development system is more refined but MonoTouch allows you to use C# and a .net like environment while at the same time letting your staff keep the iPhones they already love.
As a C#/Ruby developer I embarked on the somewhat painful journey of learning Objective-C a few weeks ago. I got my first personal app written to control my Denon 3808 remote.
Admittedly it would have taken me a fraction of the time in either C# or Java ... square bracket central is something that is hard to get used to.
However, I find the whole experience of developing on iOS very well documented ... this is not COM development with MFC, it is much more approachable. It is a pleasure to have a language that has its roots in Smalltalk and having a fairly comprehensive yet-not-gigantic set of support classes is great. Objective C delegates are nice, the evented style it offers is nice. Auto release pools take away a lot of the pain of memory management. I am sure that after a few months of development in Objective C I would be quite productive. However I still prefer C#. Also, I prefer Ruby over C#.
When I first learned WPF a few years ago I could not believe the bloat of the base library, it took weeks to really understand how all the XAML stuff works, building custom controls was tricky business.
Today, Silverlight (which has its roots in WPF) is much more polished. As far as I can see if you use the toolkit and controls that ship with WP7 development is quite seamless. However, my understanding is that the iOS set of APIs are more comprehensive due to the huge first to market advantage they have.
There are lots of very subtle advantages to each of these platforms that only and expert in all 3 could point out. That is an article I would love to read.
if(!object)
[[Do something]about it]
vsif(object == null)
DoSomething.Aboutit
I know its a small thing, but my typenames are usually lengthy so in practice C# statements can get character heavy. public static bool operator true(Class c)
{
return c != null;
}
public static bool operator false(Class c)
{
return c == null;
}
To avoid redoing this for each class you can just derive from a base class that implements these.The trick is to use null checks almost like you're writing C++, but drop them when they are unnecessary and inelegant. Convince yourself that a null check is unnecessary before removing it. This way you're reducing the chance of bugs and making them easier to pinpoint.
For example, you can do:
if ([someArray count])
rather than if (someArray && [someArray count])
On the other hand, you may be asking for trouble if you do [[someArray lastObject] dance];
without checking [someArray lastObject] for nil, since if someArray is empty, then nothing will dance and you won't know about it.tl;dr: Messaging nil is not idiot-proof but it makes code read better.
I speak as an iOS developer and long time Apple devotee. The way Apple manages signing and submission is a cruel joke. It was ok as a "get it out the door NOW" beta in, what, 2008, but it's barely improved. I spend more time figuring out wh signing failed than finding actual bugs.
I don't think arguing obj-c is useless to learn is fair, but he you're a windows guy. IMHO learn new languages is seldom useless, and I'd rather learn obj-c than c# for the exact sam reasons you'd rather learn c#, and I'd argue the intellectual benefit from learning obj-c exceeds that of adding c# to java or vice versa.
(Say what you will about Microsoft the one thing you have to give them credit for is the amount of money they spend to create developer tools)
Things might change once Adobe gets Flash up to speed on Android but until then Blend is by far the most powerful UI environment available for any mobile device.
Except when you are one of the many developers whose apps get stuck in the marketplace, that never get approved or rejected because of lousy infrastructure on Microsofts side.
A developer I highly respect wrote about his ongoing struggle getting his Google Voice client out for WP7. If he wasn't already known from his MVP work, it's unlikely he would even have got those [extremely unhelpful] responses from Microsoft.
http://www.koushikdutta.com/2010/12/windows-phone-marketplac...
I think its a fair assessment, as someone who spends his daytime hours in VS2010 writing C#, the tools are first rate. I personally like objective C as a language(I think C# and .NET is growing at a rate that will tire of keeping up with before too long where objective C is lean and easy to learn), and feel that things could be better if XCode were better. That said, the iPhone simulator is at least 100 fold better than the WP7 emulator.
Recently been using Titanium Mobile which I'm starting to really like. It makes iPhone dev really nice. With Android dev though you still have to deal with the crappy tools provided by Google (compiler, emulator, packager).
I don't doubt Visual Studio has a much easier development process for apps. C# is a decent language for that kind of thing. But I don't think I could bring myself back to ever using Windows again for development (even in a VM).
Everything else after learning the syntax is just learning the api.
UIKit and Cocoa are, admittedly, pretty unorthodox compared to pretty much a lot of UI frameworks out there. That and Interface Builder being a separate app were the biggest obstacles for me learning iOS programming.
And yet have features found in SlickEdit circa 1992.
Twenty fucking years later I'd expect my IDE to a bit smarter. It might look beautiful (to you) but its brain dead.
Quickly like to point out that Eclipse on OS X is atrocious.
Also, as I believe the article points out, with Android (or MP7) you can run your development environment in a VM of our choice on top of whatever you normally use as your desktop OS (I do my Android development in an Ubuntu VM on my Windows XP laptop). That's not practical for iPhone development. Putting together a "FrankenMac" is very cumbersome, the resulting VM tends to be unstable and fragile, not to mention that it's against the license agreement for OSX.
I personally prefer Netbeans over Eclipse and Ubuntu or even Windows over Mac OS X, but Eclipse on Mac has become very usable since about two years ago. (I think there are still some problems with keyboard shortcuts, but I'll blame them mostly on OS X, not Eclipse.)
I could never find an IDE for java I liked on OS X. Eclipse is ugly, buggy and crashes every few hours. NetBeans is better, but not by much.
This means that existing non-.NET code has to be rewritten from scratch to be ported to WP7, while on iPhone and Android it is possible to link native code.
If a developer wants to write the same application on iPhone or Android and WP7, basically no code can be shared. Is it worth it?
For example, there are a few people running F# on Windows Phone 7. I haven't tried it myself, but here is a link to templates for game development with F# on WP7: http://sharp-gamedev.blogspot.com/2010/12/project-templates-...
Here's an article on building a WP7 app with IronRuby: http://msdn.microsoft.com/en-us/magazine/ff960707.aspx While this isn't as fast as it could be, because you can't access Reflection.Emit to JIT method bodies to native code, it does show you can run Ruby in a WP7 app.
Behind what?
Anyways... I can attest to F# being a breeze to get on WP7 and Scala can be wedged into android with some effort. Thats about it I think of in terms of no extra runtime required solutions.