Open source programovací jazyk V

Preložené do kategórie otvorený kompilátor pre jazyk V. V je staticky typovaný strojovo kompilovaný jazyk, ktorý sa zameriava na to, aby bol vývoj jednoduchší na údržbu a veľmi rýchly na kompiláciu. Kód kompilátora, knižnice a súvisiace nástroje je otvorený pod licenciou MIT.

Syntax V je veľmi podobná Go, požičiava si niektoré konštrukty od Oberon, Rust a Swift. Jazyk je maximálne zjednodušený a podľa vývojára stačí 30 minút štúdia na osvojenie si základov dokumentáciu. Jazyk zároveň zostáva dosť výkonný a možno ho použiť na vykonávanie rovnakých úloh ako pri používaní iných programovacích jazykov (napríklad sú k dispozícii knižnice pre 2D/3D grafiku, vytváranie GUI a webových aplikácií).

Vytvorenie nového jazyka podnietila túžba dosiahnuť kombináciu jednoduchosti syntaxe jazyka Go, rýchlosti kompilácie, jednoduchosti paralelizácie operácií, prenosnosti a udržiavateľnosti kódu s výkonom C/C++, bezpečnosti Rust a generovanie strojového kódu vo fáze kompilácie Zig. Chcel som tiež získať kompaktný a rýchly kompilátor, ktorý by mohol pracovať bez externých závislostí, zbaviť sa globálneho rozsahu (globálnych premenných) a poskytnúť možnosť „horúceho“ opätovného načítania kódu.

V porovnaní s C++ je nový jazyk výrazne jednoduchší, poskytuje vyššiu rýchlosť kompilácie (až 400-krát), praktizuje techniky bezpečného programovania, je bez problémov s nedefinovaným správaním a poskytuje vstavané nástroje na paralelizáciu operácií. V porovnaní s Pythonom je V rýchlejší, jednoduchší, bezpečnejší a lepšie udržiavateľný. V porovnaní s Go nemá V žiadne globálne premenné, žiadne nuly, všetky hodnoty premenných musia byť vždy definované, všetky objekty sú štandardne nemenné, podporovaný je len jeden typ priradenia („a := 0“), výrazne kompaktnejšie runtime a veľkosť výsledných spustiteľných súborov, prítomnosť priamej prenosnosti z C, absencia garbage collectora, rýchlejšia serializácia, možnosť interpolácie reťazcov (“println('$foo: $bar.baz')”).

fnmain() {
oblasti := ['hra', 'web', 'nástroje', 'veda', 'systémy', 'GUI', 'mobil'] a := 10
Ak pravda {
do := 20
}
pre oblasť v oblastiach {
println('Dobrý deň, $area developeri!')
}
}

Vlastnosti projektu:

  • Kompaktný a rýchly kompilátor, ktorý spolu so štandardnou knižnicou zaberie cca 400 KB. Vysoká rýchlosť kompilácie sa dosahuje priamym generovaním strojového kódu a modularitou. Rýchlosť kompilácie je približne 1.2 milióna riadkov kódu za sekundu na jednom jadre CPU (je potrebné poznamenať, že počas prevádzky V môže používať C, potom rýchlosť klesne na 100 tisíc riadkov za sekundu). Vlastné zostavenie kompilátora, ktorý je tiež napísaný v jazyku V (v Go je aj referenčná verzia), trvá približne 0.4 sekundy. Do konca roka sa očakáva ukončenie prác na dodatočných optimalizáciách, ktoré skrátia čas zostavenia kompilátora na 0.15 sekundy. Súdiac podľa testov vykonaných vývojárom, vlastné zostavenie Go vyžaduje 512 MB miesta na disku a beží za jeden a pol minúty, Rust vyžaduje 30 GB a 45 minút, GCC - 8 GB a 50 minút, Clang - 90 GB a 25 minút,
    Swift - 70 GB a 90 minút;

  • Programy sú kompilované do spustiteľných súborov bez externých závislostí. Veľkosť spustiteľného súboru jednoduchého http servera po zostavení je len 65 KB;
  • Výkon kompilovaných aplikácií je na úrovni zostáv programov C;
  • Schopnosť bezproblémovej interakcie s kódom C bez dodatočnej réžie. Funkcie v jazyku C možno volať z kódu v jazyku V a naopak, kód v jazyku V je možné volať v akomkoľvek jazyku kompatibilnom s C;
  • Podpora prekladu projektov C/C++ do reprezentácie v jazyku V. Na preklad sa používa parser od Clang. Zatiaľ nie sú podporované všetky funkcie štandardu C, ale súčasné možnosti prekladača už postačujú preklad v jazyku V hry DOOM. C++ prekladač je stále v ranom štádiu vývoja;
  • Zabudovaná podpora serializácie bez viazanosti na runtime;
  • Minimalizácia operácií prideľovania pamäte;
  • Zabezpečenie bezpečnosti: žiadne NULL, globálne premenné, nedefinované hodnoty a predefinovanie premenných. Zabudovaná kontrola pretečenia vyrovnávacej pamäte. Podpora generických funkcií (Generic). Objekty a štruktúry, ktoré sa štandardne nedajú zmeniť;
  • Možnosť „horúceho“ opätovného načítania kódu (odrážanie zmien v kóde za chodu bez rekompilácie);
  • Nástroje na zabezpečenie multithreadingu. Rovnako ako v jazyku Go sa na spustenie nového vlákna spustenia používa konštrukcia ako „spustiť foo()“ (podobne ako „go foo()“). V budúcnosti sa plánuje podpora pre goroutiny a plánovač vlákien;
  • Podpora operačných systémov Windows, macOS, Linux, *BSD. Do konca roka sa plánuje pridať podpora pre Android a iOS;
  • Správa pamäte v čase kompilácie (ako v Rust), bez použitia garbage collector;
  • Dostupnosť multiplatformovej sady nástrojov pre grafický výstup s využitím GDI+/Cocoa a OpenGL na vykresľovanie (plánuje sa podpora pre DirectX, Vulkan a Metal API). K dispozícii sú nástroje na prácu s 3D objektmi, skeletové animácie a ovládanie kamery;
  • Dostupnosť knižnice na generovanie grafických rozhraní s dizajnovými prvkami natívnymi pre každý OS. Windows používa WinAPI/GDI+, macOS používa kakao a Linux používa vlastnú sadu miniaplikácií. Knižnica sa už používa vo vývoji volt — klient pre Slack, Skype, Gmail, Twitter a Facebook;

    Plánom je vytvoriť aplikáciu na návrh rozhrania podobnú Delphi, poskytnúť deklaratívne API podobné SwiftUI a React Native a poskytnúť podporu pre vytváranie mobilných aplikácií pre iOS a Android;

    Open source programovací jazyk V

  • Dostupnosť vstavaného webového rámca, ktorý sa používa na vytvorenie webovej stránky, fóra a blogu pre vývojárov projektu. Predkompilácia HTML šablón je podporovaná bez ich spracovania pri každej požiadavke;
  • Podpora krížovej kompilácie. Ak chcete vytvoriť spustiteľný súbor pre Windows, stačí spustiť „v -os windows“ a pre Linux – „v -os linux“ (podpora krížovej kompilácie pre macOS sa očakáva neskôr). Krížová kompilácia funguje aj pre grafické aplikácie;
  • Zabudovaný správca závislostí, správca balíkov a nástroje na zostavovanie. Na zostavenie programu stačí spustiť „v.“ bez použitia make alebo externých nástrojov. Ak chcete nainštalovať ďalšie knižnice, stačí spustiť napríklad „v get sqlite“;
  • Dostupnosť pluginov pre vývoj v jazyku V v editoroch Kód VS и elán.

dizajn vnímaný spoločenstvo s skepticizmus, keďže zverejnený kód ukázal, že ešte neboli implementované všetky deklarované schopnosti a implementácia všetkých plánov si vyžaduje veľmi veľa práce.
Navyše pôvodne úložisko malo zverejnené nefunkčný kód, ktorý má problémy so zostavením a spustením. Predpokladá sa, že autor ešte nedospel do štádia, v ktorom si začínajú všímať Paretov zákon, podľa ktorého 20 % úsilia produkuje 80 % výsledku a zvyšných 80 % úsilia produkuje iba 20 % výsledku.

Medzitým bolo z nástroja na sledovanie chýb projektu V odstránených asi 10 príspevkov demonštrácie kód nízkej kvality napríklad naznačuje použitie C-vložiek a použitie v knižnici funkcií na vymazanie adresára príkazu rm prostredníctvom volania os.system("rm -rf $cesta"). Autor projektu povedalže vymazal iba správy, publikovaný troll (so zmenami potvrdzujúcimi opodstatnenosť kritiky, zostal в upraviť históriu).

Zdroj: opennet.ru

Pridať komentár