V бағдарламалау тілі ашық бастапқы код

Аударылған үшін ашық компилятор санатына тілі V. V - статикалық түрде терілген машинада құрастырылған тіл, ол өңдеуді қолдауды жеңілдетуге және құрастыруды өте жылдам жасауға бағытталған. Компилятор коды, кітапханалар және қатысты құралдар ашық MIT лицензиясы бойынша.

V синтаксисі Go-ға өте ұқсас, кейбір конструкцияларды Oberon, Rust және Swift-тен алады. Тіл мүмкіндігінше жеңілдетілген және әзірлеушінің айтуынша, негіздерді үйрену үшін 30 минут оқу жеткілікті. құжаттама. Сонымен қатар, тіл айтарлықтай күшті болып қала береді және басқа бағдарламалау тілдерін пайдаланған кездегідей тапсырмаларды орындау үшін пайдаланылуы мүмкін (мысалы, кітапханалар 2D/3D графикасы, GUI және веб-қосымшаларды жасау үшін қол жетімді).

Жаңа тілді құруға Go тілінің синтаксистің қарапайымдылығының, компиляция жылдамдығының, операцияларды параллелизациялаудың қарапайымдылығының, C/C++ өнімділігімен кодтың тасымалдануы мен қолдауының, Rust қауіпсіздігінің және Zig компиляция сатысында машина кодын генерациялау. Мен сондай-ақ сыртқы тәуелділіктерсіз жұмыс істей алатын, жаһандық ауқымнан (жаһандық айнымалылар) құтылып, кодты «ыстық» қайта жүктеу мүмкіндігін беретін ықшам және жылдам компилятор алғым келді.

C++ тілімен салыстырғанда жаңа тіл айтарлықтай қарапайым, компиляция жылдамдығын (400 есеге дейін) қамтамасыз етеді, қауіпсіз бағдарламалау әдістерін қолданады, анықталмаған мінез-құлық проблемалары жоқ және операцияларды параллельдеу үшін кірістірілген құралдармен қамтамасыз етеді. Python-мен салыстырғанда, V жылдамырақ, қарапайым, қауіпсіз және техникалық қызмет көрсетуге ыңғайлы. Go-мен салыстырғанда, V-де ғаламдық айнымалылар жоқ, нөлдер жоқ, барлық айнымалы мәндер әрқашан анықталуы керек, барлық нысандар әдепкі бойынша өзгермейді, тағайындаудың тек бір түріне қолдау көрсетіледі («a := 0»), айтарлықтай ықшам. орындалу уақыты және нәтижесінде алынған орындалатын файлдардың өлшемі, C тілінен тікелей тасымалданудың болуы, қоқыс жинағыштың жоқтығы, жылдамырақ сериялау, жолдарды интерполяциялау мүмкіндігі («println('$foo: $bar.baz')»).

fn main() {
аймақтар := ['ойын', 'веб', 'құралдар', 'ғылым', 'жүйелер', 'GUI', 'мобильді'] a := 10
шын болса {
дейін := 20
}
аудандардағы аудан үшін {
println(‘Сәлеметсіз бе, $area әзірлеушілері!’)
}
}

Жобаның ерекшеліктері:

  • Шағын және жылдам компилятор, стандартты кітапханамен бірге шамамен 400 Кбайт алады. Компиляцияның жоғары жылдамдығына машина кодын тікелей генерациялау және модульдік арқылы қол жеткізіледі. Компиляция жылдамдығы бір процессордың ядросында секундына шамамен 1.2 миллион код жолын құрайды (оның жұмысы кезінде V C қолдана алатыны атап өтіледі, содан кейін жылдамдық секундына 100 мың жолға дейін төмендейді). V тілінде де жазылған компиляторды өздігінен құрастыру (Go-да анықтамалық нұсқасы да бар) шамамен 0.4 секундты алады. Жыл соңына дейін қосымша оңтайландыру жұмыстары аяқталады деп күтілуде, бұл компиляторды құрастыру уақытын 0.15 секундқа дейін қысқартады. Әзірлеуші ​​жүргізген сынақтарға қарағанда, Go-ны өздігінен құрастыру 512 Мбайт дискілік орынды қажет етеді және бір жарым минутта жұмыс істейді, Rust үшін 30 ГБ және 45 минут, GCC - 8 ГБ және 50 минут, Clang - 90 ГБ және 25 минут,
    Swift - 70 ГБ және 90 минут;

  • Бағдарламалар сыртқы тәуелділіктерсіз орындалатын файлдарға жинақталады. Құрастырудан кейінгі қарапайым http серверінің орындалатын файл өлшемі небәрі 65 КБ құрайды;
  • Құрастырылған қосымшалардың өнімділігі Си бағдарламаларының ассамблеяларының деңгейінде;
  • Қосымша шығындарсыз C кодымен үздіксіз әрекеттесу мүмкіндігі. Си тіліндегі функцияларды V тіліндегі кодтан шақыруға болады, ал керісінше, V тіліндегі кодты С тілімен үйлесімді кез келген тілде шақыруға болады;
  • C/C++ жобаларын V тіліндегі өкілдікке аударуға қолдау көрсету.Аударма үшін Clang талдаушы пайдаланылады. C стандартының барлық мүмкіндіктеріне әлі қолдау көрсетілмейді, бірақ аудармашының ағымдағы мүмкіндіктері қазірдің өзінде жеткілікті аударма DOOM V ойынының тілінде. C++ аудармашысы әлі дамудың бастапқы кезеңінде;
  • Орындалу уақытына байланыссыз кірістірілген сериялауды қолдау;
  • Жадты бөлу операцияларын азайту;
  • Қауіпсіздікті қамтамасыз ету: NULL жоқ, жаһандық айнымалылар, анықталмаған мәндер және айнымалыны қайта анықтау. Кірістірілген буфердің асып кетуін тексеру. Жалпы функцияларды қолдау (Жалпы). Әдепкі бойынша өзгертуге болмайтын объектілер мен құрылымдар;
  • «Ыстық» кодты қайта жүктеу мүмкіндігі (қайта құрастырусыз жылдам кодтағы өзгерістерді көрсету);
  • Көп ағынды қамтамасыз ету құралдары. Go тіліндегі сияқты, орындаудың жаңа ағынын бастау үшін «run foo()» сияқты құрылым қолданылады («go foo()» сияқты). Болашақта горутиндерге және ағынды жоспарлаушыға қолдау көрсету жоспарлануда;
  • Windows, macOS, Linux, *BSD операциялық жүйелеріне қолдау көрсету. Жыл соңына дейін Android және iOS үшін қолдауды қосу жоспарлануда;
  • Қоқыс жинағышты пайдаланбай компиляция уақытында жадты басқару (Rust сияқты);
  • Көрсету үшін GDI+/Cocoa және OpenGL қолданатын графикалық шығаруға арналған көп платформалы құралдар жинағының болуы (DirectX, Vulkan және Metal API интерфейстерін қолдау жоспарлануда). 3D нысандарымен жұмыс істеу, скелеттік анимация және камераны басқару құралдары бар;
  • Әрбір ОЖ-ға тән дизайн элементтері бар графикалық интерфейстерді құруға арналған кітапхананың болуы. Windows жүйесі WinAPI/GDI+ пайдаланады, macOS жүйесі Cocoa жүйесін пайдаланады және Linux өзінің виджеттер жинағын пайдаланады. Кітапхана қазірдің өзінде әзірлеуде қолданылады Volt — Slack, Skype, Gmail, Twitter және Facebook үшін клиент;

    Жоспар Delphi-ге ұқсас интерфейсті жобалау қосымшасын жасау, SwiftUI және React Native-ге ұқсас декларативті API қамтамасыз ету және iOS және Android үшін мобильді қосымшаларды жасауға қолдау көрсету;

    V бағдарламалау тілі ашық бастапқы код

  • Жобаны әзірлеушілерге арналған веб-сайтты, форумды және блогты құру үшін қолданылатын кірістірілген веб-фремворктің болуы. HTML үлгілерін алдын ала құрастыруға қолдау көрсетіледі, оларды әрбір сұраныс бойынша өңдеусіз;
  • Кросс компиляцияны қолдау. Windows жүйесіне арналған орындалатын файлды құру үшін жай ғана «v -os windows», ал Linux үшін - «v -os linux» іске қосыңыз (macOS үшін кросс-компиляциялық қолдау кейінірек күтіледі). Кросс-компиляция графикалық қосымшалар үшін де жұмыс істейді;
  • Кірістірілген тәуелділік менеджері, пакет менеджері және құрастыру құралдары. Бағдарламаны құру үшін make немесе сыртқы утилиталарды пайдаланбай «v.» іске қосыңыз. Қосымша кітапханаларды орнату үшін жай ғана іске қосыңыз, мысалы, «v get sqlite»;
  • Редакторларда V тілінде әзірлеуге арналған плагиндердің болуы VS коды и Vim.

Даму қабылданған қауымдастықпен скептицизм, өйткені жарияланған код барлық жарияланған мүмкіндіктер әлі іске асырылмағанын және барлық жоспарларды жүзеге асыру үшін өте үлкен жұмыс көлемін қажет ететінін көрсетті.
Сонымен қатар, бастапқыда репозиторий болды орналастырылды құрастыру және орындау мәселелері бар бұзылған код. Автор олар байқай бастайтын кезеңге әлі жетпеген деп болжанады Парето заңы, оған сәйкес 20% күш нәтиженің 80%, ал қалған 80% күш нәтиженің тек 20% береді.

Сонымен қатар, Project V қате бақылаушысында 10-ға жуық хабарлама жойылды демонстрация төмен сапалы код, мысалы, C-енгізулерін пайдалануды және os.system("rm -rf $path") қоңырауы арқылы rm командасының каталогын жою функцияларын кітапханада пайдалануды көрсетеді. Жобаның авторы деп мәлімдедіол тек хабарламаларды жойғанын, жарияланған тролль (сынның негізділігін растайтын өзгерістермен, қалды в өңдеу тарихын).

Ақпарат көзі: opennet.ru

пікір қалдыру