Hacker News new | ask | show | jobs
by lxcid 4390 days ago
I agree with the notion of a single vendor for all our needs is a scary future but AFAIC, we not moving in that direction. We have experienced first hand how it was like when Microsoft dominated the desktop space and I wouldn't want history repeat itself.

That said, that doesn't mean that I should choose my allegiance based solely on the point.

Years of development although does translate to maturity of the technology, it doesn't translate to superiority. Often, it could means lots of legacy, extra baggages in the name of backward compatibility and even stifled development.

If you consider Objective-C vs C#, Objective-C is over 20+ years old and have always been the main language for the Mac/iOS Platform. How have it served Apple? Many people here wouldn't argue against it. What do you think truly make C# much better than Objective-C? If we based our criteria on years of experience, Objective-C would be hands down winner here. But no, they have their pros and cons.

Xcode might not have been as well developed as compared to Visual Studio for a long time, but thats gap is closing rapidly. Since Xcode 5, I haven't been really haven't been mad at Xcode. I'm excited about Xcode 6.

Beneath Xcode is the amazing LLVM that provides a solid foundation. Previously, it was based on GCC. In the most simplistic term, think of LLVM as the .NET of Visual Studio. It allows multiple languages interoperability with the software interface, but LLVM did it in a much lower level and isn't specific for any single software interface. (This is a very dumb down explanation of LLVM capability and might not be true to its goal) It is being open sourced which spurs technologies like RubyMotion (Ruby to iOS/Mac/Android) and WebKit FTL JIT.

This bring me to Swift. Swift is technically 4 year old and designed by Chris Lattner, the creator of LLVM. I believe, my personal opinion, that Swift is born because optimising Objective-C with LLVM is reaching a point of diminishing returns. Objective-C is my favourite language but there are things that the compiler just can't statically analyse with high degree of confidence in Objective-C. A good example is NSArray or NSDictionary; You technically can store any object in a single array/dictionary, but its hard to be specific about the class/type of the objects stored at compile time. NSArray and NSDictionary is in NSFoundation API, rather and a language feature. I see no easy way to get around it, at least with my limited knowledge.

Swift is very strict about types and it learns heavily from other languages. That can only be good thing for Apple ecosystem. Not everything Apple does is to compete with others. They did it because they have set the foundation ready for this eventual transition. This is years in the planning, not out of the whim decisions.

Its a misconception for people to think of Apple technology of being incompatible with the overall technological ecosystem. But LLVM and WebKit have shown that Apple are extremely capable of building technology that play well and improve the overall technological ecosystem. Microsoft on the other hand haven't have such a good track record.

I welcome the more open Apple and I disagree with your second half of the comment as its a too simplistic and under appreciative view of Apple's technological stack.