Facebook avduket i går et nytt programmeringsspråk som har fått navnet Hack. Det er i utgangspunktet laget for å brukes sammen med selskapets HHVM (HipHop Virtual Machine), som i utgangspunktet er laget for effektiv kjøring av PHP-kode ved at koden JIT-kompileres (just-in-time). HHVM, og nå også Hack, er foreløpig bare tilgjengelig for Linux og OS X.
Hack har svært mye felles med PHP, faktisk så mye at Hack-filer og PHP-filer kan eksistere side ved side. Tanken er at PHP-prosjekter gradvis skal kunne konverteres til Hach. Facebook har selv konvertert det meste av selskapets kodebase på denne måten det siste året.
Målet med Hack har vært å beholde den raske utviklingssyklusen til PHP, men samtidig innføre disiplinen som statisk typing medfører. Samtidig har Facebook lagt til en hel del funksjonalitet som ofte går igjen i andre, moderne programmeringsspråk, men som så langt mangler i PHP.
I kunngjøringen presenterer Facebook kodeeksempelet nedenfor, som omtales som et glimrende eksempel på en vanlig feil, hvor en metode uventet kan returnere et null-objekt i stedet for et objekt med en funksjon som straks blir kalt opp.
Slike feil blir ofte ikke oppdaget før koden kjøres.
Med statisk typing vil en slik feil enten oppdages direkte i utviklingsverktøyet eller av en kompilator. Ulempen er at muligheten for hyppige iterasjoner reduseres. Facebook ruller ut ny kode, fra tusenvis av utviklere, to ganger om dagen. Både svakheter som eksempelet over, eller tidsbruken ved kompilering, kan gjøre en så rask utviklingssyklus vanskelig.
Facebook skriver at en PHP-utvikler typisk veksler fram og tilbake mellom kildekoden og nettleseren, for å gjøre små og raske endringer inntil resultatet blir som ønsket.
Rask typesjekker
– Tradisjonelt vil en typesjekker avbryte denne feedback-sløyfen fordi det tar tid å analysere kildekoden. Vi ønsket ikke å gjøre PHP-arbeidsflyten langsommere, så vi fant opp en ny tilnærming for å forene umiddelbar feedback med typesikkerhet, skriver Facebooks Julien Verlaguet og Alok Menghrajani i kunngjøringen.
Facebooks løsning har vært å lage en typesjekker som fungerer som en lokal server som overvåker filsystemet. Den har all kildekode i minnet og oppdateres seg selv når det gjøres endringer i en fil på lagringsmediet.
– Denne tilnærmingen har lønt seg. Typesjekkeren kjøres typisk på mindre enn 200 millisekunder og bruker sjelden mer enn et sekund. Dette gjør den enkel å integrere utviklingsarbeidsflyten uten å introdusere en betydelig forsinkelse, skriver Verlaguet og Menghrajani.
I tillegg til muligheten for å sette en eksplisitt type på parametere, klassevariabler og returverdier, støtter Hack blant annet generics, nullable types, lambdauttrykk, collections og typealiasing.
Men Hack mangler også en hel del PHP-funksjonalitet. Dette gjelder først og fremst eldre funksjonalitet som man uansett ikke bør bruke lenger («deprecated»), men også et og annet som ikke fungerer godt med statisk typing.
Leave a Reply