Hacker News new | ask | show | jobs
by nickspag 2739 days ago
I started ML work in python coming from a .NET background. To echo one of the other comments here- I believe one main reason is due to the iterative nature of data science. You have to sort of re-build completely every time you make a change in .NET. There isn't much of a notebook concept in .NET- a running engine you can query with additional commands/cells/etc, which is beneficial. As well, real-world data feels easier to work with in a more forgiving environment (non-static typing, etc) like Python. However ML.NET is a cool endeavor and as the .NET data prep libraries get more mature we may find some more production benefits from the very typing/compiling system that, while making it difficult to iterate in, provide more stability in the wild.
2 comments

Check out https://notebooks.azure.com/.

Fsharp is scriptable and has jupyter kernel...

A proper repl seems the first step to start building such interactive/iterative tooling; F# has one so maybe that is a better start than C# for this?

C#.NET Core suffers (as far as I know) from this;

https://stackoverflow.com/questions/47394231/csharpscript-us...

I think Mono has a solution, but as far as I know .NET Core basically is unusable for scripting because of this for C# which makes the kind of scenario you want basically impossible from the get go.

It is a bit weird not more attention is given to it given so many people ache for an interactive C# environment, especially for this purpose, but also for faster iteration with Xamarin on iOS/Android etc (all of my colleagues would save a lot of time on development with this for Xamarin mobile dev especially).

If that has been fixed, there is still the lack of libraries but that and the rest of what is needed is at least not basically impossible to solve by mere mortals.

Visual Studio has a C# REPL sice version 2015.

Then there are Xamarin Workbooks, like Swift playgrounds but for .NET.

That's not the same thing though; to be able to actually REPL a complete app or stick in an interpreter where you need it. I tried workbooks and it's more a toy (like Swift playgrounds by the way). It helps for sure, but when we are working on bigger existing apps, we want to plug in REPLs in particular places and iterate. Or generally iterate; both do not fit with the VS REPL or Workbooks.
In that regard nothing matches commercial Common Lisp environments or Smalltalk.
I agree with you, but having the Mono interpreter (which does not have the same issues) fully work for mobile (Xamarin Android/iOS) and desktop (it is with --interpreter) and web (it is with Blazor) would make life easier for this kind of mainstream development.