V programmeertaal oopbron

Vertaal in die kategorie van oop samesteller vir taal V. V is 'n staties getikte masjien-saamgestelde taal wat daarop fokus om ontwikkeling makliker te maak om in stand te hou en baie vinnig om saam te stel. Samestellerkode, biblioteke en verwante gereedskap is oop onder die MIT-lisensie.

V se sintaksis is baie soortgelyk aan Go, en leen sommige konstrukte van Oberon, Rust en Swift. Die taal word soveel as moontlik vereenvoudig en volgens die ontwikkelaar is 30 minute se studie genoeg om die basiese beginsels te leer dokumentasie. Terselfdertyd bly die taal redelik kragtig en kan dit gebruik word om dieselfde take uit te voer as wanneer ander programmeertale gebruik word (byvoorbeeld, biblioteke is beskikbaar vir 2D/3D-grafika, die skep van GUI's en webtoepassings).

Die skepping van 'n nuwe taal is aangespoor deur die begeerte om 'n kombinasie van die Go-taal se eenvoud van sintaksis, samestellingspoed, gemak van parallelisering van bedrywighede, oordraagbaarheid en onderhoudbaarheid van kode met die werkverrigting van C/C++, die sekuriteit van Rust en die generering van masjienkode by die Zig-samestellingstadium. Ek wou ook 'n kompakte en vinnige samesteller kry wat sonder eksterne afhanklikhede kan werk, ontslae raak van die globale omvang (globale veranderlikes) en die vermoë bied om die kode te "hot" te herlaai.

In vergelyking met C++ is die nuwe taal aansienlik eenvoudiger, bied vinniger samestellingspoed (tot 400 keer), oefen veilige programmeringstegnieke, is vry van probleme met ongedefinieerde gedrag, en verskaf ingeboude gereedskap vir parallelisering van bedrywighede. In vergelyking met Python, is V vinniger, eenvoudiger, veiliger en meer onderhoubaar. In vergelyking met Go, het V geen globale veranderlikes nie, geen nulle nie, alle veranderlike waardes moet altyd gedefinieer word, alle voorwerpe is by verstek onveranderlik, slegs een tipe opdrag word ondersteun ("a := 0"), 'n aansienlik meer kompakte looptyd en die grootte van die gevolglike uitvoerbare lêers, die teenwoordigheid van direkte oordraagbaarheid vanaf C, die afwesigheid van 'n vullisverwyderaar, vinniger serialisering, die vermoë om stringe te interpoleer ("println('$foo: $bar.baz')").

fn hoof() {
areas := ['speletjie', 'web', 'nutsgoed', 'wetenskap', 'stelsels', 'GUI', 'mobiel'] a := 10
as waar {
tot := 20
}
vir gebied in gebiede {
println('Hallo, $area-ontwikkelaars!')
}
}

Projek kenmerke:

  • Kompakte en vinnige samesteller, wat saam met die standaard biblioteek ongeveer 400 KB opneem. Hoë samestellingspoed word bereik deur direkte generering van masjienkode en modulariteit. Die samestellingspoed is ongeveer 1.2 miljoen reëls kode per sekonde op een SVE-kern (daar word opgemerk dat tydens operasie V C kan gebruik, dan daal die spoed tot 100 duisend reëls per sekonde). Selfsamestelling van die samesteller, wat ook in die V-taal geskryf is (daar is ook 'n verwysingsweergawe in Go), neem ongeveer 0.4 sekondes. Teen die einde van die jaar sal werk aan bykomende optimalisering na verwagting voltooi wees, wat die samestellerboutyd tot 0.15 sekondes sal verminder. Te oordeel aan die toetse wat deur die ontwikkelaar uitgevoer is, vereis selfsamestelling van Go 512 MB skyfspasie en loop dit binne een en 'n half minute, Rust benodig 30 GB en 45 minute, GCC - 8 GB en 50 minute, Clang - 90 GB en 25 minute,
    Swift - 70 GB en 90 minute;

  • Programme word saamgestel in uitvoerbare lêers sonder eksterne afhanklikhede. Die uitvoerbare lêergrootte van 'n eenvoudige http-bediener na samestelling is slegs 65 KB;
  • Die prestasie van saamgestelde toepassings is op die vlak van samestellings van C-programme;
  • Die vermoë om naatloos met C-kode te kommunikeer, sonder bykomende oorkoste. Funksies in die C-taal kan vanaf kode in die V-taal geroep word, en omgekeerd, kode in die V-taal kan in enige taal versoenbaar met C genoem word;
  • Ondersteuning vir die vertaling van C/C++-projekte in 'n voorstelling in die taal V. 'n Ontleder van Clang word vir vertaling gebruik. Nie alle kenmerke van die C-standaard word nog ondersteun nie, maar die huidige vermoëns van die vertaler is reeds voldoende vir vertaling in die taal van die V-spel DOOM. Die C++-vertaler is nog in 'n vroeë stadium van ontwikkeling;
  • Ingeboude serialiseringsondersteuning, sonder om aan looptyd gekoppel te wees;
  • Minimalisering van geheuetoewysingsoperasies;
  • Verseker veiligheid: geen NULL, globale veranderlikes, ongedefinieerde waardes en veranderlike herdefinisie. Kontrole van ingeboude bufferoorskryding. Ondersteuning vir generiese funksies (Generies). Voorwerpe en strukture wat nie by verstek verander kan word nie;
  • Moontlikheid van "warm" kode herlaai (weerspieël veranderinge in kode op die vlieg sonder hersamestelling);
  • Gereedskap om multithreading te verseker. Net soos in die Go-taal, word 'n konstruk soos "run foo()" gebruik om 'n nuwe draad van uitvoering te begin (soortgelyk aan "go foo()"). In die toekoms word ondersteuning vir goroutines en 'n draadskeduleerder beplan;
  • Ondersteuning vir Windows, macOS, Linux, *BSD-bedryfstelsels. Daar word beplan om ondersteuning vir Android en iOS teen die einde van die jaar by te voeg;
  • Geheuebestuur tydens samestellingstyd (soos in Rust), sonder om 'n vullisverwyderaar te gebruik;
  • Beskikbaarheid van 'n multi-platform gereedskapstel vir grafiese uitvoer, met behulp van GDI+/Cocoa en OpenGL vir lewering (ondersteuning vir DirectX, Vulkan en Metal API's word beplan). Daar is gereedskap om met 3D-voorwerpe, skelet-animasie en kamerabeheer te werk;
  • Beskikbaarheid van 'n biblioteek vir die generering van grafiese koppelvlakke met ontwerpelemente inheems aan elke bedryfstelsel. Windows gebruik WinAPI/GDI+, macOS gebruik Cocoa, en Linux gebruik sy eie stel legstukke. Die biblioteek word reeds in ontwikkeling gebruik volt - kliënt vir Slack, Skype, Gmail, Twitter en Facebook;

    Die plan is om 'n Delphi-agtige koppelvlakontwerptoepassing te skep, 'n verklarende API soortgelyk aan SwiftUI en React Native te verskaf, en ondersteuning te bied vir die skep van mobiele toepassings vir iOS en Android;

    V programmeertaal oopbron

  • Beskikbaarheid van 'n ingeboude webraamwerk, wat gebruik word om 'n webwerf, forum en blog vir die projekontwikkelaars te skep. Voorafsamestelling van HTML-sjablone word ondersteun, sonder om dit op elke versoek te verwerk;
  • Ondersteuning vir kruissamestelling. Om die uitvoerbare lêer vir Windows te bou, hardloop net "v -os windows" en vir Linux - "v -os linux" (kruissamestelling ondersteuning vir macOS word later verwag). Kruissamestelling werk ook vir grafiese toepassings;
  • Ingeboude afhanklikheidsbestuurder, pakketbestuurder en bougereedskap. Om die program te bou, hardloop net “v.”, sonder om make of eksterne nutsprogramme te gebruik. Om bykomende biblioteke te installeer, hardloop net, byvoorbeeld, "v get sqlite";
  • Beskikbaarheid van plugins vir ontwikkeling in die V-taal in redakteurs VS-kode и Vim.

ontwerp waargeneem gemeenskap met skeptisisme, aangesien die gepubliseerde kode getoon het dat nie alle verklaarde vermoëns nog geïmplementeer is nie en 'n baie groot hoeveelheid werk is nodig om alle planne te implementeer.
Boonop het die bewaarplek aanvanklik geplaas gebreekte kode wat probleme met samestelling en uitvoering het. Daar word aanvaar dat die skrywer nog nie die stadium bereik het waarop hulle begin raaksien nie Pareto se wet, waarvolgens 20% van die inspanning 80% van die resultaat lewer, en die oorblywende 80% van die inspanning lewer slegs 20% van die resultaat.

Intussen is ongeveer 10 plasings van Projek V se foutspoorder verwyder demonstrasie lae kwaliteit kode, byvoorbeeld, dui op die gebruik van C-insetsels en die gebruik in die biblioteek van funksies vir die verwydering van die gids van die rm-opdrag deur die oproep os.system("rm -rf $path"). Skrywer van die projek gesêdat hy net die boodskappe uitgevee het, gepubliseer trol (met veranderinge wat die geldigheid van die kritiek bevestig, gebly в geskiedenis wysig).

Bron: opennet.ru

Voeg 'n opmerking