VSCode-blokka som skal konkurrere med Jupyter har én stor mangel

Vi har prøvd Microsofts Polyglot Notebooks - absolutt nyttig, men hvor blir det av Python-støtte?

Med Polyglot Notebooks kan du lage interaktive notisblokker med live kode. 📸: <a href="https://unsplash.com/@kellysikkema?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Kelly Sikkema</a> - <a href="https://unsplash.com/s/photos/notepad?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a> / kode24
Med Polyglot Notebooks kan du lage interaktive notisblokker med live kode. 📸: Kelly Sikkema - Unsplash / kode24 Vis mer

Microsoft har lansert Polyglot Notebooks, en såkalt "interaktiv notisblokk" for VS Code. Vi har prøvd den for å finne ut hva du egentlig kan bruke den til.

Denne typen interaktive notatblokker som lar deg blande tekst, bilder og live kode brukes av blant andre forskere, innenfor dataanalyse, finans, utdanning og mye mer. De kan også brukes av utviklere til å eksperimentere med kode, og til å dokumentere kode.

En interaktiv notablokk er et dokument med masse tekst, og så kan du sette inn celler i dokumentet med kjørbar kode.

Foran hver kodecelle finner du en "kjør"-knapp, og du velge om du vil kjøre koden i én og én celle – eller samtlige kodeceller i dokumentet.

Her har vi laget en notisblokk med tekst i markdown-format, litt HTML og noe JavaScript som tegner en graf. 📸: kode24
Her har vi laget en notisblokk med tekst i markdown-format, litt HTML og noe JavaScript som tegner en graf. 📸: kode24 Vis mer

Kodesnuttene i dokumentet ditt kan for eksempel hente data fra et API eller en database for å lage grafer, animasjoner eller andre former for visualiseringer.

Bland mange programmeringsspråk

En av de mest populære interaktive notatblokkene er Jupyter Notebooks, et åpen kildekodeprosjekt som har blitt nærmest en de facto standard innenfor datavitenskap (data science). Tradisjonelt har man brukt Python til å skrive kode i Jupyter-notisblokker.

Her er et eksempel på hvordan en typisk notisblokk i Jupyter kan se ut:

Slik ser Jupyter ut. I motsetning til Polyglot Notebooks kan du kjøre Jupyter i nettleseren. 📸: Jupyter
Slik ser Jupyter ut. I motsetning til Polyglot Notebooks kan du kjøre Jupyter i nettleseren. 📸: Jupyter Vis mer

Polyglot Notebooks for VS Code skal ifølge Microsoft ta interaktive notisblokker til et nytt nivå, ved at du skal kunne blande mange ulike programmeringsspråk i én og samme notisblokk.

Du kan for eksempel ha én kodeblokk i JavaScript ett sted i dokumentet ditt, og et annet sted en annen kodeblokk skrevet i C#.

Siden Polyglot Notebooks støtter Microsofts Language Server Protocol, får du den samme brukeropplevelsen som du har ellers i VS Code, med autofullfør, syntaksutheving og alt det andre du er vant til.

Ifølge Microsoft støtter Polyglot Notebooks følgende språk, og flere vil legges til etter hvert:

  • C#
  • F#
  • PowerShell
  • JavaScript
  • HTML*
  • Mermaid*
  • SQL
  • KQL (Kusto Query Language)

Paradoksalt nok støttes foreløpig ikke Python, som er nærmest standardspråket i konkurrenten Jupyter.

Del variabler mellom språk

Polyglot Notebooks i VS Code drives av .NET Interactive, som er en ny motor bygget på .NET-teknologi for å kjøre og redigere mange ulike språk interaktivt, og for å kunne dele variabler mellom dem.

Det siste betyr at du kan lage et notisblokk-dokument der du i én kodecelle gjør noen spørringer mot en SQL-database. Så kan du dele resultatet fra spørringen med en JavaScript-kodesnutt et annet sted i dokumentet, som igjen visualiserer dataene for eksempel ved hjelp av et grafbibliotek.

Hvis du har kodesnutter i flere ulike programmeringspråk i notisblokken din, kan du dele variabler mellom de ulike språkene ved hjelp av såkalte "magiske kommandoer" som starter med #!.

Eksempel på deling av variabler mellom to kodeblokker skrevet i for eksempel C# og JavaScript. 📸: Microsoft
Eksempel på deling av variabler mellom to kodeblokker skrevet i for eksempel C# og JavaScript. 📸: Microsoft Vis mer

Med magiske kommandoer kan du også importere og kjøre kode fra en annen notisblokk. Du kan til og med bruke dem til å be brukeren om å taste inn noe – som så vil bli tilegnet en variabel du kan bruke senere i koden.

Til opplæring og dokumentasjon

Undertegnede har ikke hatt mer enn sporadisk befatning med Jupyter-notisblokker.

Men jeg synes denne typen notisblokker – og spesielt Polyglot Notebooks – er et morsomt og interessant konsept som kan ha mange nyttige bruksområder. Og noen unyttige.

Under har jeg for eksempel laget en kodeblokk som setter opp et HTML-canvas, og deretter en JavaScript-kodeblokk som animerer en sinusbølge inne i dette canvaset. Som prikken over I-en henter jeg i en annen kodeblokk en Chuck Norris-vits fra Chuck Norris-API-et. Kjempenyttig! Eller kanskje ikke.

image: VSCode-blokka som skal konkurrere med Jupyter har én stor mangel

Et nyttigere bruksområde er er til opplæring: Skriv tekst som forklarer ulike konsepter, så beriker du teksten med kjørbare kodesnutter som demonstrerer eller visualiserer konseptene.

Det at du kan blande ulike programmeringsspråk i samme notisblokk er utvilsomt nyttig.

Jeg ser også for meg at interaktive notisblokker kan brukes til dokumentasjon av kode. Det er jo fort gjort å bare opprette en notisblokkfil side om side med den vanlige README-filen i kodebasen din, og på den måten lage en interaktiv dokumentasjon til prosjektet ditt.

En ulempe med Polyglot fremfor Jupyter – i hvert fall foreløpig – er at notisblokkene bare kan vises og kjøres i VS Code, og at du selvfølgelig må ha installert tillegget. Dermed er det ikke like lett å dele notisblokkene med andre mennesker som med en Jupyter-notisblokk, som kan kjøres via et web-basert brukergrensesnitt.

Slik kommer du igang

For å komme igang, må du sørge for at du har .NET 7 SDK installert, og så er det bare å installere Polyglot Notebooks-utvidelsen i VS Code.

Når det er gjort, trykker du Ctrl-Shift-P (Windows) eller Cmd-Shift-P (macOS), taster inn Polyglot... og velger "Create a new blank notebook".

Deretter er det bare å begynne å skrive inn tekst, og trykke "+ Code" eller "+ Markdown" for å sette inn kode- eller tekstblokker.