Jupyter für .NET. "Wie in Python"

Vor einigen Monaten hat Microsoft in .NET über Jupyter gesprochen . Zu diesem Thema gibt es jedoch nur sehr wenige Aktivitäten, und das Thema ist sehr interessant. Aber woran kann man denken? Ich entschied mich für eine bequeme Ableitung der Klasse Entityaus der symbolischen Algebra-Bibliothek:







Sieht cooler aus als in Python. Es ist einfach gemacht, es macht viel Spaß. Ich lade Sie unter den Schnitt!



Über Jupyter



Es ist wie eine IDE zum Erstellen interaktiver Notizbücher. Anstatt den gesamten Code in vertrauten Umgebungen auf einmal auszuführen, führen Sie ihn hier in Blöcken aus und speichern die Zustände der Variablen. Für Recherchen und einfache Skripte ist es sehr praktisch, „etwas zu berechnen“.



Über dotnet / interaktiv



In diesem Projekt können Sie Dotnet nur in Jupiter einbetten. Das heißt, Sie können buchstäblich schreiben



UND die Ergebnisse des Codes sofort abrufen.



Und einige der Chips funktionieren sofort





Über AngouriMath



Es ist eine relativ kleine symbolische Algebra-Bibliothek für .NET zum Arbeiten mit mathematischen Ausdrücken. Natürlich können Sie mit mathematischen Ausdrücken in einer Zeile arbeiten, aber dies ist nicht immer bequem / schön.



Alle mathematischen Ausdrücke erben auf die eine oder andere Weise von einer Klasse Entity, deren Methode Latexiseeine Zeichenfolge zurückgibt. Es bleibt also nur noch zu rendern.



Latech einbetten



Wir haben die Möglichkeit, unsere eigenen Schlussfolgerungen für unsere Typen zu registrieren, was ich auch tue:



let magic() =
    let register (value : ILatexiseable) = $@"
            <script src='https://polyfill.io/v3/polyfill.min.js?features=es6'></script>
            <script id='MathJax-script' async src='https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js'></script>
            \[{value.Latexise()}\]
            "

    Formatter.Register<ILatexiseable>(register, "text/html")


(Habr unterstützt aus irgendeinem Grund F # nicht.)



Das heißt, wir registrieren einfach, dass der Typ ILatexiseableim HTML-Format angezeigt werden soll, und der Code selbst wird von unserer Funktion generiert. Zum Rendern habe ich MathJax genommen, obwohl es wahrscheinlich sinnvoll ist, das js-Skript zwischenzuspeichern, aber dies ist für zukünftige Updates.



Nun, das ist alles, jetzt werden alle von dieser Schnittstelle geerbten Ausdrücke wunderschön gerendert. So sieht es in C # aus:







Was genau ist hier los?
1. extension- ToEntity(),

2.

3.





Da Jupiter für kleine Codestücke gedacht ist, die keine Designanforderungen erfüllen müssen, ist F # dafür besser geeignet. Wie aus dem Screenshot am Anfang des Artikels hervorgeht, wird es daher auch unterstützt. Zum Beispiel sieht die Lösung der Schulgleichung folgendermaßen aus:







Zukunftspläne



Ich bin ein sehr großer Fan von .NET, aber ich liebe Jupyter auch sehr. Daher hat mich Interactive sehr gefreut, und ich habe mich beeilt, AngouriMath für die Anzeige von Ausdrücken in LaTeX interaktiv zu unterstützen. Aber weiter - interessanter. Ich denke darüber nach, etwas zu tun Entity.Plot(), das sofort die Grafik der Funktion anzeigt. Für einfache Anwendungsfälle wird ein Stück wirklich benötigt, denke ich.



Wenn Sie versuchen möchten, ohne etwas von dem Notwendigen zu installieren, können Sie hier herumstöbern: (Alarm: Aus irgendeinem Grund dauert das Laden lange, Sie müssen warten)



Vielen Dank für Ihre Aufmerksamkeit! Das ist eine kurze Anmerkung.



Links



1. Jupyter - eine praktische Browser-Umgebung für interaktive Programmierung

2. .NET Interactive - die sehr brillante Sache, dank der Sie das Dotnet in Jupiter verwenden können

3. AngouriMath - eine mathematische Bibliothek, für die ich einen Wrapper für Latech geschrieben habe

4. MyBinder - eine Demo für die Faulen



All Articles