Programmering

Nyt JVM-sprog adskiller sig fra Scala, Clojure

Et andet JVM-sprog, Haskell-dialekt Eta, er ankommet til scenen og igen centreret om funktionel programmering.

Eta er beregnet til opbygning af skalerbare systemer og er et stærkt skrevet funktionelt sprog. Det ligner Scala, et JVM-sprog, der også lægger vægt på funktionel programmering og skalerbarhed, og Clojure, et andet et funktionelt sprog på JVM.

Men Eta adskiller sig fra sådanne konkurrenter, fordi det er uforanderligt som standard, det bruger doven evaluering, og det har et meget kraftigt typesystem, sagde Eta-grundlægger Rahul Muttineni, CTO hos TypeLead, som fører tilsyn med sproget. Denne kombination tillader statiske garantier og kortfattethed simpelthen ikke i Scala eller Clojure.

I øjeblikket ved version 0.0.5 i en alfa-udgivelse er Eta interoperabel med Java, hvilket muliggør genbrug af Java-biblioteker i Eta-projekter og brug af Eta-moduler i Java. Stærk type sikkerhed gør det muligt for udviklere at fortælle compileren flere oplysninger om kode, mens uforanderlighed i Eta øger samtidigheden.

Eta har også renhed, hvor opkald til en funktion med de samme argumenter giver de samme resultater hver gang; funktionsdefinitioner behandles som ligninger og substitutioner kan udføres som i matematik. Eta-fortalere sagde, at dette gør det lettere at forstå kode og forhindrer mange bugs, der er typiske i tvingende sprog. "Renhed giver dig mulighed for at behandle din kode som ligninger i matematik og gør det meget nemmere at begrunde din kode, især i indstillinger for samtidighed og parallelisme," sagde Muttineni.

Eta er "doven som standard", hvilket betyder, at data forbliver i en uevalueret tilstand, indtil en funktion skal se indeni. Dette gør det muligt for udviklere at programmere uden at skulle bekymre sig om, hvorvidt de har foretaget mere beregning, end det var nødvendigt. Udviklere kan også skrive multipass-algoritmer i et enkelt pass. ”Dovenskab giver dig mulighed for at stoppe med at bekymre dig om rækkefølgen, hvor du skriver dine udsagn,” sagde Muttineni. "Angiv bare dataafhængighederne ved at definere udtryk og deres forhold til hinanden, og kompilatoren udfører dem i den rigtige rækkefølge, og kun hvis udtrykkene er nødvendige."

Planer kræver, at Eta tilpasses en samtidig runtime, en interaktiv REPL, metaprogrammering, massiv parallelitet og transaktionel samtidighed. Support til Maven build manager og et kernebibliotek er også under udvikling sammen med generation af kedelplade til import af Java Foreign Function Interface.

$config[zx-auto] not found$config[zx-overlay] not found