7 ms·
Lots of very cool stuff here (AOT, Aspire, etc.). .NET has been held down by the image of its early days, but it has become a pure joy to work with recently. T
by financltravsty 3y ago
Lots of very cool stuff here (AOT, Aspire, etc.).
.NET has been held down by the image of its early days, but it has become a pure joy to work with recently. The improvements in tooling and ergonomics have made it a replacement for Go in our org (we migrated from .NET Core 3.1 to Go back to .NET 6 recently).
- menacingly 3y agoWith consistent, reasonable-by-default threading abstractions baked in
- bmitc 3y agoAre those new? What are they by name?
- leosanchez 3y agoI think the parent comment is talking about System.Threading.Tasks. I might be wrong though.
- bmitc 3y agoOh, I see. I was hoping for something new. I keep on hoping some sort of BEAM-like (from Erlang) process gets added to .NET.
- menacingly 3y agoI have considered the that, but I ultimately decided they work because they are a fabric of what that ecosystem _is_, not what it has. It's the same reason two sites that are more or less the same will have entirely different communities. There isn't any reason you couldn't implement the one on the other, but it's not in the core substance.
- valcron1000 3y agoIt was tried and the dotnet team decided to drop it: https://github.com/dotnet/runtimelab/issues/2398 https://github.com/dotnet/runtimelab/issues/2398
- custard42 3y agoinvestigations continue: https://github.com/dotnet/runtime/issues/94620 https://github.com/dotnet/runtime/issues/94620
- zengid 3y agoYou might be interested in Orleans: https://learn.microsoft.com/en-us/dotnet/orleans/overview https://learn.microsoft.com/en-us/dotnet/orleans/overview
- bmitc 3y agoOrleans is definitely interesting, but I have never looked into it much because it's my understanding that it is a cloud-only solution, in that it requires some Orleans or Azure service. Is that correct?
- jen20 3y agoNo, you can run in standard processes - there's even documentation [1] about hosting it in Kubernetes. [1]: https://learn.microsoft.com/en-us/dotnet/orleans/deployment/kubernetes https://learn.microsoft.com/en-us/dotnet/orleans/deployment/...
- Rapzid 3y agoFurther to the other reply you can run it alongside asp.net; one process can be an Orleans node and and an asp.net server.
- neonsunset 3y ago.NET has had first-class parallelism and async/await since around .NET Framework 4.0 release which was...13 years ago huh. There have been many improvements in the underlying runtime since then though. A garden variety of keywords is async/await, TPL (tasks/futures and structured concurrency) and PLINQ (Rust's Rayon).
- orra 3y agoYou're right the basic support's been around a long time. However, originally you always had to use Task methods. The pleasant async/await keywords didn't arrive until C# 5.0, in 2012. Admittedly that's also a long time ago.
- WorldMaker 3y agoIn addition to the base TPL (System.Threading.Tasks), IAsyncEnumerable<T> in recent .NET versions has deepened and simplified even more useful concurrency patterns (Async Generators), especially when paired with Ix.NET (System.Interactive.Async) which adds a lot more LINQ/PLINQ operators, many of which are designed to intentionally mirror ReactiveX.NET (System.Reactive), the even older but just as useful push-based (IObservable) relative of IAsyncObservable.
- geitir 3y agoWow that’s a lot of busy work
- davewritescode 3y agoI just starting using .NET professionally very recently and coming from Go and Java a lot of the .NET platform is just downright pleasant.
- haolez 3y agoAt least until it gains an immense market share and Microsoft starts monetizing it again. They've already tried in .NET Core 7, no? I'm staying away for now.
- endianswap 3y agoCan you share any details about .NET Core 7's monetization? I couldn't find anything on Google.
- haolez 3y agoI think it was related to tooling. Something about hot reloading. Can't remember the details.
- Smaug123 3y agoYou're thinking of https://github.com/dotnet/sdk/issues/22247 https://github.com/dotnet/sdk/issues/22247
- 9cb14c1ec0 3y agoIt's all open source and free, on Github. I've used .NET for about 10 years now, and the only money it has cost me is a few third party libraries that I couldn't find good open source competitors for.
- haolez 3y agoBut you've never seen it with a market share of more than 90%, which could happen eventually. It's a matter of incentives and those play against you.
- deleted 3y ago[deleted]
- Salgat 3y agoMicrosoft owns the .NET trademark but the language and source code for the current runtime is freely forkable and usable by any person/company who wants to do their own implementation. It's no different than the situation with Oracle and Java.
- Thaxll 3y agoBig difference is that Go is stable and conservative, net core keep adding a billion features every release. Looking at some net core 2/3 stuff and now to see how many things changed. Good luck with your code base in 5 years when someone decide to add all the new stuff.
- deleted 3y ago[deleted]
- chrisandchris 3y agoI don't know Go that much, but the part about .Net is so untrue. First, C# was published in 2001, while Go was released in 2009. So there's 8 years of "more stuff". Also (see in comments too), upgrading .Net is very easy. There are man not-to-small codebases can be "easily" upgraded from .Net Core 3 to 8 without any hassle. Backwards comptability was always baked into Microsofts thinking. .Net 7 and 8 did also (IMHO) not contain that many groundbreaking features, just some "smaller" stuff.
- Thaxll 3y agoDo you want to compare the number of features added between go and c# in the last 15 years? Just a single major release of C# added more stuff than probably the last 15 years of Go. I'm not saying Go is 100% right in that, but it's much more conservative about stuff added into the language.
- HackerThemAll 3y agoOf course, they conservatively added the most idiotic way of formatting dates as strings (while knowing other methods exist). And, while the whole bunch of other languages would call a method string.startsWith("a"), they use hasPrefix. This language is a mix of half-baked concepts and utter trolling. If I have to learn a lang with an awkward syntax, I'd prefer Rust, Julia, Erlang, Elixir or Haskell. Go is no-go. It's not even widely used at Google, its creator. So no, thanks.
- 3y ago
- gettodachoppa 3y ago> .NET has been held down by the image of its early days, but it has become a pure joy to work with recently People have been saying that for the past 4 years. As someone who's never used .NET but develops embedded apps for Linux, I had high hopes for it become the best story for crossplatform development, it still feels like the crossplatform is held by ductape. It's still Xamarin for mobile, Avalonia (a 1-man project) for desktop Linux as the only choice, 2 confusing different UI frameworks (WinUI vs MAUI). They don't take this as seriously as I'd hoped. When they made it open-source and cross-platform 6-7 years ago, they should've thrown enough manpower that within 3 years (or even 2, this is Microsoft with endless coffers) it was unquestionably the best development option for nearly every scenario. Additionally, it's my understanding they don't release proper debuggers on Linux? I'm not gonna install Visual Studio just to debug my .NET app bro.
- neonsunset 3y agoWhen it comes to the OSS aspect itself, debugging experience is not the strongest suit but if you overlook it - both Linux and macOS are very well supported by either VS Code / or any other LSP compatible editor + Omnisharp (or DevKit nowadays I guess?) or Rider (which is commercial but is often even better than Visual Studio, definitely faster too).
- desi_ninja 3y agoMAUI is built using WinUI. It is same platform.
- oaiey 3y agoMaui is built on top of winui, Android ui and iOS UI. It just looks like WPF, which again influenced winui
- mjevans 3y agoWindowing and Widgets; those are the two things that always seem to be the biggest issue for cross-platform apps that should be trivial if the groundwork were in place. I solidly blame MS for shipping something like 10+ of their own frameworks and never E.G. including QT or anything else open. Apple's just as bad, if not actively worse, for relegating even open 3D modeling languages to second class.
- whoknowsidont 3y ago>.NET has been held down by the image of its early days, I have been in .NET since 2009. I don't what would lead anyone to replace Go with .NET? That seems like it's asking for a lot of problems you previously did not have. Can you expound on your decision?