My time learning .NET with C# in the past has mostly dwelled in experimentation by creating sandbox solutions. Though it made it easy to scale it was also overkill for Hello World-like projects — the only exception would be ASP.NET. A more ideal way be to use something like Jupyter notebooks, but .NET was not built for that in it’s original incarnation as the .NET Framework.
Jupyter notebooks are an interactive computing environment that enables writing code and presenting it’s output in a document-like format. It enables sharing of research, particularly in the statistics and machine learning fields. Jupyter notebooks were originally designed for Python and were formally known as IPython Notebooks until the project removed that dependency and made the whole system modular and rebranded.
Such a concept requires treating the .NET as a scripting language too but it was meant for developing Windows desktop applications and servers. Scaling it outside of Microsoft’s intended usage proved problematic in the past even for platforms like Mono. Mono was incredibly slow and inefficient when it came to embedding because it was not official, at the time, and the Framework was the only source of reference. Sims 3 is an example of this very problem.
But .NET Core challenged this perception. It started off as a slim spin-off of the Framework. A rewrite that is open source, modular and cross-platform. It’s modular design meant it eventually became the replacement as it’s API coverage starting to catch up to the Framework by 3.0. That expanding API coverage allowed for machine learning, microservices, scripting, mobile and game development. It’s slim design meant it was possible to work with ARM at a general purpose level. It’s now been rebranded as .NET 5.
The scripting capabilities were introduced with Try .NET & .NET Interactive, respectfully, along with C# 9 bringing top-level coding, removing the need for entry-point method, classes and namespaces. But .NET Interactive is the true winner here in that it brings the platform to Jupyter notebooks natively through VS Code. These “notebooks” lower the barrier of entry in learning the platform by removing the normal Visual Studio from the equation entirely. This is also really useful for machine learning development and research with ML.NET.
It is a great time to be or become a .NET developer.