Etter flere tiår der mange brukte det objekt-orienterte programmeringsparadigmet for applikasjonsutvikling har funksjonell programmering (FP) fått en renessanse. I FP foretrekker man expressions over statements og rene funksjoner (uten side-effekter). Språk som støtter FP har ofte konstruksjoner som gjør det enklere å håndheve immutability.

For utviklere på JVM’et har Scala og Groovy i en del år tilbudt språk-konstruksjoner som gjør det mulig å gjøre funksjonell programmering, men blant mange i Kodemaker er Clojure spesielt populært.

Utenfor JVM’et er Haskell og Elm språk som har økende popularitet.

Våre anbefalinger

Learn You a Haskell for Great Good!
Anbefalt av André, Alf Kristian og Frode

Etter å ha jobbet med Clojure og ClojureScript i lengre tid så ble jeg interessert i hvordan det var å programmere i et sterkt typet funksjonelt språk. Haskell da kanskje det første språket man tenker på. Jeg har ikke vært i et prosjekt hvor Haskell er benyttet, men konseptene er universelle og nyttige, og boken er lettlest og morsom.

Simple Made Easy
Anbefalt av Anders og Kristian

Foredraget som endret mitt syn på hvordan programvare bør utvikles. Rich Hickey gir oss i tillegg et begrepsaparat for å objektivt kunne diskutere graden av kompleksitet i kode vi skriver og verktøyer vi benytter. Jeg kan ikke anbefale dette foredraget varmere!

The Functional Database
Anbefalt av Kristian

Dette foredraget av Rich Hickey introduserer og forklarer ideene bak en funksjonell database. Hva om man distanserer seg fra tradisjonelle databaser og sier at data kun kan legges til? Betyr dette at man kan modellere data over tid? Og hva er egentlig fordelen med at data aldri endrer seg? Dette er noen av spørsmålene som blir besvart gjennom en presentasjon som utfordrer etablerte «sannheter».

The Joy of Clojure
Anbefalt av Alf Kristian

Dette er ingen intro bok om Clojure, dette er en bok for de som vil lære litt mer. I tillegg til et dypdykk i språket, lærer man om generell funksjonell programmering. Kan anbefales for alle som føler det er forbi begynnerstadiet i FP, enten det gjelder Clojure eller andre spåk.

Out of the Tar Pit
Anbefalt av Anders

Ben Moseley og Peter Marks presenterer svært overbevisende argumenter for hva som er kilden til kompleksitet i systemene vi bygger. Dersom du ikke har lest denne artikkelen de siste 3 månedene oppfordrer jeg deg på det sterkeste til å gjøre nettopp det med det samme!

Våre foredrag

Vi gikk bort fra skreddersydd data-streaming per feature og kvittet oss med kilovis med kode. Ikke var det noe moro å skrive den koden heller. Når vi legger til nye features nå, så får vi streaming med på kjøpet. I dette foredraget prater Magnar om den snedige løsningen vår – hvordan og når den funker bra, og i hvilke tilfeller den ikke funker så bra.

Magnar snakker hva, hvorfor og hvordan om Pure Functions, i et utbrudd av entusiasme etter å ha jobbet med en kodebase basert på disse prinsippene et par år.

På Javazone 2015, snakket Alf Kristian erfaringer med de funksjonelle språkene på JVM’en. I tillegg sammenlignet han dem med «FP» i Java 8.

Christian og Magnar parprogrammerer nettspill med Clojure og ClojureScript på JavaZone. Det blir funksjonell programmering, testdrevet utvikling og to tomsinger fra Østfold.

Really understanding Clojure, getting into macros

På Javazone 2014, snakket Alf Kristian om Clojure sine makroer. Det ble et dypdykk inn i en av Clojure sine kraftigste features

Programmeringsspråket betyr alt!

Hovedverktøyet til programmerere er programmeringsspråket. Likevel velge vi sjeldent det beste riktige verktøyet for å løse oppgavene. Denne presentasjonen fokuserer på hvor viktig det er å velge riktig programmeringsspråk.

Clojure - JVM språket som er "multi-core ready"

En introduksjonspresentasjon om Clojure, som går igjennom språkets oppbygning og filosofi. Forklarer også hvorfor Clojure er et bedre rustet språk for fremtiden enn andre.

Våre sideprosjekter

Learning Functional JavaScript

Et grundig videokurs i funksjonell programmering med JavaScript. Laget for Packt forlag i 2015.

Vår fri programvare

  • Cull.JS - Funksjonell verktøykasse for JavaScript.
  • Dome - Funksjonell verktøykasse for DOM-manipulering.

Våre blogginnlegg

Samspill mellom generiske UI-komponenter

I forbindelse med bloggposten om en enkel frontendarkitektur som funker, spurte Ove: «Hvis du har en tekstboks og en knapp, hvem har ansvaret for å ta verdien fra tekstboksen og sende den til eventbussen når man trykker på knappen?» Det er et betimelig spørsmål med noen interessante detaljer.

Elixir/Phoenix: Logge config og maskere secrets

Logger du config i oppstart av appen din? Nei? Det gjøres heller ikke i Elixir/Phoenix. Dette er rett og slett ikke godt nok. Her er en oppskrift på hvordan gjøre dette.

Clojure zippers - snasen traversering og manipulering av trær

Har du hørt om zippers før? Ikke glidlåser altså, men en teknikk for å representere aggregerte datastrukturer slik at de kan enkelt traverseres og manipuleres nærmest vilkårlig. La oss utforske zippers litt nærmere og se hvordan du kan bruke de i Clojure.