I would like to see someone from Apple on these native talks speaking about Objective-C or any one of the native languages on the Mac. Being a Mac and Windows developer I would love to hear about API design decisions and much of the thought process behind both Mac and Windows languages in one session. In many ways I see Mac as being ahead on a native front and Windows being ahead on a managed front but I am by no means an expert. I would love to see this explored further. Thanks.
@AceHack: I couldn't agree more. One compares Cocoa and Cocoa Touch to say MFC and there's a massive disconnect when it comes to investment over the past 5 years. The MFC ribbon stuff was nice, but MFC still relies far too much on macros and other bits of outdated (from a C++ 11 perspective) plumbing. On Windows I find that unless one is using C++ purely for Model code, say a core game or financial calculation engine, then one very rapidly runs into inadequate native library support from Microsoft, particularly for front end stuff. Sure you can 'shell' out to managed code for your UI, but that comes with its own taxes and frankly I don't see why we necessarily need to: it's not a place we have to go on either OS X or iOS.
This is not to dis the MFC team, but as someone who has used MFC daily for 17 years now, over the last 10 years the enhancements to MFC feel like they've been made with whatever spare change Microsoft found down the back of their sofa.
I suspect it's going to take Microsoft a couple of years moderate their, until very recently prevalent, messaging that ".NET is better" (I simplify), then add a couple more years for the ISV market to really get it. It maybe that we need the 'kids' to start questioning any grey-beard assumptions regarding managed codes suitability for a given task.
@dot_tom: I always thought MFC would have been dead since I was alive?! Can't even believe that this crap is still in use... sorry
@dot_tom with the recent release of iOS 5 and auto ref counting by the compiler, (I'm not talking about smart pointers) Apple has a really nice story around memory management in my opinion. Even before the auto ref counting having nicely named functions to denote ownership was really nice. I'm glad to hear I'm not the only one who really loves Microsoft but also has a fond place for Apple. I almost felt like a traitor.
@Luna: MFC *should* be dead. I use it, but I wouldn't if it were my decision.
What I kind of missed on the discussion was the reference of all languages that would be considered managed but actually compile to native code, like Delphi, Modula-3, Ada, Haskell, Ocaml, just to cite a few examples.
Maybe we could get some videos in "going native" that talk about these type of languages, which blend programmer productivity with native code generation.
What's the answer to the question of the most complex main stream language?
I looked up all spec papers and it's difficult to tell, because you can't really make any conclusions based on the page count. There are a lot of comments in the specs which can falsify the results.
Another problem is, that you can't get the C++ spec for free. The ISO bastards want $30 for it, so i had to look up a draft version.
Anyways. Here are the results of my findings. Be warned, that the page count doesn't exactly reflect the language complexity.
C# : 530 pages
Java: 640 pages
C++: 1271 pages
The obvious answer seems to be C++ doesn't it, although the C++ spec has the most verbose comments and descriptions in it, too.
@n0x30n: I think Herb mentioned in the GoingNative conference, I think it was Java.
But I see the matter a little bit different.
Java is the least complex "language" when judging about the code itself. It has almost no expressiveness one can think about, lacks everything that is useful (except for Java 8 which seems to catch up slightly). Thus it is easy to learn on the surface, and this is why it is used so widely. But once you get to the iron, Java is uncontrollable, for anyone... So I know that Java internally is extremely complicated and in fact it is so complicated that most vendors of large software system in Java just have no god damn clue if their software is working at all. The NetBeans principal developer for instance says that it is pure luck if NetBeans runs correctly. I think that says it all... And we won't open the box which gives us access to multithreading in Java would we?
C# is much more expressive than Java and thus more complicated to learn on the surface. But complexity stops right there. NET itself is an evolution of Java and they didn't repeat mistakes, all except they have done new ones. But usually, you can get complex c' software to work correctly without doing rocket science...
C++ is by far the most complex language on the surface. The learning curve is extraordinary and may well take years of full time work to acquire only the "working set" of skills. I would even go as far to say that most people are not able to manage a large subset of this complexity in a lifetime. C++ really comes close to brains limitations... But, once you got that it is all you need since there is no magic being behind the scene whose character and behaviour you have to predict in order to say what it will do. Programs you write just work as you write them.
@Luna: I totally agree and i just watched Herbs video about C++, where he said, that all three languages are roughly on par with each other in terms of complexity.
His conclusion is also based on the page count of the spec papers, which is strangely enough a little different then mine.
I guess this shows, that this isn't really an accurate form to measure the complexity of a language. I think that your assessment of the three languages is pretty much on point and most people would agree with it just by experience.
To be fair to C++, I believe the spec includes (large) sections on the standard library, not just the langage itself.