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.
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:
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.
Atom-skaperen med ny editor: – VS Code er for treig!
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 #!.
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.
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.
Vi prøver GitHub Blocks: - Lovende, men uferdig
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.