Open source programovací jazyk V

Přeloženo do kategorie otevřeného kompilátoru pro jazyk V. V je staticky typovaný strojově kompilovaný jazyk, který se zaměřuje na to, aby byl vývoj snadnější na údržbu a velmi rychlý na kompilaci. Kód kompilátoru, knihovny a související nástroje je otevřeno pod licencí MIT.

Syntaxe V je velmi podobná Go, přejímá některé konstrukce od Oberona, Rusta a Swifta. Jazyk je maximálně zjednodušený a podle vývojáře stačí 30 minut studia k naučení základů dokumentace. Jazyk zároveň zůstává poměrně výkonný a lze s ním provádět stejné úkoly jako při používání jiných programovacích jazyků (například jsou k dispozici knihovny pro 2D/3D grafiku, tvorbu GUI a webových aplikací).

Vytvoření nového jazyka bylo vyvoláno touhou dosáhnout kombinace jednoduchosti syntaxe jazyka Go, rychlosti kompilace, snadné paralelizace operací, přenositelnosti a udržovatelnosti kódu s výkonem C/C++, bezpečností Rust a generování strojového kódu ve fázi kompilace Zig. Chtěl jsem také získat kompaktní a rychlý kompilátor, který by mohl pracovat bez externích závislostí, zbavit se globálního rozsahu (globálních proměnných) a poskytnout možnost „horkého“ znovu načtení kódu.

Ve srovnání s C++ je nový jazyk výrazně jednodušší, poskytuje vyšší rychlost kompilace (až 400krát), praktikuje bezpečné programovací techniky, je bez problémů s nedefinovaným chováním a poskytuje vestavěné nástroje pro paralelizaci operací. V porovnání s Pythonem je V rychlejší, jednodušší, bezpečnější a lépe udržovatelný. Ve srovnání s Go nemá V žádné globální proměnné, žádné hodnoty null, všechny hodnoty proměnných musí být vždy definovány, všechny objekty jsou standardně neměnné, je podporován pouze jeden typ přiřazení („a := 0“), výrazně kompaktnější runtime a velikost výsledných spustitelných souborů, přítomnost přímé přenositelnosti z C, absence garbage collectoru, rychlejší serializace, možnost interpolace řetězců (“println('$foo: $bar.baz')”).

fn main() {
oblasti := ['hra', 'web', 'nástroje', 'věda', 'systémy', 'GUI', 'mobil'] a := 10
je-li pravda {
do := 20
}
pro oblast v oblastech {
println('Dobrý den, $area vývojáři!')
}
}

Vlastnosti projektu:

  • Kompaktní a rychlý kompilátor, který spolu se standardní knihovnou zabere cca 400 KB. Vysoké rychlosti kompilace je dosaženo přímým generováním strojového kódu a modularitou. Rychlost kompilace je přibližně 1.2 milionu řádků kódu za sekundu na jedno jádro CPU (je třeba poznamenat, že během operace V může používat C, pak rychlost klesne na 100 tisíc řádků za sekundu). Vlastní sestavení kompilátoru, který je rovněž napsán v jazyce V (v Go je i referenční verze), trvá přibližně 0.4 sekundy. Do konce roku se očekává dokončení práce na dalších optimalizacích, které zkrátí dobu sestavení kompilátoru na 0.15 sekundy. Soudě podle testů provedených vývojářem, vlastní sestavení Go vyžaduje 512 MB místa na disku a běží za jednu a půl minuty, Rust vyžaduje 30 GB a 45 minut, GCC - 8 GB a 50 minut, Clang - 90 GB a 25 minut,
    Swift - 70 GB a 90 minut;

  • Programy jsou kompilovány do spustitelných souborů bez externích závislostí. Velikost spustitelného souboru jednoduchého http serveru po sestavení je pouze 65 KB;
  • Výkon zkompilovaných aplikací je na úrovni sestavení programů C;
  • Schopnost bezproblémové interakce s kódem C bez další režie. Funkce v jazyce C lze volat z kódu v jazyce V a naopak kód v jazyce V lze volat v libovolném jazyce kompatibilním s C;
  • Podpora překladu projektů C/C++ do reprezentace v jazyce V. K překladu je použit parser od Clang. Zatím nejsou podporovány všechny funkce standardu C, ale současné možnosti překladače již postačují překlad v jazyce V hry DOOM. Překladač C++ je stále v rané fázi vývoje;
  • Vestavěná podpora serializace, aniž by byla vázána na běhové prostředí;
  • Minimalizace operací alokace paměti;
  • Zajištění bezpečnosti: žádné NULL, globální proměnné, nedefinované hodnoty a předefinování proměnných. Vestavěná kontrola přetečení vyrovnávací paměti. Podpora generických funkcí (Generic). Objekty a struktury, které nelze ve výchozím nastavení změnit;
  • Možnost „horkého“ načtení kódu (odrážející změny v kódu za běhu bez rekompilace);
  • Nástroje pro zajištění multithreadingu. Stejně jako v jazyce Go se konstrukce jako „run foo()“ používá ke spuštění nového vlákna provádění (podobně jako „go foo()“). V budoucnu se plánuje podpora goroutin a plánovače vláken;
  • Podpora operačních systémů Windows, macOS, Linux, *BSD. Do konce roku se plánuje přidání podpory pro Android a iOS;
  • Správa paměti v době kompilace (jako v Rustu), bez použití garbage collectoru;
  • Dostupnost multiplatformní sady nástrojů pro grafický výstup využívající GDI+/Cocoa a OpenGL pro vykreslování (plánuje se podpora rozhraní DirectX, Vulkan a Metal API). K dispozici jsou nástroje pro práci s 3D objekty, skeletální animace a ovládání kamery;
  • Dostupnost knihovny pro generování grafických rozhraní s designovými prvky nativními pro každý OS. Windows používá WinAPI/GDI+, macOS používá kakao a Linux používá vlastní sadu widgetů. Knihovna se již používá ve vývoji Volt — klient pro Slack, Skype, Gmail, Twitter a Facebook;

    Plánem je vytvořit aplikaci pro návrh rozhraní podobnou Delphi, poskytnout deklarativní API podobné SwiftUI a React Native a poskytnout podporu pro vytváření mobilních aplikací pro iOS a Android;

    Open source programovací jazyk V

  • Dostupnost vestavěného webového rámce, který se používá k vytvoření webu, fóra a blogu pro vývojáře projektu. Je podporována předkompilace HTML šablon bez jejich zpracování na každý požadavek;
  • Podpora křížové kompilace. Chcete-li sestavit spustitelný soubor pro Windows, stačí spustit „v -os windows“ a pro Linux – „v -os linux“ (podpora křížové kompilace pro macOS se očekává později). Křížová kompilace funguje také pro grafické aplikace;
  • Vestavěný správce závislostí, správce balíčků a nástroje pro vytváření. Chcete-li program sestavit, stačí spustit „v.“ bez použití make nebo externích nástrojů. Chcete-li nainstalovat další knihovny, stačí spustit například „v get sqlite“;
  • Dostupnost pluginů pro vývoj v jazyce V v editorech VS kód и Elán.

Vývoj vnímaný společenství s skepticismus, protože zveřejněný kód ukázal, že ještě nebyly implementovány všechny deklarované schopnosti a implementace všech plánů vyžaduje velmi velké množství práce.
Navíc zpočátku úložiště mělo vyslán nefunkční kód, který má problémy se sestavováním a prováděním. Předpokládá se, že autor ještě nedospěl do fáze, kdy si začínají všímat Paretův zákon, podle kterého 20 % úsilí vytváří 80 % výsledku a zbývajících 80 % úsilí vytváří pouze 20 % výsledku.

Mezitím bylo z nástroje pro sledování chyb projektu V odstraněno asi 10 příspěvků demonstrace kód nízké kvality například označuje použití C-vložek a použití v knihovně funkcí pro smazání adresáře příkazu rm prostřednictvím volání os.system("rm -rf $cesta"). Autor projektu uvedlže pouze smazal zprávy, zveřejněno troll (se změnami potvrzujícími platnost kritiky, zůstal в upravit historii).

Zdroj: opennet.ru

Přidat komentář