GoSuda

Moderne språk i AI-æraen

By Rabbit Princess
views ...

Moderne språk

Moderne språk refererer til språk som tilbyr høyere produktivitet, stabilitet, sikkerhet og vedlikeholdbarhet sammenlignet med eldre språk. Disse språkene tar aktivt i bruk de nyeste teknikkene og konseptene, og gir utviklere mer effektive og sikre utviklingsverktøy. Representative moderne språk inkluderer Java, Rust, Python, TypeScript, med flere, og disse har følgende egenskaper.

1. Objektorientert design ( OOP )

De fleste moderne språk er designet basert på objektorienterte konsepter. Objektorientering støtter prinsipper som innkapsling, arv og polymorfisme, og ved å dele komplekse systemer inn i mindre enheter av objekter for administrasjon, gjøres programmets struktur tydelig og fleksibel. Dette er spesielt effektivt for å kontrollere utviklingskostnader og innsats ved storskala programvareutvikling, og for å redusere problemer som kan oppstå under vedlikehold.

2. Syntaktisk sukker og uttrykk

Moderne språk tilbyr en rekke syntaktisk sukker og uttrykksbasert syntaks for å forbedre kodens lesbarhet og utviklingsproduktivitet. Funksjoner som ternære operatorer, lambda-uttrykk og mønstermatching reduserer boilerplate-kode, gjør koden mer forutsigbar og øker utviklerens produktivitet.

3. Modulsystem

Moderne språk muliggjør administrasjon av programmer ved å dele dem inn i flere enheter gjennom et modulsystem. Dette forenkler gjenbruk av kode og avhengighetshåndtering, og gjør vedlikehold enklere selv når prosjektstørrelsen øker. Representative eksempler inkluderer Javas Maven/Gradle, Rusts Cargo, og TypeScriptens npm/yarn.

4. Mellomspråk og virtuell maskin

Moderne språk introduserer mellomspråk og virtuelle maskiner for plattformuavhengighet, ytelsesoptimalisering og sikkerhet. Representative eksempler inkluderer JVM, LLVM, WASM, GraalVM, med flere.

Utvikling i AI-æraen og begrensninger ved moderne språk

Moderne språk oppsto med premisset om at mennesker skriver det meste av koden. Naturligvis er formålet med moderne språk å redusere repetitive oppgaver, øke produktiviteten og effektivt implementere stor programvare gjennom strukturer som muliggjør samarbeid mellom utviklere. Imidlertid smuldrer dette premisset gradvis opp i AI-æraen. AI-baserte verktøy som Copilot og Cody automatiserer store deler av kodeskrivingen, og mengden kode en enkelt utvikler kan produsere, har økt eksponentielt. Som følge av dette er egenskapene ved moderne språk som tidligere ble oppfattet som fordeler, gradvis i ferd med å bli utdaterte ulemper.

Objektorientert design

AI kan raskt og nøyaktig analysere strukturer der all informasjon er eksplisitt angitt innenfor en enkelt funksjon eller modul. På den annen side, ettersom konteksten øker, øker også inferensområdet, noe som reduserer AIens produktivitet og nøyaktighet. Kode skrevet med OOP sprer logikken over flere objekter i stedet for å administrere den på ett sted, noe som følgelig krever mer kontekst for AI. Se koden nedenfor.

 1public class AnimalHandler {
 2    public void handle(Animal animal) {
 3        animal.speak();
 4    }
 5}
 6
 7public class Main {
 8    public static void main(String[] args) {
 9        AnimalHandler handler = new AnimalHandler();
10
11        Animal a1 = new Dog();
12        Animal a2 = new Cat();
13        Animal a3 = new Horse();
14
15        handler.handle(a1);
16        handler.handle(a2);
17        handler.handle(a3);
18    }
19}

I koden ovenfor må AI gjenta følgende inferens for å vite hva speak()-metoden faktisk vil gjøre:

  1. Hvilken konkret klasse er animal-instansen av?
  2. Hvor er den overstyrte speak()-metoden definert i den klassen?
  3. Hvor er definisjonen av Dog og Cat klassene, og hva er deres interne oppførsel?
  4. Er det mulig at Dog og Cat klassene blir overstyrt i andre klasser?

Denne informasjonen er ikke samlet i én fil eller én funksjon, og kan bare forstås ved å følge relasjonene og arvestrukturene mellom klassefilene. Videre er elementer som bestemmes under kjøretid, slik som reflection eller dynamic loading, som en svart boks for AI, noe som gjør analyse praktisk talt umulig.

Syntaktisk sukker og uttrykk

AI foretrekker eksplisitt oppførsel fremfor implisitt oppførsel, og foretrekker å kombinere enkle strukturer for å skape et enkelt riktig svar, fremfor å bruke komplekse strukturer. På den annen side tillater syntaktisk sukker en rekke uttrykk, samtidig som den interne oppførselen ofte er identisk eller lignende. AI må lære betydningen av disse forskjellige uttrykkene individuelt, og det kan bli vanskelig å bedømme prioriteten for hvilken syntaks som bør anbefales i en bestemt situasjon.

Mellomspråk og virtuell maskin

AI lærer for det meste basert på kildekode. Mellomspråk (bytecode), derimot, får fjernet betydningen av variabelnavn osv. under kompileringen, og må tolkes på nytt av en virtuell maskin under kjøretid. Dette er en svært vanskelig oppgave for AI å forstå eller konvertere. For eksempel er konvertering fra TypeScript til Go mulig for AI, men konvertering av V8 engine sin bytecode til JVMs bytecode eller maskinkode er praktisk talt umulig.

Det sanne moderne språket i AI-æraen

Gjennom innholdet ovenfor kan vi se at egenskapene ved moderne språk faktisk er utdaterte elementer som ikke er egnet for AI-tiden. Hvilket språk kan da bli det mest passende moderne språket i AI-æraen? Vi kan få hint fra elementer som tidligere moderne språk avviste. Det moderne språket i AI-æraen bør:

  1. ha eksplisitt syntaks og en naturlig flyt.
  2. gå bort fra overdreven OOP-struktur og ha en flat og enkel struktur.
  3. produsere flere funksjoner med bare et begrenset antall grunnleggende nøkkelord, snarere enn unødvendig syntaktisk sukker eller implisitte mønstre.
  4. ha et enkelt og forutsigbart byggesystem, snarere enn et komplekst byggesystem.

Språket som best oppfyller disse kriteriene er Golang. Go-språket er designet for å kunne implementere de fleste praktiske funksjoner med et minimum av kjernenøkkelord og enkle syntakskombinasjoner, og det unngår strengt unødvendig abstraksjon og implisitt oppførsel. Dette er en struktur som er gunstig ikke bare for utviklere, men også for AI når det gjelder å tolke og generere kode.

På denne måten er Go's egenskaper, som sikter mot en forutsigbar og flat struktur, eksplisitt flyt og konsekvent syntaks, mer egnet for et utviklingsmiljø der AI aktivt deltar, i motsetning til eksisterende moderne språk som er designet med menneskelige utviklere som utgangspunkt. Go's konservative designfilosofi, som en gang ble ansett som utdatert, blir i stedet det mest fremtidsrettede valget i AI-æraen.