V ede siseto ìmọ orisun

Tumọ sinu awọn eya ti ìmọ alakojo fun ede V. V jẹ ede ti a ṣe akojọpọ ẹrọ ti o ni iṣiro ti o fojusi lori ṣiṣe idagbasoke rọrun lati ṣetọju ati iyara pupọ lati ṣajọ. Koodu akopo, awọn ile-ikawe ati awọn irinṣẹ ti o jọmọ ṣii labẹ iwe-aṣẹ MIT.

Sintasi V jẹ iru pupọ si Go, yiya diẹ ninu awọn iṣelọpọ lati Oberon, Rust, ati Swift. Ede naa jẹ irọrun bi o ti ṣee ṣe ati, ni ibamu si olupilẹṣẹ, awọn iṣẹju 30 ti ikẹkọ ti to lati kọ ẹkọ awọn ipilẹ iwe. Ni akoko kanna, ede naa tun lagbara pupọ ati pe o le ṣee lo lati ṣe awọn iṣẹ ṣiṣe kanna bi nigba lilo awọn ede siseto miiran (fun apẹẹrẹ, awọn ile-ikawe wa fun awọn aworan 2D/3D, ṣiṣẹda awọn GUI ati awọn ohun elo wẹẹbu).

Ipilẹṣẹ ede tuntun ni o ni iwuri nipasẹ ifẹ lati ṣaṣeyọri apapọ ti irọrun ede Go ti sintasi, iyara akopọ, irọrun ti isọdọkan ti awọn iṣẹ, gbigbe ati imuduro koodu pẹlu iṣẹ ti C / C ++, aabo ti Rust ati iran ti koodu ẹrọ ni ipele akopo Zig. Mo tun fẹ lati gba iwapọ ati akopọ iyara ti o le ṣiṣẹ laisi awọn igbẹkẹle ita, yọkuro iwọn agbaye (awọn oniyipada agbaye) ati pese agbara lati “gbona” tun koodu naa.

Ti a ṣe afiwe si C ++, ede tuntun rọrun pupọ, pese iyara akopọ yiyara (to awọn akoko 400), ṣiṣe awọn ilana siseto ailewu, laisi awọn iṣoro pẹlu ihuwasi aisọye, ati pese awọn irinṣẹ ti a ṣe sinu fun awọn iṣẹ ṣiṣe ti o jọra. Akawe si Python, V jẹ yiyara, rọrun, ailewu, ati itọju diẹ sii. Ti a ṣe afiwe si Go, V ko ni awọn oniyipada agbaye, ko si asan, gbogbo awọn iye oniyipada gbọdọ wa ni asọye nigbagbogbo, gbogbo awọn nkan jẹ aiyipada nipasẹ aiyipada, iru iṣẹ iyansilẹ kan ṣoṣo ni atilẹyin (“a: = 0”), iwapọ pupọ diẹ sii asiko asiko ati awọn iwọn ti awọn Abajade executable awọn faili, niwaju portability taara lati C, awọn isansa ti a idoti-odè, yiyara serialization, ni agbara lati interpolate awọn gbolohun ọrọ ("println ($ foo: $ bar.baz')").

fn akọkọ() {
agbegbe: = ['ere', 'ayelujara', 'irinṣẹ', 'imọ', 'awọn ọna šiše', 'GUI', 'alagbeka'] a:= 10
ti o ba jẹ otitọ {
si:= 20
}
fun agbegbe ni awọn agbegbe {
println('Kaabo, awọn olupilẹṣẹ agbegbe $!')
}
}

Awọn ẹya ara ẹrọ ti ise agbese:

  • Iwapọ ati akopọ iyara, eyiti o papọ pẹlu ile-ikawe boṣewa gba to 400 KB. Iyara ikojọpọ giga ti waye nipasẹ iran taara ti koodu ẹrọ ati modularity. Iyara akopo jẹ isunmọ awọn laini koodu 1.2 miliọnu fun iṣẹju kan lori mojuto Sipiyu kan (o ṣe akiyesi pe lakoko iṣiṣẹ V le lo C, lẹhinna iyara lọ silẹ si awọn laini 100 ẹgbẹrun fun iṣẹju keji). Ipejọ ti ara ẹni ti alakojo, eyiti o tun kọ ni ede V (ẹya itọkasi tun wa ni Go), gba to awọn aaya 0.4. Ni opin ọdun, iṣẹ lori awọn iṣapeye afikun ni a nireti lati pari, eyiti yoo dinku akoko kikọ akopọ si awọn aaya 0.15. Idajọ nipasẹ awọn idanwo ti o ṣe nipasẹ olupilẹṣẹ, apejọ ara ẹni ti Go nilo 512 MB ti aaye disk ati ṣiṣe ni iṣẹju kan ati idaji, Rust nilo 30 GB ati iṣẹju 45, GCC - 8 GB ati awọn iṣẹju 50, Clang - 90 GB ati iṣẹju 25,
    Swift - 70 GB ati awọn iṣẹju 90;

  • Awọn eto ti wa ni akojọpọ sinu awọn faili ti o le ṣiṣẹ laisi awọn igbẹkẹle ita. Iwọn faili ti o ṣiṣẹ ti olupin http ti o rọrun lẹhin apejọ jẹ 65 KB nikan;
  • Išẹ ti awọn ohun elo ti a ṣajọpọ wa ni ipele ti awọn apejọ ti awọn eto C;
  • Agbara lati ṣe ajọṣepọ lainidi pẹlu koodu C, laisi afikun afikun. Awọn iṣẹ ni ede C ni a le pe lati koodu ni ede V, ati ni idakeji, koodu ni ede V le pe ni eyikeyi ede ti o ni ibamu pẹlu C;
  • Atilẹyin fun itumọ awọn iṣẹ akanṣe C/C++ si aṣoju ni ede V. Atọka lati Clang ni a lo fun itumọ. Kii ṣe gbogbo awọn ẹya ti boṣewa C ni atilẹyin sibẹsibẹ, ṣugbọn awọn agbara lọwọlọwọ ti onitumọ ti to tẹlẹ fun itumọ ni ede V game DOOM. Onitumọ C ++ tun wa ni ipele ibẹrẹ ti idagbasoke;
  • -Itumọ ti ni serialization support, lai ni ti so si asiko isise;
  • Dinku awọn iṣẹ ṣiṣe ipin iranti;
  • Aridaju aabo: ko si NULL, awọn oniyipada agbaye, awọn iye ti a ko ṣalaye ati isọdọtun oniyipada. Iṣiro-itumọ ti ni overrun yiyewo. Atilẹyin fun awọn iṣẹ jeneriki (Generiki). Awọn nkan ati awọn ẹya ti a ko le yipada nipasẹ aiyipada;
  • O ṣeeṣe ti atunkọ koodu “gbona” (ti o ṣe afihan awọn ayipada ninu koodu lori fo laisi atunko);
  • Awọn irinṣẹ fun aridaju multithreading. Gẹgẹ bi ninu ede Go, itumọ bi “run foo()” ni a lo lati bẹrẹ o tẹle ipaniyan tuntun kan (bii “go foo()”). Ni ọjọ iwaju, atilẹyin fun awọn gorutines ati oluṣeto okun kan ti gbero;
  • Atilẹyin fun Windows, macOS, Lainos, * awọn ọna ṣiṣe BSD. O ti gbero lati ṣafikun atilẹyin fun Android ati iOS ni opin ọdun;
  • Iṣakoso iranti ni akoko akopọ (gẹgẹbi ni ipata), laisi lilo agbasọ idoti;
  • Wiwa ohun elo irinṣẹ-ọpọlọpọ fun iṣelọpọ awọn aworan, lilo GDI +/ koko ati OpenGL fun ṣiṣe (atilẹyin fun DirectX, Vulkan ati Irin APIs ti gbero). Awọn irinṣẹ wa fun ṣiṣẹ pẹlu awọn ohun 3D, ere idaraya egungun ati iṣakoso kamẹra;
  • Wiwa ti ile-ikawe kan fun ṣiṣẹda awọn atọkun ayaworan pẹlu awọn eroja apẹrẹ abinibi si OS kọọkan. Windows nlo WinAPI/GDI+, macOS nlo koko, ati Lainos nlo awọn ẹrọ ailorukọ tirẹ. Ile-ikawe ti wa ni lilo tẹlẹ ninu idagbasoke folti - alabara fun Slack, Skype, Gmail, Twitter ati Facebook;

    Eto naa ni lati ṣẹda ohun elo apẹrẹ wiwo ti Delphi kan, pese API asọye kan ti o jọra si SwiftUI ati React Native, ati pese atilẹyin fun ṣiṣẹda awọn ohun elo alagbeka fun iOS ati Android;

    V ede siseto ìmọ orisun

  • Wiwa ti ilana wẹẹbu ti a ṣe sinu, eyiti o lo lati ṣẹda oju opo wẹẹbu kan, apejọ ati bulọọgi fun awọn olupilẹṣẹ iṣẹ akanṣe. Ipilẹṣẹ ti awọn awoṣe HTML jẹ atilẹyin, laisi sisẹ wọn lori ibeere kọọkan;
  • Cross akopo support. Lati kọ faili ti o le ṣiṣẹ fun Windows, kan ṣiṣẹ “v -os windows”, ati fun Linux - “v -os linux” (atilẹyin akopọ-agbelebu fun macOS ni a nireti nigbamii). Agbekọja-akopọ tun ṣiṣẹ fun awọn ohun elo ayaworan;
  • Oluṣakoso igbẹkẹle ti a ṣe sinu, oluṣakoso package ati awọn irinṣẹ kọ. Lati kọ eto naa, kan ṣiṣẹ “v”, laisi lilo ṣiṣe tabi awọn ohun elo ita. Lati fi awọn ile-ikawe afikun sii, kan ṣiṣẹ, fun apẹẹrẹ, “v gba sqlite”;
  • Wiwa awọn afikun fun idagbasoke ni ede V ni awọn olootu Koodu VS и Mo ti wá.

Idagbasoke ti fiyesi awujo pẹlu skepticism, Niwọn igba ti koodu ti a tẹjade fihan pe kii ṣe gbogbo awọn agbara ti a ti sọ tẹlẹ ti ṣe imuse ati pe o nilo iṣẹ ti o tobi pupọ lati ṣe gbogbo awọn ero.
Ni afikun, ni ibẹrẹ ibi ipamọ ni ti a fiweranṣẹ koodu fifọ ti o ni awọn iṣoro pẹlu apejọ ati ipaniyan. O ti ro pe onkọwe ko ti de ipele ti wọn bẹrẹ lati ṣe akiyesi Pareto ká ofin, gẹgẹ bi eyi ti 20% akitiyan fun 80% ti awọn esi, ati awọn ti o ku 80% akitiyan fun nikan 20% ti awọn esi.

Nibayi, olutọpa kokoro Project V ti ni awọn ifiweranṣẹ 10 ti a yọkuro lati ifihan kekere didara koodu, fun apẹẹrẹ, tọkasi awọn lilo ti C-fi sii ati awọn lilo ninu awọn ìkàwé ti awọn iṣẹ fun piparẹ awọn liana ti rm pipaṣẹ nipasẹ ipe os.system ("rm -rf $ ona"). Onkowe ise agbese sọpe o paarẹ awọn ifiranṣẹ nikan, atejade troll (pẹlu awọn ayipada ti o jẹrisi iwulo ti ibawi naa, dúró в itan àtúnṣe).

orisun: opennet.ru

Fi ọrọìwòye kun