206 karma · joined January 15, 2011
That also means you can get in big trouble if the object that got captured was deleted, ouch.
Another option I was surprised they didn't mention was to run GC.Collect periodically to clear out gen2.
Besides, a compiler is just a compiler. Maybe someday down the road they will start producing their own ISA, but until then even if they're making their own ARM chips it's really hard to get it to do special Mac/iPad-only magic.
What I do know is that Clang was funded by Apple almost from the start, it was engineered right from the start to be more than just a compiler but something you could plug into the IDE as well (as the latest XCode demonstrates, it has completely unbeatable C insight).
LLVM itself is also far more extensible than GCC, just look at the slew of new-ish (last 3-4 years) of projects that have launched using LLVM. Have you heard of any such projects being launched with GCC? I can't think of any (maybe if they did, they weren't proud of it).
Apple didn't choose Clang over GCC for political reasons, a lot of Clang devs are actually on the Apple payroll.. and Clang is just a far superior compiler to GCC architecture-wise -- it just needs a few more years to catch up to full C++11 support.
The fact of the matter is that unless you're starting a new project you're probably tied to your old version of the compiler, to upgrade to something newer would require weeks of updating the toolchain.
Hopefully they cover the theory behind Haskell as much as the practical side of it.
That being said Mono supports System.Windows.Forms (the poor predater to WPF) so there's always that. Or they can code against the (now dying?) Silverlight which actually works on Linux ala Moonlight.
But really, the best user experience is the one that feels the most native. So on Mac that would mean building a Cocoa client, on Windows WPF, on Linux Gtk/Qt (but then again who actually pays for Linux apps?)
Going with a one tech that supports it all just has a higher probability of having something that supports everything poorly, instead of something that supports one thing very well.
Plus American education is in general less rigorous than the equivalent-year Russian education, and seeing as how kids in Russia learn some English in school, it's a much easier transition from Russia to U.S. than vice versa.
The struggle then is purely a social one, kids in the U.S. don't have a belief of camaraderie, whereas in Russia a classmate would rarely get someone else in trouble casually, this happened routinely in U.S. schools. Plus of course, insert all the usual teasing about not understanding or knowing the language, being a communist/capitalist, etc.
Don't like the arg:type syntax, too used to python's : symbol meaning begin new block. Maybe it got that from functional languages that use arg:type?
The real problem is that nobody will be using this, since there's no libraries for it (can't even use GObject C libraries because not everything is available at runtime, e.g. you can't tell what non-virtual member functions an object has available). It compiles to C and supports plain pointers, plain function calls, so why not have a feature that scans C headers and automatically generates bindings out of it?
I see absolutely no reason to use this over Vala, which has far more language features and has the same "compiles to C and doesn't have VM bloat" advantage.
Or better yet there should be a way of saying "use this buffer next time you update the screen" (and don't block during vblank time).