4 ms·
If it has been a few years since you looked at C# or F#, it may be worth a look again now. Lots and lots of optimizations have been added in the last 5 years,
by gameswithgo 5y ago
If it has been a few years since you looked at C# or F#, it may be worth a look again now. Lots and lots of optimizations have been added in the last 5 years, and you can even use SIMD intrinsics directly now. By some measures C# is now the best overall performing garbage collected language (Such as The Benchmark Game)
- Someone1234 5y agoOne of the biggest things was the addition of Span<T> and Memory<T>, and their usage in underlying types within the .Net framework. While C# always had the ability to use raw pointers, these two types allow you similar performance characteristics without unsafe blocks (and frankly are near idiot-proof instead of being a giant foot-gun with pointers to managed types). https://docs.microsoft.com/en-us/dotnet/standard/memory-and-spans/memory-t-usage-guidelines https://docs.microsoft.com/en-us/dotnet/standard/memory-and-...
- Thaxll 5y ago"By some measures" By some other measure it's not, out the three fastest: Java/C#/Go they're all pretty much as fast.
- manigandham 5y agoAdd in the massive standard library, project types, and overall productivity and it's the best platform available now. I'm working in production projects across all 3 languages now and Java and Go are way behind when it comes to producing a polished product as quickly as possible.
- Thaxll 5y agoC# is not even close to Java in term of libraries.
- NicoJuicy 5y agoWhich are missing? :) There are currently 244,641 libraries through nuget https://www.nuget.org/packages https://www.nuget.org/packages Ps. You can use libraries from f#, c# and VB.net. So as a .net developer, your statement doesn't make any sense. You could have mentioned the different frameworks. But there is interop through the CLR between languages.
- pionar 5y agoEh, I've been a .net developer for almost 15 years. The parent post is correct that the third-party ecosystem (especially OSS) is sorely lacking in quality. Like look at logging - logging in .net is SO anemic. Even with third-party libs, there are so many features missing that have been in java libs like slf and log4j2 for years, yet we have nothing close in .NET. Hell, you could just pick a feature from spring and compare to what's available in .NET ecosystem, and you'll be sorely disappointed.
- ceesharp 5y agoCan you give an example what is missing in e.g. Serilog?
- pionar 5y agoThe ability to change logging levels of either a category or all categories at runtime is one. Being able to monitor levels via an administrative endpoint. A decent rolling file implementation that can compress the archived files. These are all things I've had to implement (on top of serilog, no less) in the past year. log4j2 has these out of the box.
- gokhan 5y ago> The ability to change logging levels of either a category or all categories at runtime is one. LoggingLevelSwitch? > Being able to monitor levels via an administrative endpoint. I wrote actuator endpoints for this one, was not hard but yeah. > A decent rolling file implementation that can compress the archived files. serilog-sinks-file has FileLifecycleHooks?. There's OOB serilog-sinks-file-gzip but you can also implement your own.
- xtracto 5y agoI programmed professionally in .NET around 2003 with the initial versions. I liked it a lot and over the next years I tried to keep up to date about it on my spare time (I remember reading about LINQ development, the amazing CLR improvements, etc), all while I developed in Java, ruby and nowadays TypeScript. The problem I see with .NET now (I did some tinkering on it via Unity) is that even though some of it is "open source", Micorsoft's grip is still pretty tight on it. Or at least it feels like that. Given Microsoft's history I find it very difficult to "commit" to using the .NET framework for something real, because I feel I will be bitten back with the 'proprietary' aspects of it as soon as I go to production. It's a sunk cost that I cannot afford. And it is not personal 'hatred' or anything given that I use VSCode as an editor and TypeScript itself comes from Microsoft. I wish Microsoft would donate .NET to some 3rd party open source foundation (like what happens with all Apache projects, or LibreOffice, the MariaDB foundation, etc).
- oaiey 5y agoModern .NET is legally owned by the .NET Foundation. It is MIT/Apache licensed with the exception of some debuggers in VS Code (which propably conflict with VS itself). Granted, the .NET Foundation is not the Apache, Eclipse, Linux or CNCF Foundation and it is dominantly financed by Microsoft, but there are relative important peers like AWS or RedHat involved.
- hu3 5y agoPlus now we have Jetbrains Rider. So there's an excellent non-Microsoft IDE alternative.
- gtsteve 5y agoRider is no joke. If you haven't used it or gave up on it a few years back, give it a shot. There are a few things it can't do like attach to managed modules hosted in unmanaged processes but it's a joy to code in.