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 tidligere språk. Disse språkene integrerer aktivt de nyeste teknikkene og konseptene, og gir utviklere mer effektive og sikre utviklingsverktøy. Representative moderne språk inkluderer Java, Rust, Python og TypeScript, som har følgende kjennetegn.

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 gjør programstrukturen klar og fleksibel ved å dele komplekse systemer inn i mindre objekter. Dette er spesielt effektivt for å kontrollere utviklingskostnader og innsats ved storskala programvareutvikling, og for å redusere problemer som kan oppstå under vedlikehold.

2. Syntactic sugar og uttrykk

Moderne språk tilbyr en rekke syntactic sugar og uttrykksbasert syntaks for å forbedre kodelesbarheten og utviklingsproduktiviteten. Funksjoner som ternary operators, lambda expressions og pattern matching reduserer boilerplate code, gjør koden forutsigbar og forbedrer 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 håndtering av avhengigheter, og gjør vedlikehold enklere selv når prosjektstørrelsen øker. Representative eksempler inkluderer Javas Maven/Gradle, Rusts Cargo og TypeScript npm/yarn.

4. Mellomspråk og virtuelle maskiner

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

Utvikling i AI-tiden og begrensningene til moderne språk

Moderne språk oppsto under forutsetningen om at mennesker skrev det meste av koden. Naturligvis er formålet med moderne språk å redusere repeterende oppgaver, øke produktiviteten og effektivt implementere stor programvare gjennom strukturer som muliggjør samarbeid mellom utviklere. Imidlertid er denne forutsetningen gradvis i ferd med å brytes ned i AI-tiden. AI-baserte verktøy som Copilot og Cody automatiserer store deler av kodeskrivingen, og mengden kode en enkelt utvikler kan produsere øker eksponentielt. Som et resultat er egenskapene til moderne språk, som tidligere ble ansett som fordeler, gradvis i ferd med å bli utdaterte ulemper.

Objektorientert design

AI kan raskt og nøyaktig analysere strukturer der all informasjon er spesifisert innenfor en enkelt funksjon eller modul. På den annen side, etter hvert som konteksten øker, øker også inferensområdet, noe som reduserer AIens produktivitet og nøyaktighet. Kode skrevet med OOP distribuerer logikken over flere objekter i stedet for å administrere den på ett sted, noe som til slutt krever mer kontekst fra AI. La oss se på 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' en instans av?
  2. Hvor er den overstyrte speak()-metoden definert i den klassen?
  3. Hvor er definisjonene av Dog- og Cat-klassene, og hva er deres interne oppførsel?
  4. Er det en mulighet for at Dog- og Cat-klassene overstyres i andre klasser?

Denne informasjonen er ikke samlet i én fil eller én funksjon, og kan bare forstås ved å følge forholdet mellom klassefiler og arvehierarkiet. Dessuten er elementer som avgjøres ved runtime, som reflection eller dynamisk lasting, som en svart boks for AI, og er faktisk umulige å analysere.

Syntactic sugar og uttrykk

AI foretrekker eksplisitte handlinger fremfor implisitte, og foretrekker å kombinere enkle strukturer for å skape et enkelt svar fremfor å bruke komplekse strukturer. I motsetning til dette tillater syntactic sugar ulike uttrykk, men den interne oppførselen er ofte den samme eller lignende. AI må lære betydningen av disse ulike uttrykkene individuelt, og det kan bli vanskelig å avgjøre prioriteten for hvilken syntaks som skal anbefales i en spesifikk situasjon.

Mellomspråk og virtuelle maskiner

AI lærer hovedsakelig basert på kildekode. Mellomspråk (bytecode), derimot, fjerner betydningen av variabelnavn under kompileringsprosessen, og må tolkes på nytt av den virtuelle maskinen ved 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-motorens bytecode til JVMs bytecode eller maskinkode er praktisk talt umulig.

Det sanne moderne språket i AI-tiden

Gjennom innholdet ovenfor kan vi se at egenskapene til moderne språk faktisk er utdaterte elementer som ikke er egnet for AI-tiden. Så, hvilket språk kan være det mest passende moderne språket for AI-tiden? Hint kan finnes i elementene som tidligere moderne språk avviste. Et moderne språk i AI-tiden bør ha:

  1. Eksplisitt syntaks og en naturlig flyt.
  2. En flat og enkel struktur, fri fra overdreven OOP-struktur.
  3. Begrensede grunnleggende nøkkelord for å lage flere funksjoner, i stedet for unødvendig syntactic sugar eller implisitte mønstre.
  4. Et enkelt og forutsigbart byggesystem, ikke et komplekst et.

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

Gås egenskaper, som en forutsigbar og flat struktur, eksplisitt flyt og konsistent syntaks, passer bedre inn i et utviklingsmiljø der AI aktivt deltar, i motsetning til eksisterende moderne språk som er designet med menneskelige utviklere som utgangspunkt. Gos konservative designfilosofi, som en gang ble ansett som utdatert, viser seg å være det mest avanserte valget i AI-tiden.