Gå til innhold

Java reiser til Valhall, hvor verditypene gror [Ekstra]


Anbefalte innlegg

Videoannonse
Annonse

Valhall er gammelt nytt, og de første versjonene av det kom for flere år siden. Over 10 år siden de første utkastene ble skrevet. Det tar sin tid. Enda gøyere er det jo at det dokumentet artikkelen deres er basert på, leste jeg for mange dager siden, også før det ble oppdatert igjen. Hehe.

 

Sitat

Javas nåværende objekter har identitet – hvert objekt er unikt. Det muliggjør fasiliteter som for eksempel mutasjon av felter og låsing, opplyses det i et foreløpig utkast til verdiklasser.

Dette er feil. Det er ikke noe behov for identitet for å endre verdiene i en struktur. Det er en vilkårlig begrensing de selv har valgt å legge inn, på det abstrakte nivået, for å gi mer frihet til implementasjonen. Det er fullt mulig å legge til støtte for endring senere, men da må språket støtte det, enten ved at "final" nå kreves, eller ved bruk av et nytt ord i fremtiden, som "mutable". Sånnsett er jeg ikke helt fornøyd med at "record"-klasser implisitt gjør sine felter uredigerbare.

Jeg må i min egen kildekode dessverre fortsette å bruke identitetsbaserte klasser et sted jeg opprinnelig hadde håpt å kunne bruke verdibaserte klasser: i en liste der hvert element endres, men aldri erstattes.

 

Sitat

instansieringen

"Konstruksjonen" eller "byggingen" fungerer bedre.

Sitat

mellom separat tildelte instanser med matchende feltverdier.»

"mellom forskjellig tildelte gjenstander med passende feltverdier" høres da mye bedre ut.

Sitat

«maps» og «sets». 

Kart og sett.

Sitat

«Det krever generelt at et objekts data er plassert på et bestemt sted i hukommelsen, pakket med metadata for å støtte hele objektets funksjonalitet.»

Minnet.

Sitat

garbage collector

Minnesamler/minnerydder

 

Ja... Jeg tror ikke jeg tar resten.

 

Sitat

Dette er beskrevet i et annet forslag, som interessant nok er en «preview», og som derfor er nærmere målstreken enn utkastet til verdiklasser.

Det er litt rot med dette arbeidet deres. Det står litt hultert i bultert, og flere av skrivene deres samsvarer ikke helt med hverandre. Samtidig går de litt fram og tilbake med hvordan språket skal utformes. En tid skulle det være "inline class", så ble det "primitive class", og så endret de det til "value class". 

Det var heller ikke noen forskjell på verdibaserte klasser, og primitive klasser, en lang stund. De skulle egentlig være det samme. Jeg antar at de havner tilbake der til slutt.

Dere har forresten glemt at vanlige type klasser får et nytt grensesnitt de stammer fra; IdentityObject, mens verdiklasser får ValueObject.

Forrige utgave av Valhall(a), brukte en uferdig versjon av Java 14. Java 18 kommer i mars, men er allerede inne i utgivelsesfase 1 ("Initial Release Candidate").

Det har også blitt diskutert å legge til mulighet for å skrive egne implementasjoner for aritmetiske funksjoner, og legge til støtte for disse i verdibaserte klasser. Forhåpentligvis kommer de tilbake til det etter at Valhall er ferdig.

Man skulle først kunne tro at Valhall er veldig enkel å få til. Mange andre språk har hatt støtte for det samme i mange år allerede. Det viser seg likevel at det ikke er så enkelt når man dykker ned i det. Man må omskrive store deler av kompilatorene, bibliotekene og minnehåndteringen.

 

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...