Moderne sprog i AI-æraen
Moderne Sprog
Moderne sprog refererer til sprog, der tilbyder højere produktivitet, stabilitet, sikkerhed og vedligeholdelighed sammenlignet med tidligere sprog. Disse sprog introducerer aktivt de nyeste teknikker og koncepter og giver udviklere mere effektive og sikre udviklingsværktøjer. Repræsentative moderne sprog inkluderer Java, Rust, Python, TypeScript, med flere, og de besidder følgende karakteristika.
1. Objektorienteret Design ( OOP )
Moderne sprog er for det meste designet baseret på objektorienterede koncepter. Objektorientering understøtter principper som indkapsling, arv og polymorfi og gør programstrukturen klar og fleksibel ved at opdele komplekse systemer i mindre enheder af objekter til styring. Dette er særligt effektivt til at kontrollere udviklingsomkostninger og indsats ved storstilet softwareudvikling og reducere potentielle problemer under vedligeholdelse.
2. Syntactic Sugar og Udtryk
Moderne sprog tilbyder forskellige former for syntactic sugar og udtryksbaseret syntaks for at øge kodens læsbarhed og udviklingsproduktivitet. Funktioner som ternære operatorer, lambda-udtryk og pattern matching reducerer boilerplate code, gør koden mere forudsigelig og forbedrer udviklerproduktiviteten.
3. Modulsystem
Moderne sprog muliggør styring af programmer ved at opdele dem i flere enheder gennem et modulsystem. Dette letter genbrug af kode og afhængighedsstyring og gør vedligeholdelse lettere, selv når projektstørrelsen vokser. Repræsentative eksempler inkluderer Javas Maven/Gradle, Rusts Cargo, TypeScript npm/yarn, med flere.
4. Mellemliggende Sprog og Virtuelle Maskiner
Moderne sprog introducerer mellemliggende sprog og virtuelle maskiner for platforms-uafhængighed, ydelsesoptimering og sikkerhed. Repræsentative eksempler inkluderer JVM, LLVM, WASM, GraalVM, med flere.
Udvikling i AI-æraen og Moderne Sprogs Begrænsninger
Moderne sprog opstod under forudsætningen, at mennesker skriver det meste af koden. Naturligvis er formålet med moderne sprog at reducere gentagne opgaver, øge produktiviteten og effektivt implementere stor software gennem en struktur, der muliggør udviklersamarbejde. Men i AI-æraen er denne forudsætning gradvist ved at smuldre. AI-baserede værktøjer som Copilot, Cody osv. automatiserer store dele af kodegenereringen, og mængden af kode, en enkelt udvikler kan producere, er eksponentielt stigende. Som følge heraf er karakteristika ved moderne sprog, der tidligere blev opfattet som fordele, gradvist ved at blive forældede ulemper.
Objektorienteret Design
AI kan analysere strukturer, hvor al information er specificeret inden for en enkelt funktion eller et modul, hurtigt og præcist. Omvendt, når konteksten øges, stiger antallet af områder, der skal udledes, hvilket reducerer AI's produktivitet og nøjagtighed. Kode skrevet i OOP spreder logik over flere objekter i stedet for at styre den ét sted, hvilket følgelig kræver mere kontekst for AI. Lad os 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 ovenstående kode skal AI gentage følgende udledninger for at vide, hvilken handling speak()-metoden faktisk udfører:
- Hvilken konkret klasse er animal en instans af?
- Hvor er speak()-metoden, der er overskrevet i den klasse, defineret?
- Hvor er definitionerne af Dog og Cat klasserne, og hvad er deres interne handlinger?
- Er der en mulighed for, at Dog og Cat klasserne kan blive overskrevet i andre klasser?
Denne information er ikke samlet i én fil eller én funktion, men kan kun forstås ved at følge relationerne mellem klassefiler og arvestrukturer. Desuden er elementer, der bestemmes ved runtime, såsom reflection eller dynamisk indlæsning, som en sort boks for AI, hvilket gør analyse praktisk talt umulig.
Syntactic Sugar og Udtryk
AI foretrækker eksplicitte handlinger frem for implicitte handlinger og foretrækker at kombinere simple strukturer for at skabe et enkelt svar frem for at bruge komplekse strukturer. Syntactic sugar tillader derimod forskellige udtryk, selvom deres interne handlinger ofte er identiske eller lignende. AI skal lære betydningen af disse forskellige udtryk individuelt, og det kan blive svært at bedømme prioriteten af, hvilken syntaks der skal anbefales i en given situation.
Mellemliggende Sprog og Virtuelle Maskiner
AI lærer for det meste baseret på source code. Mellemliggende sprog (bytecode) mister derimod betydning, såsom variabelnavne, under kompileringsprocessen og skal fortolkes igen af den virtuelle maskine ved eksekvering. Dette er en opgave, som AI har meget svært ved at forstå eller konvertere. For eksempel er konvertering fra TypeScript til Go mulig for AI, men konvertering af V8 engine bytecode til JVM bytecode eller machine code er praktisk talt umulig.
Det Ægte Moderne Sprog i AI-æraen
Gennem indholdet ovenfor kan vi se, at karakteristikaene ved moderne sprog faktisk er forældede elementer, der ikke er velegnede til AI-æraen. Hvilket sprog kan så være det mest egnede moderne sprog i AI-æraen? Hint kan findes i de elementer, som tidligere moderne sprog afviste. Et moderne sprog i AI-æraen skal:
- Have eksplicit syntaks og en naturlig flow.
- Bevæge sig væk fra overdreven OOP-struktur og have en flad og simpel struktur.
- Skabe flere funktioner med begrænsede grundlæggende keywords snarere end unødvendig syntactic sugar eller implicitte mønstre.
- Have et simpelt og forudsigeligt build system snarere end et komplekst et.
Det sprog, der bedst opfylder disse kriterier, er Golang. Go-sproget er designet til at implementere de fleste praktiske funktioner med et minimum af kerne-keywords og simple syntakskombinationer, og det udelukker strengt unødvendig abstraktion og implicitte handlinger. Dette er en struktur, der er fordelagtig ikke kun for udviklere, men også for AI til at fortolke og generere kode.
På denne måde passer Gos karakteristika, der sigter mod en forudsigelig og flad struktur, eksplicit flow og ensartet syntaks, bedre til et udviklingsmiljø, hvor AI aktivt deltager, i modsætning til eksisterende moderne sprog designet med menneskelige udviklere som udgangspunkt. Gos konservative designfilosofi, der engang blev anset for forældet, viser sig i stedet at være det mest avancerede valg i AI-æraen.