C
C#6mo ago
Draaxus

Am I understanding .NET Framework correctly?

1st year CS student writing a report on why I choose C# over other languages in game development, in my research I keep seeing .NET Framework brought up as an advantage for C#, am I correct in understanding that this is kind of like Java's JVM and libraries in Python but like... all the libraries in one? Sorry if this sounds stupid.
5 Replies
Jimmacle
Jimmacle6mo ago
.NET Framework is outdated $.net
MODiX
MODiX6mo ago
.NET is a marketing term referring to a family of products, consisting of two different lineages. The .NET Framework ("netfx") lineage was introduced in 2002. This lineage runs only on Windows. Its most recent release is .NET Framework 4.8.1. While this lineage is still supported, very few new features are being introduced into it. Devs are encouraged not to target .NET Framework for new app development. The .NET Core ("netcore") lineage was introduced in 2016. This is a modern development platform which runs across many different OSes. The .NET Core 3.1 product was the last version in this lineage to bear the ".NET Core" name; and starting with the next release (.NET 5), the product was renamed to simply ".NET". The most recent release in this lineage is .NET 7. This lineage is where new features are actively being developed. Devs are encouraged to target .NET for new app development. Nowadays, the ".NET" moniker usually refers to recent versions of the netcore lineage. When you create a new app targeting .NET (not .NET Framework!), you're targeting this newer, modern, cross-platform API surface and runtime.
Jimmacle
Jimmacle6mo ago
but besides that, the concept of a "standard library" like you're talking about is not unique to C#
Draaxus
Draaxus6mo ago
I see, thank you! Ooo this helps so much! Categorising everything that falls under .NET is exactly what I was looking for to understand this! Thanks so much man!
DaVinki
DaVinki6mo ago
A little irrelevant from the question but on topic with your report, you could talk about the System.Numerics namespace and its types that abstract hardware acceleration to make it super easy to write accelerated code once and use anywhere. If a language doesn't provide abstract hardware acceleration, you'll find yourself rewriting code multiple times to try and target the highest available SIMD instructions available in an ISA. Other languages are following suit with this like Java's Vector API and Rust's std::simd module, although .NET looks like it's had the most support for this. It's not experimental or in an incubator and AVX-512 is officially supported as of .NET 8