Jag försöker tänka mig in i hur programmering fungerar. Det är lite som en hjärntvätt, men också befriande. Jag hittar återvändsgränder där alla tankar på algoritmer som "recept" slutar vara giltiga men också extremt kraftfulla sätt att skriva texter i kombination med körbar kod.
Just nu verkar det mest lovande heta Jupyter, ett format där det är lätt att varva förklarande text med snuttar av datorprogram. Som i det här exemplet som visar hur en av Eschers mer intrikata bilder är uppbyggd. Här är en bild från halvvägs genom förklaringen:
(Jag skrev lite om körningen här.) Med Jupyter kan man inte bara se hur strukturen för bilden är uppbyggd, man kan också själv pröva hur det blir om man har en annan sorts fisk, och vilka krav som ställs på fisken för att bilden ska bli bra. Fascinerande.
För att köra koden behöver man en Jupyter-miljö. Det enklaste är att installera Anaconda på sin dator, men det finns också olika molntjänster man kan köra. Om man har en vanlig dator med admin-rättigheter är det inte krångligt att få till en Jupyter-miljö, men det är inte något man gör på en telefon eller bara med en webbläsare. En anledning till det är att miljön ger så stora rättigheter att köra vilken kod som helst. Det innebär att man måste vara väldigt noggrann med säkerheten i datormiljön.
Det finns forskare som har börjat använda Jupyter för att sprida de beräkningar de gör med sina data. En svensk sådan är Christopher Kullenberg, vetenskapsteoretiker på Göteborgs universitet. Här visar han till exempel hur man kan analysera SOM-institutets data med Jupyter.
Det finns tecken som tyder på att det här är en praktik som har spridit sig över världen. Så här skriver fransmannen Louis Amon:
A few years back, people would work locally and email their collaborators with new versions of their algorithm once they’re satisfied of their improvements. A few (gifted) scientists would actually use version control softwares like Git or Mercurial…
Nowadays though, the scientific community is working more and more tightly with the computer science community. Version control is more of a norm now (thank God!) and people are looking towards cloud solutions for easier and more efficient collaboration.
För att visualisera vanlig statistik finns funktioner inbyggda i exempelvis matplotlib, och det är också väldigt lätt att använda exempelvis plotly. Jag har sökt mig lite utanför de vanliga statistiktillämpningarna och exempelvis hittat ovanstående Escher-exempel.
På Stanford ges den här veckan fjärde upplagan av en workshop i "music information retrieval" som visar en del av det kraftfulla i Jupyter som kursmaterial. Deltagarna uppmanas att ha med sig eget audio-material som de kan använda för analyserna. Så här skriver arrangörerna om syftet:
Simply put, MIR algorithms allow a computer to "listen" and "understand or make sense of" audio data, such as MP3s in a personal music collection, live streaming audio, or gigabytes of sound effects, in an effort to reduce the semantic gap between high-level musical information and low-level audio data. In the same way that listeners can recognize the characteristics of sound and music - tempo, key, chord progressions, genre, or song structure - MIR algorithms are capable of recognizing and extracting this information, enabling systems to perform extensive sorting, searching, music recommendation, metadata generation, transcription, and even aiding/generating real-time performance.
Och allt material publiceras som visualiserade Jupyter-notebooks med länkar till den körbara koden. Det här exemplet är extremt komplext och jag tar med det bara för att visa vad som går att göra. Det är så många bibliotek att installera att de låter deltagarna installera en virtuell Linux-maskin (Vagrant-box) på sin dator, där de sen kan distribuera konfigurationen som ett paket för att alla ska få samma miljö att köra i... (Jag misslyckades när jag försökte sätta upp den och skulle få den virtuella maskinen att kommunicera med värd-datorn...)
Ett annat avancerat och kraftfullt exempel är den här kursen i Deep learning. Författarna beskriver det så här:
Our goal is to leverage the strengths of Jupyter notebooks to present prose, graphics, equations, and code together in one place. If we’re successful, the result will be a resource that could be simultaneously a book, course material, a prop for live tutorials, and a resource for plagiarising (with our blessing) useful code. To our knowledge there’s no source out there that teaches either (1) the full breadth of concepts in modern deep learning or (2) interleaves an engaging textbook with runnable code. We’ll find out by the end of this venture whether or not that void exists for a good reason.
Här är ett annat exempel med machine learning för konstnärer, av bland andra Gene Kogan (som kommer till Malmö i september).
Jag är övertygad om att man skulle kunna revolutionera läroboksskrivande med den här tekniken, att kunna låta eleverna experimentera med egna data och bygga egna visualiseringar och program runt de data man samlar in eller skapar. Det finns en del begränsningar med Jupyter som det ser ut idag. Den främsta kanske är att det är svårt att lägga till ett bra användargränssnitt med inmatningskontroller. Det finns några sätt att komma runt det, men det kommer förhoppningsvis att komma nya versioner som innehåller detta.
Avslutningsvis ett citat från Seymour Papert:
My basic idea is that programming is the most powerful medium of developing the sophisticated and rigorous thinking needed for mathematics, for grammar, for physics, for statistics, for all the “hard” subjects…. In short, I believe more than ever that programming should be a key part of the intellectual development of people growing up.
/Simon
Recent Comments