Description

This session covers the nuts and bolts of several key innovative compiler and runtime technologies we will be delivering in Visual Studio 2015 and its updates. New investments in the compiler and runtime space include: Improved optimization and auto-vectorization, /Guard secure code generation, incremental whole program compilation, and new asynchronous C++ code generation.

As a professional iOS Developer, neither myself nor my colleagues consider ObjC 'legacy'.I like Swift as a language and am interested in it; but it still lacks many features - most notably reflection.Also the bridging between Swift and many frameworks which use pointers for performance e.g. CoreVideo is nightmarishly complicated. Swift is nice and concise for simple 'wrap a webservice' type Apps, but for more complex work ObjC still reigns.

Chris, as an old NeXT developer who has been using Obj-C since 1989, I can count the number of times I actually needed to go traipsing through the runtime on one hand, so the limited support for reflection in Swift is really a red herring.

As for handling pointers in Swift, it's really not that tricky. Examples of wrapping C pointers in Swift classes abound on StackOverflow and GitHub.

@John Randolph: Objective-C isn't legacy because Swift is considered to many to not yet be stable— the current release, 1.2, adjusted the syntax further in a not-fully-backwards compatible manner. Apple's approach looks to be similar to Ruby's— a lot of things shifted around throughout 1.0-1.9, and have settled since 2.0. Regardless of what Apple intends to do, Apple's holding no bars regarding the still-changing nature of Swift. This is probably one main reason why Microsoft isn't jumping to implement it.

However, Swift is just a language— the API remains the same, and the runtime is (almost) the same as Objective-C's. There's little reason why a Swift-to-Objective-C intermediate compiler couldn't be written. And there's little reason for companies settled in Objective-C to use Swift for anything but brand-new projects. It's a nice, simpler syntax (IMHO), with a bunch of coding productivity enhancements that look a lot like Boost C++'s extensions (Boost smart pointers especially), but it's not a game-changer. Every Obj-C programmer should be able to jump into Swift quickly, and Swift-only programmers wouldn't have too much trouble with Obj-C (assuming they also know the nuances of plain-C).

What I am going to say is surely provocative but I am going to say it anyway because I don't like dishonest people. In engineering like in science, I consider that it is important to properly and clearly acknowledge someone else work when taking and using the work done by other people. And obviously the two speakers in this session can't or don't want to do that. This happens two times during the presentation for each speaker respectively, that is:

- The first speaker mentions the use of Clang for compiling Objective C and C++ without nowhere in its slide a mention indicating where Clang comes from or even a link to Clang/LLVM project web site. I know that most people have at least heard about Clang but you can't just say that you use the product even being open source without any mention or acknowledgement of the work done that came to produce Clang. The speaker even while confusingly speaking about compiler technologies almost makes sound that Microsoft has anything do with Clang. Now I suspect that Microsoft is not really comfortable in acknowledging that it's using a compiler originally designed by Apple in order to save its mobile operating system but this is then just a childish and immature attitude.

- The same attitude prevails with the second speaker which at some point is speaking about providing support for Objective C blocks and ARC. Without again any indication on where this comes from. Of course that they can provide blocks and ARC support, Clang gives them for free. And in fact blocks and ARC being designed and implemented by Apple, the speaker must have mentioned that they use Apple implementation because this is what they are doing. I really don't understand this attitude of not properly acknowledging the source of what they are using. One must be fair, Apple developed it, made it open source, and Microsfot is using it now. That's ok, just acklongedge the people who have done the work that you are using.

Then concerning the API support, again the second speaker was also not clear. What Microsoft is doing here is really implementing copyrighted APIs and that brings the question on whether Apple will like that (I guess they are not really happy seeing Microsoft messing up with their APIs) but also the question on why? Is Microsdoft so desesperate to attract developers (and users) to its mobile platform that it ended up using large resources to reverse engineer iOS APIs instead of trying to develop an attractive solution on its own?

Concerning Swift, I don't really agree about some above comments about the language, the language is of course very young but calling it only useful to warp web services is laughable at best. In fact it really departs from Obective C in so many good ways, and this is a big fan of Ojective C telling you that.

But when it comes to the support of swift by Microsoft, th really question is how. Microsoft had basically nothing to do to support Objctive C, they got everything for free by using Clang as the front end compiler. Apple has not yet I believe made available the source code of Clang that compiles swift so will Mcrosoft wait for that to happen? Or will they implement their own support of Swift in Clang knowing that an implementation already exists (and I believe that Apple will open source it at some point)? I don't really see Microsoft implementing itself support for Swift given that the language is still in moving shape and that Objective C is still heavily used by iOS developers.

[... without nowhere in its slide a mention indicating where Clang comes from or even a link to Clang/LLVM project web site]

They didn't because everyone in that room are professional developers who don't need (or want) LLVM to be defined to them. Just as they don't want or have the remotest need for them to post a link to the LLVM site (?!). Nobody there would need this, this is silly, and besides, it's a google search away. Anyways, the main thing is your mistaken judgements in the first place, see Bright's response.

Can someone please answer me this question. After I compile objective-c would I be able to use it to build any .net application (WPF desktop application for example) or would that only work with Universal App on Windows 10?

I would like to build a Windows (not mobile app).And I want to use NSDictionary NSKeyedArchiever inside it to be compatible with my existing OS X app that works with images,is it possible ?(I understand that AppKit is not implemented can I mix windows development with foundation objects ?)