Limbajul de programare V open source

Tradus în categoria compilatorului deschis pentru limba V. V este un limbaj compilat de mașină tip static, care se concentrează pe dezvoltarea mai ușor de întreținut și foarte rapid de compilat. Cod compilator, biblioteci și instrumente aferente deschis sub licența MIT.

Sintaxa lui V este foarte asemănătoare cu Go, împrumutând unele constructe de la Oberon, Rust și Swift. Limbajul este simplificat pe cât posibil și, potrivit dezvoltatorului, 30 de minute de studiu sunt suficiente pentru a învăța elementele de bază documentație. În același timp, limbajul rămâne destul de puternic și poate fi folosit pentru a îndeplini aceleași sarcini ca și atunci când utilizați alte limbaje de programare (de exemplu, bibliotecile sunt disponibile pentru grafica 2D/3D, crearea de GUI și aplicații web).

Crearea unui nou limbaj a fost determinată de dorința de a realiza o combinație între simplitatea sintaxei limbajului Go, viteza de compilare, ușurința paralelizării operațiunilor, portabilitatea și mentenabilitatea codului cu performanța C/C++, securitatea Rust și generarea codului de mașină în etapa de compilare Zig. De asemenea, am vrut să obțin un compilator compact și rapid care să funcționeze fără dependențe externe, să scape de domeniul global (variabilele globale) și să ofere posibilitatea de a reîncărca codul „la cald”.

În comparație cu C++, noul limbaj este semnificativ mai simplu, oferă o viteză de compilare mai rapidă (de până la 400 de ori), practică tehnici de programare sigure, nu are probleme cu comportamentul nedefinit și oferă instrumente încorporate pentru paralelizarea operațiilor. În comparație cu Python, V este mai rapid, mai simplu, mai sigur și mai ușor de întreținut. În comparație cu Go, V nu are variabile globale, nu are valori nule, toate valorile variabilelor trebuie întotdeauna definite, toate obiectele sunt imuabile implicit, este acceptat un singur tip de atribuire („a := 0”), o formă semnificativ mai compactă runtime și dimensiunea fișierelor executabile rezultate, prezența portabilității directe din C, absența unui colector de gunoi, serializare mai rapidă, capacitatea de a interpola șiruri („println('$foo: $bar.baz')”).

fn principal() {
zone := [„joc”, „web”, „instrumente”, „știință”, „sisteme”, „GUI”, „mobil”] a := 10
daca e adevarat {
la := 20
}
pentru zona din zone {
println('Bună ziua, dezvoltatori $zonă!')
}
}

Caracteristicile proiectului:

  • Compilator compact și rapid, care împreună cu biblioteca standard ocupă aproximativ 400 KB. Viteza mare de compilare este atinsă prin generarea directă de cod de mașină și modularitate. Viteza de compilare este de aproximativ 1.2 milioane de linii de cod pe secundă pe un nucleu CPU (se remarcă faptul că în timpul operațiunii V poate folosi C, apoi viteza scade la 100 de mii de linii pe secundă). Auto-asamblarea compilatorului, care este scris și în limbajul V (există și o versiune de referință în Go), durează aproximativ 0.4 secunde. Până la sfârșitul anului, se așteaptă ca lucrările la optimizări suplimentare să fie finalizate, ceea ce va reduce timpul de construire a compilatorului la 0.15 secunde. Judecând după testele efectuate de dezvoltator, auto-asamblarea Go necesită 512 MB de spațiu pe disc și rulează într-un minut și jumătate, Rust necesită 30 GB și 45 de minute, GCC - 8 GB și 50 de minute, Clang - 90 GB și 25 de minute,
    Swift - 70 GB și 90 de minute;

  • Programele sunt compilate în fișiere executabile fără dependențe externe. Dimensiunea fișierului executabil al unui server http simplu după asamblare este de numai 65 KB;
  • Performanța aplicațiilor compilate este la nivelul ansamblurilor de programe C;
  • Abilitatea de a interacționa perfect cu codul C, fără costuri suplimentare. Funcțiile în limbajul C pot fi apelate din cod în limbajul V și invers, codul în limbajul V poate fi apelat în orice limbaj compatibil cu C;
  • Suport pentru traducerea proiectelor C/C++ într-o reprezentare în limbajul V. Un parser de la Clang este folosit pentru traducere. Nu toate caracteristicile standardului C sunt încă acceptate, dar capacitățile actuale ale traducătorului sunt deja suficiente pentru traducere în limbajul jocului V DOOM. Traducătorul C++ este încă într-un stadiu incipient de dezvoltare;
  • Suport de serializare încorporat, fără a fi legat de timpul de execuție;
  • Minimizarea operațiunilor de alocare a memoriei;
  • Asigurarea siguranței: fără NULL, variabile globale, valori nedefinite și redefinire a variabilelor. Verificarea depășirii tamponului încorporată. Suport pentru funcții generice (Generic). Obiecte și structuri care nu pot fi modificate implicit;
  • Posibilitatea reîncărcării codului „fierbinte” (reflectând modificările de cod din mers fără recompilare);
  • Instrumente pentru asigurarea multithreadingului. La fel ca în limbajul Go, un construct precum „run foo()” este folosit pentru a începe un nou fir de execuție (similar cu „go foo()”). În viitor, este planificat suport pentru goroutine și un planificator de fire;
  • Suport pentru sistemele de operare Windows, macOS, Linux, *BSD. Se plănuiește adăugarea de suport pentru Android și iOS până la sfârșitul anului;
  • Gestionarea memoriei în timpul compilării (ca în Rust), fără a utiliza un colector de gunoi;
  • Disponibilitatea unui set de instrumente multi-platformă pentru ieșirea grafică, folosind GDI+/Cocoa și OpenGL pentru randare (este planificat suport pentru API-urile DirectX, Vulkan și Metal). Există instrumente pentru lucrul cu obiecte 3D, animație scheletică și controlul camerei;
  • Disponibilitatea unei biblioteci pentru generarea de interfețe grafice cu elemente de design native pentru fiecare sistem de operare. Windows folosește WinAPI/GDI+, macOS folosește Cocoa, iar Linux folosește propriul set de widget-uri. Biblioteca este deja folosită în dezvoltare Volt — client pentru Slack, Skype, Gmail, Twitter și Facebook;

    Planul este de a crea o aplicație de design de interfață asemănătoare Delphi, de a oferi un API declarativ similar cu SwiftUI și React Native și de a oferi suport pentru crearea de aplicații mobile pentru iOS și Android;

    Limbajul de programare V open source

  • Disponibilitatea unui cadru web încorporat, care este utilizat pentru a crea un site web, un forum și un blog pentru dezvoltatorii de proiecte. Este acceptată precompilarea șabloanelor HTML, fără a le procesa la fiecare solicitare;
  • Suport pentru compilare încrucișată. Pentru a construi fișierul executabil pentru Windows, trebuie doar să rulați „v -os windows”, iar pentru Linux - „v -os linux” (suportul pentru compilarea încrucișată pentru macOS este așteptat mai târziu). Compilarea încrucișată funcționează și pentru aplicații grafice;
  • Manager de dependență, manager de pachete și instrumente de construcție încorporate. Pentru a construi programul, rulați „v.”, fără a utiliza make sau utilitare externe. Pentru a instala biblioteci suplimentare, trebuie doar să rulați, de exemplu, „v get sqlite”;
  • Disponibilitatea pluginurilor pentru dezvoltare în limbajul V în editori Codul VS и sevă.

desen perceput comunitate cu scepticism, deoarece codul publicat a arătat că nu toate capabilitățile declarate au fost încă implementate și este necesară o cantitate foarte mare de muncă pentru implementarea tuturor planurilor.
În plus, inițial depozitul avea plasat cod spart care are probleme cu asamblarea și execuția. Se presupune că autorul nu a ajuns încă în stadiul în care încep să observe legea lui Pareto, conform căreia 20% din efort produce 80% din rezultat, iar restul de 80% din efort produce doar 20% din rezultat.

Între timp, instrumentul de urmărire a erorilor Project V a fost eliminat din aproximativ 10 postări demonstrație codul de calitate scăzută, de exemplu, indică utilizarea C-inserts și utilizarea în biblioteca de funcții pentru ștergerea directorului comenzii rm prin apelul os.system("rm -rf $path"). Autorul proiectului a spuscă a șters doar mesajele, publicat revenire (cu modificări care confirmă validitatea criticii, a rămas в editează istoricul).

Sursa: opennet.ru

Adauga un comentariu