Hacker News new | ask | show | jobs
by miguelrochefort 3769 days ago
Swift isn't a significant improvement over C#. Also, keep in mind that C# benefits from the whole Microsoft ecosystem, which includes Visual Studio.

Beyond the language, what's even more important is the application model. That's where frameworks like React Native have the edge. This might change if Microsoft upgrades Xamarin.Forms into full-blown Universal Windows App support (think WPF on iOS and Android).

4 comments

You might just be looking at the language from a syntax perspective. However the two are very different in the way that you compile and run them. In C# the code is translated into a custom bytecode (IR) and then the CLR is used to execute that and manage the memory through GC.

In Swift's case it compiles down to native processor code instructions and can have optimisations applied ahead of time. This allows the app to run faster than a VM+JIT would do and therefore longer batter management. The overhead of the runtime is a lot lower since memory is ref counted and doesn't need to run GC periodically.

C# has always had support to AOT to native code since the early days via ngen. The only issue was that more effort was spent in the JIT compiler and ngen requires dynamic linking.

C# is compiled to native code on Windows Phone since version 8.

The C# extensions for Singularity (Sing#) and Midori (System C#) generate static binaries. Work which served as starting point to MDIL on WP 8.x and .NET Native.

The new .NET Native compiler even exposes SIMD.

Mono also supports AOT compilation since a long time.

As always language != implementation.

You are correct but part of the work being done to get .NET native working is the aot compilation. https://blog.rendle.io/what-ive-learned-about-dotnet-native/
.Net Core can compile AOT as well, and Xamarin already does that on iOS with its Mono runtime too.
ART also compiles down to native code. As for performance comparisons - last time I checked the benchmarks for Java were still faster than Swift.
> C# benefits from the whole Microsoft ecosystem, which includes Visual Studio.

Both good and bad. Visual Studio isn't cross-platform, for example.

Well, Visual Studio Code[1] is, so it may be coming in the future.

1: https://www.visualstudio.com/en-us/products/code-vs.aspx

They're entirely different products, Code is built from the ground up. So I'm not sure it makes a cross-platform Visual Studio more likely.
I would say the fact MS is shipping products on Linux, considering their historical stance, makes it more likely, but your sentiment is probably correct in that it may not mean it is likely. Ten years ago I would have laughed at the idea. Today, I have to think quite a bit more about whether it's likely.
I would not use the existence of an editor built on web technologies as opening the possibility that something as entrenched in Windows as Visual Studio would be leaping to cross platform.
How much RAM does a single hello world take in C#?

How much time does it take to create a thread in mono on my Linux VM?

How much does it cost a license for Visual Studio?

> How much does it cost a license for Visual Studio?

Free if your revenue is under $1m, then $40/month including CI, source hosting and issue tracker.

it's worth also asking:

How much does licensing a set of Windows keys run?

How does the .NET GC impact me versus Swift's ARC?

How much RAM does Visual Studio eat up after you've been coding for a while?

How slow, unresponsive or buggy is it these days?

of course there's "ecosystem creep"... If I'm going C# on mobile, I'll naturally be influenced to consider C# on the server... how much do Windows servers cost? and since they're a "first class citizen" on windows, what about SQL Server?

This was my thought. What is Microsoft's answer to Swift?
React Native is not even on the horizon.
What do you mean?