V programozási nyelv nyílt forráskódú

Lefordított a nyílt fordító kategóriájába nyelv V. A V egy statikusan tipizált gépi fordítású nyelv, amely a fejlesztés egyszerűbb karbantartására és nagyon gyors fordítására összpontosít. Fordítókód, könyvtárak és kapcsolódó eszközök nyisd ki az MIT engedélye alapján.

A V szintaxisa nagyon hasonlít a Go-hoz, néhány konstrukciót kölcsönzött az Oberontól, a Rusttól és a Swifttől. A nyelv a lehető legnagyobb mértékben leegyszerűsödik, és a fejlesztő szerint 30 perc tanulás elegendő az alapok elsajátításához dokumentáció. Ugyanakkor a nyelv meglehetősen erős marad, és ugyanazon feladatok elvégzésére használható, mint más programozási nyelvek használatakor (például könyvtárak állnak rendelkezésre 2D/3D grafikákhoz, grafikus felhasználói felületek és webes alkalmazások létrehozásához).

Egy új nyelv létrehozását a Go nyelv egyszerű szintaxisának, fordítási sebességének, a műveletek egyszerű párhuzamosításának, a kód hordozhatóságának és karbantarthatóságának a C/C++ teljesítményével, a Rust és a Rust biztonságának ötvözésére való törekvés ösztönözte. gépi kód generálása a Zig fordítási szakaszban. Szerettem volna egy kompakt és gyors fordítót is beszerezni, amely külső függőségek nélkül tud működni, megszabadulni a globális hatókörtől (globális változók), és lehetőséget biztosít a kód „forró” újratöltésére.

Az új nyelv a C++-hoz képest lényegesen egyszerűbb, gyorsabb fordítási sebességet biztosít (akár 400-szor), biztonságos programozási technikákat gyakorol, mentes a definiálatlan viselkedés problémáitól, és beépített eszközöket biztosít a műveletek párhuzamosításához. A Pythonhoz képest a V gyorsabb, egyszerűbb, biztonságosabb és karbantarthatóbb. A Go-hoz képest a V-nek nincs globális változója, nincs nulla, minden változóértéket mindig definiálni kell, alapértelmezés szerint minden objektum megváltoztathatatlan, csak egy típusú hozzárendelés támogatott („a := 0”), egy lényegesen kompaktabb futási idő és az eredményül kapott végrehajtható fájlok mérete, a C-ből való közvetlen hordozhatóság megléte, a szemétgyűjtő hiánya, a gyorsabb szerializáció, a karakterláncok interpolálása (“println('$foo: $bar.baz')”).

fn main() {
területek := ['játék', 'web', 'eszközök', 'tudomány', 'rendszerek', 'GUI', 'mobil'] a := 10
ha igaz {
to := 20
}
területen lévő területre {
println('Szervusz $area fejlesztők!')
}
}

A projekt jellemzői:

  • Kompakt és gyors fordító, amely a szabványos könyvtárral együtt körülbelül 400 KB-ot foglal el. A nagy fordítási sebesség a gépi kód közvetlen generálásával és a modularitás révén érhető el. A fordítási sebesség hozzávetőlegesen 1.2 millió sornyi kód másodpercenként egy CPU magon (megjegyzendő, hogy működés közben V használhatja a C-t, ekkor a sebesség 100 ezer sor/s-ra csökken). A szintén V nyelven írt fordító (a Go-ban van referencia verzió is) önösszeállítása körülbelül 0.4 másodpercet vesz igénybe. Az év végére várhatóan befejeződnek a további optimalizálások, amelyek 0.15 másodpercre csökkentik a fordító felépítési idejét. A fejlesztő által végzett tesztek alapján a Go önálló összeszerelése 512 MB lemezterületet igényel és másfél perc alatt fut le, a Rust 30 GB és 45 perc, a GCC - 8 GB és 50 perc, a Clang - 90 GB, ill. 25 perc,
    Swift - 70 GB és 90 perc;

  • A programokat külső függőségek nélkül, végrehajtható fájlokba fordítják. Egy egyszerű http-kiszolgáló futtatható fájlmérete összeszerelés után mindössze 65 KB;
  • A lefordított alkalmazások teljesítménye a C programok összeállításainak szintjén van;
  • A C kóddal való zökkenőmentes interakció képessége további többletköltség nélkül. A C nyelvű függvények a V nyelvű kódból hívhatók, és fordítva, a V nyelvű kód bármely C-vel kompatibilis nyelven meghívható;
  • C/C++ projektek V nyelvű reprezentációra fordításának támogatása A fordításhoz a Clang elemzője használható. A C szabvány még nem minden funkciója támogatott, de a fordító jelenlegi képességei már elegendőek fordítás a V játék DOOM nyelvén. A C++ fordító még a fejlesztés korai szakaszában van;
  • Beépített szerializálási támogatás anélkül, hogy futási időhöz lenne kötve;
  • A memóriafoglalási műveletek minimalizálása;
  • A biztonság biztosítása: nincs NULL, globális változók, nem definiált értékek és a változók újradefiniálása. Beépített puffertúllépés-ellenőrzés. Általános funkciók támogatása (Generic). Alapértelmezés szerint nem módosítható objektumok és struktúrák;
  • Lehetőség a „forró” kód újratöltésére (a kód változásainak menet közbeni tükrözése, újrafordítás nélkül);
  • Eszközök a többszálú kötés biztosítására. Csakúgy, mint a Go nyelvben, a „run foo()”-hoz hasonló konstrukciót használnak egy új végrehajtási szál indítására (hasonlóan a „go foo()”-hoz). A jövőben a gorutinok és a szálütemező támogatását tervezik;
  • Windows, macOS, Linux, *BSD operációs rendszerek támogatása. A tervek szerint az év végére hozzáadják az Android és az iOS támogatását;
  • Memóriakezelés fordítási időben (mint a Rustban), szemétgyűjtő használata nélkül;
  • Többplatformos eszközkészlet rendelkezésre állása grafikus kimenethez, GDI+/Cocoa és OpenGL használatával a rendereléshez (a tervben van a DirectX, Vulkan és Metal API-k támogatása). Vannak eszközök a 3D objektumokkal való munkavégzéshez, a csontváz animációhoz és a kameravezérléshez;
  • Egy könyvtár rendelkezésre állása grafikus felületek generálásához az egyes operációs rendszerekben natív tervezési elemekkel. A Windows WinAPI/GDI+-t, a macOS a Cocoát, a Linux pedig a saját widgetkészletét használja. A könyvtárat már használják a fejlesztés során Volt - kliens Slack, Skype, Gmail, Twitter és Facebook számára;

    A tervek között szerepel egy Delphi-szerű felülettervező alkalmazás létrehozása, a SwiftUI-hoz és a React Native-hoz hasonló deklaratív API biztosítása, valamint iOS és Android mobilalkalmazások készítésének támogatása;

    V programozási nyelv nyílt forráskódú

  • Beépített webes keretrendszer elérhetősége, amellyel weboldalt, fórumot és blogot készítenek a projektfejlesztők számára. A HTML-sablonok előfordítása támogatott, anélkül, hogy minden kérésnél fel kellene dolgozni őket;
  • Keresztösszeállítás támogatása. A Windows futtatható fájl létrehozásához csak futtassa a „v -os windows”, Linux esetén pedig a „v -os linux” parancsot (a macOS-hez később várható a keresztfordítás támogatása). A keresztfordítás grafikus alkalmazásoknál is működik;
  • Beépített függőségkezelő, csomagkezelő és összeállítási eszközök. A program felépítéséhez csak futtassa a „v.”-t make vagy külső segédprogramok használata nélkül. További könyvtárak telepítéséhez futtassa például a „v get sqlite” parancsot;
  • A V nyelvű fejlesztéshez szükséges bővítmények elérhetősége a szerkesztőkben VS kód и életkedv.

tervezés érzékelt közösséggel szkepticizmus, mivel a közzétett kód azt mutatta, hogy még nem valósult meg minden deklarált képesség, és nagyon sok munkára van szükség minden terv megvalósításához.
Ezenkívül kezdetben az adattárnak volt közzétéve törött kód, amelynek összeszerelési és végrehajtási problémái vannak. Feltételezhető, hogy a szerző még nem érte el azt a szakaszt, amikor észreveszi Pareto törvénye, mely szerint az erőfeszítés 20%-a az eredmény 80%-át, a maradék 80%-a pedig csak az eredmény 20%-át hozza létre.

Eközben a Project V hibakövetőjéből körülbelül 10 bejegyzést távolítottak el demonstráció az alacsony minőségű kód például a C-beillesztések használatát jelzi, és a függvénytárban az rm parancs könyvtárának törlésére szolgáló függvények használatát az os.system("rm -rf $path" hívással). A projekt szerzője mondotthogy csak az üzeneteket törölte, közzétett manó (a kritika érvényességét megerősítő változtatásokkal, maradt в előzmények szerkesztése).

Forrás: opennet.ru

Hozzászólás