Lingua di prugrammazione V open source

Traduttu in a categuria di compilatore apertu per lingua V. V hè una lingua cumpilata in macchina staticamente tipata chì si cuncintra à fà u sviluppu più faciule da mantene è assai veloce da cumpilà. Codice di compilatore, biblioteche è arnesi cunnessi apertu sottu a licenza MIT.

A sintassi di V hè assai simile à Go, pigliate in prestito alcune custruzzioni da Oberon, Rust è Swift. A lingua hè simplificata quant'è pussibule è, sicondu u sviluppatore, 30 minuti di studiu sò abbastanza per amparà i principii ducumentazione. À u listessu tempu, a lingua ferma abbastanza putente è pò esse aduprata per eseguisce i stessi travaglii cum'è quandu si usanu altre lingue di prugrammazione (per esempiu, e biblioteche sò dispunibuli per gràfiche 2D / 3D, creanu GUI è applicazioni web).

A creazione di una nova lingua hè stata incitata da u desideriu di ottene una cumminazione di a simplicità di sintassi di a lingua Go, a velocità di compilazione, a facilità di parallelizazione di l'operazioni, a portabilità è a manutenibilità di u codice cù a prestazione di C / C ++, a sicurità di Rust è a generazione di codice macchina in u stadiu di compilazione Zig. Vuliu ancu avè un compilatore compactu è veloce chì puderia travaglià senza dipendenze esterne, sguassate di u scopu glubale (variabili globale) è furnisce l'abilità di "calda" ricaricà u codice.

Comparatu à C ++, a nova lingua hè significativamente più simplice, furnisce una velocità di compilazione più veloce (finu à 400 volte), pratica tecniche di prugrammazione sicura, hè libera di prublemi cù u cumpurtamentu indefinitu, è furnisce strumenti integrati per l'operazioni parallelisate. Comparatu à Python, V hè più veloce, più simplice, più sicura è più mantenevule. Comparatu à Go, V ùn hà micca variabili glubale, nè nulli, tutti i valori di variàbili devenu esse sempre definiti, tutti l'uggetti sò immutabili per difettu, solu un tipu d'assignazione hè supportatu ("a := 0"), un significativu più compactu. runtime è a dimensione di i fugliali eseguibili resultanti, a prisenza di portabilità diretta da C, l'absenza di un cullettore di basura, a serializazione più veloce, a capacità di interpolà strings ("println('$foo: $bar.baz')").

fn main() {
aree := ['ghjocu', 'web', 'arnesi', 'scienza', 'sistemi', 'GUI', 'mobile'] a := 10
se veru {
a := 20
}
per l'area in zone {
println('Ciao, sviluppatori di $zona!')
}
}

Caratteristiche di u prughjettu:

  • Cumpilatore compactu è veloce, chì inseme cù a libreria standard occupa circa 400 KB. L'alta velocità di compilazione hè ottenuta attraversu a generazione diretta di codice macchina è modularità. A velocità di compilazione hè di circa 1.2 milioni di linee di codice per seconda nantu à un core CPU (si nutà chì durante l'operazione V pò aduprà C, allora a vitezza scende à 100 mila linee per seconda). L'auto-assemblea di u compilatore, chì hè ancu scrittu in a lingua V (ci hè ancu una versione di riferimentu in Go), dura circa 0.4 seconde. À a fine di l'annu, u travagliu nantu à ottimisazioni supplementari hè previstu per esse cumpletu, chì riducerà u tempu di compilazione di compilatore à 0.15 seconde. A ghjudicà da i testi realizati da u sviluppatore, l'auto-assemblea di Go richiede 512 MB di spaziu di discu è corre in un minutu è mezu, Rust richiede 30 GB è 45 minuti, GCC - 8 GB è 50 minuti, Clang - 90 GB è 25 minuti,
    Swift - 70 GB è 90 minuti;

  • I prugrammi sò compilati in fugliali eseguibili senza dipendenze esterne. A dimensione di u schedariu eseguibile di un servitore http simplice dopu l'assemblea hè solu 65 KB;
  • U rendiment di l'applicazioni compilate hè à u livellu di l'assemblee di i prugrammi C;
  • A capacità di interagisce in modu perfettu cù u codice C, senza overhead supplementu. Funzioni in a lingua C pò esse chjamatu da u codice in a lingua V, è vice versa, u codice in a lingua V pò esse chjamatu in ogni lingua cumpatibile cù C;
  • Supportu per a traduzzione di prughjetti C/C++ in una rapprisintazioni in a lingua V. Un parser da Clang hè utilizatu per a traduzzione. Ùn sò micca tutte e funzioni di u standard C sò ancu supportate, ma e capacità attuali di u traduttore sò digià abbastanza per traduzzione in a lingua di u ghjocu V DOOM. U traduttore C++ hè sempre in una prima fase di sviluppu;
  • Supportu di serializazione integratu, senza esse ligatu à runtime;
  • Minimizà l'operazione di allocazione di memoria;
  • Assicurendu a sicurità: senza NULL, variabili globali, valori indefiniti è ridefinizione di variabili. Cuntrolla di u buffer overrun integrata. Supportu per e funzioni generiche (Generic). Oggetti è strutture chì ùn ponu micca esse cambiatu per difettu;
  • Possibilità di ricaricamentu di codice "caldo" (riflettu i cambiamenti in u codice nantu à a mosca senza recompilazione);
  • Strumenti per assicurà multithreading. Cum'è in a lingua Go, un custruttu cum'è "run foo()" hè utilizatu per inizià un novu filu di esecuzione (simile à "go foo ()"). In u futuru, u supportu per i goroutines è un pianificatore di filu hè pianificatu;
  • Supportu per Windows, macOS, Linux, * sistemi operativi BSD. Hè previstu di aghjunghje supportu per Android è iOS à a fine di l'annu;
  • A gestione di a memoria à u tempu di compilazione (cum'è in Rust), senza aduprà un cullettore di basura;
  • Disponibilità di un toolkit multi-piattaforma per l'output graficu, utilizendu GDI+/Cocoa è OpenGL per rendering (supportu per DirectX, Vulkan è API di Metal hè previstu). Ci sò arnesi per travaglià cù l'uggetti 3D, l'animazione scheletrica è u cuntrollu di càmera;
  • Disponibilità di una libreria per generà interfacce grafiche cù elementi di cuncepimentu nativu à ogni OS. Windows usa WinAPI / GDI +, macOS usa Cocoa, è Linux usa u so propiu set di widgets. A biblioteca hè digià aduprata in u sviluppu Volt - cliente per Slack, Skype, Gmail, Twitter è Facebook;

    U pianu hè di creà una applicazione di cuncepimentu di l'interfaccia simile à Delphi, furnisce una API dichjarazione simile à SwiftUI è React Native, è furnisce supportu per creà applicazioni mobili per iOS è Android;

    Lingua di prugrammazione V open source

  • Disponibilità di un framework web integratu, chì hè utilizatu per creà un situ web, foru è blog per i sviluppatori di u prugettu. A precompilazione di mudelli HTML hè supportata, senza processà nantu à ogni dumanda;
  • Supportu di compilazione incruciata. Per custruisce u schedariu eseguibile per Windows, basta eseguite "v -os windows", è per Linux - "v -os linux" (u supportu di compilazione incruciata per macOS hè previstu più tardi). Cross-compilation funziona ancu per l'applicazioni gràfiche;
  • Manager di dipendenze integratu, gestore di pacchetti è strumenti di creazione. Per custruisce u prugramma, basta à eseguisce "v.", senza usà fà o utilità esterne. Per installà biblioteche supplementari, basta à eseguisce, per esempiu, "v get sqlite";
  • Disponibilità di plugins per u sviluppu in a lingua V in editori VS Code и Vim.

Sviluppu percepitu cumunità cun scetticismu, Siccomu u codice publicatu hà dimustratu chì micca tutte e capacità dichjarate sò ancu implementate è una quantità assai grande di travagliu hè necessariu per implementà tutti i piani.
Inoltre, inizialmente u repository avia publicatu codice rottu chì hà prublemi cù l'assemblea è l'esekzione. Hè presumitu chì l'autore ùn hà ancu ghjuntu à u stadiu in u quale si cumincianu à nutà a lege di Pareto, secondu chì u 20% di u sforzu pruduce u 80% di u risultatu, è u restu 80% di u sforzu pruduce solu u 20% di u risultatu.

Intantu, u bug tracker di Project V hà avutu circa 10 posti rimossi manifestazione codice di qualità bassa, per esempiu, indica l'usu di C-inserts è l'usu in a biblioteca di funzioni per sguassà u repertoriu di u cumandamentu rm à traversu u call os.system ("rm -rf $path"). Autore di u prugettu dichjaratuch'ellu hà sguassatu solu i missaghji, publicatu troll (cù cambiamenti chì cunfirmanu a validità di a critica, si stete в edità a storia).

Source: opennet.ru

Add a comment