ciplogic,
You clearly know your material. Your points are backed with evidence. But:
- You are passionate about Mono/Xamarin/.NET/C#, which is great, but many of your statements seem highly slanted as a result. I'm biased as well, but I'm trying to be reasonable about it, acknowledge some C#/Mono advantages etc.
- Mono's strength is runtime flexibility and integration with non-Windows OSs. The core VM isn't quite as optimized as the official Microsoft one, it runs a little slower. You don't use it to win benchmarks, you use it because you want to use C# on a non-Windows OS. That's not necessarily a "poor man's" tool, but it is what it is. RoboVM occupies a similar spot in the JVM space: people don't use it because it runs server apps faster, they use it to target OSs like iOS that the official Oracle runtime doesn't support.
- You may have some points on Java memory. The Java VM, and probably the Microsoft VM, have undergone too many iterations by different super serious team to just waste large amounts of memory for no reason. I can believe JVM made a different set of trade offs. For example, memory alignment generally trades memory efficiency for runtime efficiency and different VM teams optimize for different targets. But when you claim that Java wastes 10x as much memory as .NET, that just is too far outside of reason. Even when you cite Guava memory wastefulness, I have never directly used that particular Guava API, but I suspect that the Guava guys just made different trade offs and optimizations rather than just wrote a horrible product.
- You quote Xamarin benchmarks. Those guys are known for making completely deceptive skewed benchmark tests. They aren't a neutral party at all. Almost anyone can cook up some benchmarks and cherry pick results. They are notorious for that.
- I believe you are downplaying the major defficiencies of C# as a language. You are too gung ho about the related technologies to see its flaws. I think even many Microsoft people are completely aware that C# is quite dated, which is why they are priming F# for prime time when the mass audience is ready.
- Some of the reverse is probably true, I'm not familiar with PInvoke, but I suspect you are right that .NET has advantages in that area. Even I will give the Mono team credit for integrating their toolset into other ecosystems like PlayStation Vita much better than most other toolsets.
You clearly know your material. Your points are backed with evidence. But:
- You are passionate about Mono/Xamarin/.NET/C#, which is great, but many of your statements seem highly slanted as a result. I'm biased as well, but I'm trying to be reasonable about it, acknowledge some C#/Mono advantages etc.
- Mono's strength is runtime flexibility and integration with non-Windows OSs. The core VM isn't quite as optimized as the official Microsoft one, it runs a little slower. You don't use it to win benchmarks, you use it because you want to use C# on a non-Windows OS. That's not necessarily a "poor man's" tool, but it is what it is. RoboVM occupies a similar spot in the JVM space: people don't use it because it runs server apps faster, they use it to target OSs like iOS that the official Oracle runtime doesn't support.
- You may have some points on Java memory. The Java VM, and probably the Microsoft VM, have undergone too many iterations by different super serious team to just waste large amounts of memory for no reason. I can believe JVM made a different set of trade offs. For example, memory alignment generally trades memory efficiency for runtime efficiency and different VM teams optimize for different targets. But when you claim that Java wastes 10x as much memory as .NET, that just is too far outside of reason. Even when you cite Guava memory wastefulness, I have never directly used that particular Guava API, but I suspect that the Guava guys just made different trade offs and optimizations rather than just wrote a horrible product.
- You quote Xamarin benchmarks. Those guys are known for making completely deceptive skewed benchmark tests. They aren't a neutral party at all. Almost anyone can cook up some benchmarks and cherry pick results. They are notorious for that.
- I believe you are downplaying the major defficiencies of C# as a language. You are too gung ho about the related technologies to see its flaws. I think even many Microsoft people are completely aware that C# is quite dated, which is why they are priming F# for prime time when the mass audience is ready.
- Some of the reverse is probably true, I'm not familiar with PInvoke, but I suspect you are right that .NET has advantages in that area. Even I will give the Mono team credit for integrating their toolset into other ecosystems like PlayStation Vita much better than most other toolsets.
Comment