GoSuda

Moderný jazyk v ére AI

By Rabbit Princess
views ...

Moderné jazyky

Moderný jazyk znamená jazyk, ktorý v porovnaní s jazykmi z minulosti poskytuje vyššiu produktivitu, stabilitu, bezpečnosť a udržiavateľnosť. Takéto jazyky aktívne zavádzajú najnovšie techniky a koncepty a vývojárom poskytujú efektívnejšie a bezpečnejšie vývojové nástroje. Reprezentatívne moderné jazyky zahŕňajú Java, Rust, Python, TypeScript atď., a tieto majú nasledujúce charakteristiky.

1. Objektovo orientované programovanie ( OOP )

Väčšina moderných jazykov bola navrhnutá na základe konceptu objektovo orientovaného programovania. Objektovo orientované programovanie podporuje princípy ako zapuzdrenie, dedičnosť a polymorfizmus, a tým, že rozdeľuje komplexné systémy na menšie jednotky objektov, robí štruktúru programu jasnou a flexibilnou. Toto je obzvlášť efektívne pri riadení nákladov na vývoj a pracovných síl pri vývoji rozsiahleho softvéru a pri znižovaní problémov, ktoré môžu nastať pri údržbe.

2. Syntaktický cukor a výrazy

Moderné jazyky poskytujú rôznorodý syntaktický cukor a syntax založenú na výrazoch na zvýšenie čitateľnosti kódu a produktivity vývoja. Funkcie ako ternárny operátor, lambda výrazy, pattern matching redukujú boilerplate kód, robia kód predvídateľným a zlepšujú produktivitu vývojára.

3. Modulárny systém

Moderné jazyky umožňujú riadiť program rozdelením na viacero jednotiek prostredníctvom modulárneho systému. Toto uľahčuje opätovné použitie kódu a správu závislostí a zjednodušuje údržbu aj pri narastajúcom rozsahu projektu. Reprezentatívne príklady zahŕňajú Java Maven/Gradle, Rust Cargo, TypeScript npm/yarn atď.

4. Medzijazyk a virtuálny stroj

Moderné jazyky zavádzajú medzijazyky a virtuálne stroje pre platformovú nezávislosť, optimalizáciu výkonu a bezpečnosť. Reprezentatívne príklady zahŕňajú JVM, LLVM, WASM, GraalVM atď.

Vývoj v ére AI a obmedzenia moderných jazykov

Moderné jazyky vznikli na základe predpokladu, že väčšinu kódu píšu ľudia. Prirodzene, cieľom moderných jazykov je znížiť opakujúce sa úlohy, zvýšiť produktivitu a efektívne implementovať rozsiahly softvér prostredníctvom štruktúry, ktorá umožňuje vývojárom spolupracovať. V ére AI sa však tento predpoklad postupne rúca. Nástroje založené na AI, ako Copilot, Cody atď., automatizujú veľkú časť písania kódu a množstvo kódu, ktoré môže vygenerovať jeden vývojár, sa exponenciálne zvyšuje. V dôsledku toho sa vlastnosti moderných jazykov, ktoré boli v minulosti považované za výhody, postupne menia na zastarané nevýhody.

Objektovo orientované programovanie

AI dokáže rýchlo a presne analyzovať štruktúru, kde sú všetky informácie explicitne uvedené v rámci jednej funkcie alebo modulu. Naopak, s narastajúcim kontextom sa zvyšuje rozsah na inferenciu, čím sa znižuje produktivita a presnosť AI. Kód napísaný v OOP skôr rozdeľuje logiku medzi viaceré objekty, než aby ju spravoval na jednom mieste, čo v konečnom dôsledku vyžaduje od AI viac kontextu. Pozrime sa na nasledujúci kód.

 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}

V kóde vyššie musí AI opakovať nasledujúce inferencie, aby zistila, čo metóda speak() skutočne robí:

  1. Aká konkrétna trieda je inštanciou animal?
  2. Kde je definovaná metóda speak(), ktorá bola v danej triede prepísaná?
  3. Kde sú definície tried Dog a Cat a aké sú ich vnútorné operácie?
  4. Je možné, že triedy Dog a Cat budú prepísané v iných triedach?

Tieto informácie nie sú zhromaždené v jednom súbore alebo jednej funkcii, ale dajú sa pochopiť iba sledovaním vzťahov medzi súbormi tried a štruktúrou dedičnosti. Navyše, prvky, ktoré sa rozhodujú počas behu, ako je reflection alebo dynamické načítanie, sú pre AI ako čierna skrinka, čo v podstate znemožňuje analýzu.

Syntaktický cukor a výrazy

AI uprednostňuje explicitné operácie pred implicitnými operáciami a radšej kombinuje jednoduché štruktúry na vytvorenie jedného správneho riešenia, než aby používala komplexné štruktúry. Naopak, syntaktický cukor umožňuje rôzne výrazy, zatiaľ čo ich vnútorné operácie sú často rovnaké alebo podobné. AI sa musí učiť význam týchto rôznych výrazov jednotlivo a môže byť pre ňu ťažké určiť prioritu, akú syntax má odporučiť v konkrétnej situácii.

Medzijazyk a virtuálny stroj

AI sa väčšinou učí zo zdrojového kódu. Naopak, medzijazyk (bytecode) odstraňuje význam premenných mien atď. počas procesu kompilácie a virtuálny stroj ho musí počas behu reinterpretovať. Toto je pre AI veľmi ťažká úloha na pochopenie alebo konverziu. Napríklad konverzia z TypeScript do Go je pre AI možná, ale konverzia bytecode V8 engine na bytecode JVM alebo strojový kód je prakticky nemožná.

Skutočný moderný jazyk v ére AI

Prostredníctvom vyššie uvedeného obsahu môžeme vidieť, že charakteristiky moderných jazykov sú v skutočnosti zastarané prvky, ktoré nie sú vhodné pre éru AI. Aký jazyk by teda mohol byť najvhodnejším moderným jazykom v ére AI? Nápovedu môžeme získať z prvkov, ktoré moderné jazyky v minulosti odmietali. Moderný jazyk éry AI by mal:

  1. Mať explicitnú syntax a prirodzený tok.
  2. Vzdialiť sa od prehnaných OOP štruktúr a mať plochú a jednoduchú štruktúru.
  3. Namiesto zbytočného syntaktického cukru alebo implicitných vzorov vytvárať viacero funkcií len s obmedzenými základnými kľúčovými slovami.
  4. Mať jednoduchý a predvídateľný build systém namiesto komplexného build systému.

Jazyk, ktorý najlepšie zodpovedá týmto kritériám, je Golang. Jazyk Go bol navrhnutý tak, aby umožnil implementáciu väčšiny praktických funkcií iba s minimom základných kľúčových slov a jednoduchými kombináciami syntaxe, a dôsledne vylučuje zbytočnú abstrakciu a implicitné operácie. Toto je štruktúra, ktorá je výhodná nielen pre vývojárov, ale aj pre AI pri interpretácii a generovaní kódu.

Charakteristiky Go, ktoré smerujú k predvídateľnej a plochej štruktúre, explicitnému toku a konzistentnej syntaxi, sa na rozdiel od existujúcich moderných jazykov navrhnutých pre ľudských vývojárov lepšie hodia do vývojového prostredia, kde sa AI aktívne podieľa. Konzervatívna filozofia návrhu Go, ktorá bola kedysi považovaná za zastaranú, sa v ére AI paradoxne stáva najpokročilejšou voľbou.