Programmering

Nytt JVM-språk skiller seg fra Scala, Clojure

Et annet JVM-språk, Haskell-dialekt Eta, har kommet til scenen, og sentrerer igjen om funksjonell programmering.

Eta er ment for å bygge skalerbare systemer, og er et sterkt skrevet funksjonsspråk. Det ligner på Scala, et JVM-språk som også legger vekt på funksjonell programmering og skalerbarhet, og Clojure, et annet et funksjonelt språk på JVM.

Men Eta skiller seg ut fra slike konkurrenter fordi den er uforanderlig som standard, den bruker lat evaluering, og den har et veldig kraftig typesystem, sa Eta-grunnlegger Rahul Muttineni, CTO på TypeLead, som fører tilsyn med språket. Denne kombinasjonen tillater statiske garantier og kortfattethet ganske enkelt ikke i Scala eller Clojure.

For tiden på versjon 0.0.5 i en alfa-utgivelse, er Eta interoperabel med Java, noe som tillater gjenbruk av Java-biblioteker i Eta-prosjekter og bruk av Eta-moduler i Java. Sterk type sikkerhet gjør det mulig for utviklere å fortelle kompilatoren mer informasjon om kode, mens uforanderlighet i Eta øker samtidigheten.

Eta har også renhet, der å ringe en funksjon med de samme argumentene gir de samme resultatene hver gang; funksjonsdefinisjoner behandles som ligninger og substitusjoner kan utføres som i matematikk. Eta-talsmenn sa at dette gjør det lettere å forstå kode og forhindrer mange feil som er typiske i tvingende språk. "Renhet lar deg behandle koden din som ligninger i matematikk og gjør det mye lettere å resonnere om koden din, spesielt i innstillinger for samtidighet og parallellitet," sa Muttineni.

Eta er "lat som standard", noe som betyr at data forblir i en uevaluert tilstand til en funksjon må se inni. Dette lar utviklere programmere uten å måtte være bekymret for om de har gjort mer beregning enn det som var nødvendig. Utviklere kan også skrive flerpassalgoritmer i ett enkelt pass. "Latskap lar deg slutte å bekymre deg for i hvilken rekkefølge du skriver uttalelsene dine," sa Muttineni. "Bare spesifiser dataavhengighet ved å definere uttrykk og deres forhold til hverandre, så vil kompilatoren utføre dem i riktig rekkefølge, og bare hvis uttrykkene er nødvendige."

Planene krever at Eta får en samtidig kjøretid, en interaktiv REPL, metaprogrammering, massiv parallellitet og transaksjonell samtidighet. Støtte for Maven build manager og et kjernebibliotek er også i utvikling, sammen med generering av kjele for import av Java Foreign Function Interface.