What in the world are you talking about? Apps in Xamarin can be as much as 10mb for a full app. Its linker is smart and knows not to bring in stuff it doesn't need. If you don't, it's around 40mb.
I'm talking about releasing a cross platform app for Windows, Linux, OSX, Android, and iOS, and the differences between Java/C# and C.
To be fair I haven't tried to release an app for Windows/OSX from Xamarin but my understanding is that it requires the .NET or Mono frameworks which on most computers is a 100 to 200 MB install.
For Java you're for sure going to have to download the JRE. When you start the app it eats gobs of memory.
Maybe it's changed but even Xamarin itself requires Mono to be installed, this is the kind of shit I'm talking about, you should download the app, drag it to applications, done. Or on Windows click Next a whole bunch of times.
Even the monstrosity that is XCode is a one drag install.
From a platform perspective, Qt is good for all the desktop environments, but for mobile, .NET/Xamarin is the way to go.
From a language perspective, why in the world would you want GUI code in C or C++? Both languages make it very easy to shoot your foot off and have no idea what happened. However, C can be very elegant if used for the right reasons. C# is safer, but also not perfect. That's where F# comes in. :)
I actually had a super hard time with F# and XAML, this was back in F# 1.0/1.1 days.
While not strictly C, ObjC/UIKit is a helluva language for doing GUIs.
I actually don't like GUIs in C++/Java, or C# because it's far too restrictive and you spend all your time making the class hierarchy happy and typing boiler plate rather than getting stuff done.
ObjC is a beautiful mix of scriptyness and performance / low memory utilization. If ObjC is too slow, C is right there, and if it's too complicated for C add in a little C++. My typical mix is usually about 90-95% ObjC, 5-10% C, and 1% C++.
I love that if you know an object supports a method you can just cast to id and call it. If an object is missing a method, you just add it. If a base class is stupid, you override it.
Java/C# are total pieces of crap in this regard, although C# is far better for having extension methods.
In recent experiences, .NET runtime is faster in most situations, but sometimes Mono can be faster than .NET. It all depends on what you are doing. In extreme cases, .NET is usually ahead. You also have to account for the JIT time. It's after the JIT that should matter.