ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ исходныС тСксты языка программирования V

ΠŸΠ΅Ρ€Π΅Π²Π΅Π΄Ρ‘Π½ Π² разряд ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… компилятор для языка V. V прСдставляСт собой ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ язык со статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, сосрСдоточСнный Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΡŽ сопровоТдСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ ΠΎΡ‡Π΅Π½ΡŒ высокой скорости компиляции. Код компилятора, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… инструмСнтов ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MIT.

Бинтаксис V Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΠΏΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π° язык Go с заимствованиСм Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… конструкций ΠΈΠ· Oberon, Rust ΠΈ Swift. Π―Π·Ρ‹ΠΊ максимально ΡƒΠΏΡ€ΠΎΡ‰Ρ‘Π½ ΠΈ, ΠΏΠΎ заявлСнию Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, для изучСния Π±Π°Π·ΠΎΠ²Ρ‹Ρ… основ достаточно 30 ΠΌΠΈΠ½ΡƒΡ‚ Π½Π° ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈ этом язык остаётся достаточно ΠΌΠΎΡ‰Π½Ρ‹ΠΌ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для выполнСния Ρ‚Π΅Ρ… ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΈ использовании Π΄Ρ€ΡƒΠ³ΠΈΡ… языков программирования (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, доступны Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для 2D/3D Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, создания GUI ΠΈ web-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ).

К созданию Π½ΠΎΠ²ΠΎΠ³ΠΎ языка ΠΏΠΎΠ±ΡƒΠ΄ΠΈΠ»ΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ сочСтания свойствСнных языку Go простоты синтаксиса, скорости компиляции, простоты распараллСливания ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, пСрСносимости ΠΈ сопровоТдаСмости ΠΊΠΎΠ΄Π° с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Π‘/C++, Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½ΠΎΡΡ‚ΡŒΡŽ Rust ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ машинного ΠΊΠΎΠ΄Π° Π½Π° этапС компиляции Zig. Π’Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ ΠΈ быстрый компилятор, способный Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±Π΅Π· Π²Π½Π΅ΡˆΠ½ΠΈΡ… зависимостСй, ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ глобальной области видимости (Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…) ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ «Π³ΠΎΡ€ΡΡ‡Π΅ΠΉ» ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠΎΠ΄Π°.

По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с C++ Π½ΠΎΠ²Ρ‹ΠΉ язык сущСствСнно ΠΏΡ€ΠΎΡ‰Π΅, обСспСчиваСт Π±ΠΎΠ»Π΅Π΅ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ компиляции (Π΄ΠΎ 400 Ρ€Π°Π·), ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈΡ‘ΠΌΡ‹ бСзопасного программирования, ΠΈΠ·Π±Π°Π²Π»Π΅Π½ ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΈ прСдоставляСт встроСнныС срСдства для распараллСливания ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Python язык V быстрСС, ΠΏΡ€ΠΎΡ‰Π΅, бСзопаснСС ΠΈ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ Π² сопровоТдСнии. По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Go Π² V Π½Π΅Ρ‚ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π½Π΅Ρ‚ null, всС значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… всСгда ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹, всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΡΠ²Π»ΡΡŽΡ‚ΡΡ нСизмСняСмыми (immutable), поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π²ΠΈΠ΄ присвоСний («a := 0»), сущСствСнно Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ runtime ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹Ρ… исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ², Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ прямой пСрСносимости с Π‘ΠΈ, отсутствиС сборщика мусора, Π±ΠΎΠ»Π΅Π΅ быстрая сСриализация, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ интСрполяции строк («println(‘$foo: $bar.baz’)»).

fn main() {
areas := [‘game’, ‘web’, ‘tools’, ‘science’, ‘systems’, ‘GUI’, ‘mobile’] a := 10
if true {
a := 20
}
for area in areas {
println(‘Hello, $area developers!’)
}
}

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

  • ΠšΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ ΠΈ быстрый компилятор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вмСстС со стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠΊΠΎΠ»ΠΎ 400 ΠšΠ‘. Высокая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ компиляции достигаСтся благодаря прямой Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ машинного ΠΊΠΎΠ΄Π° ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ компиляции составляСт ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 1.2 ΠΌΠ»Π½ строк ΠΊΠΎΠ΄Π° Π² сСкунду Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ядрС CPU (отмСчаСтся, Ρ‡Ρ‚ΠΎ Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ V ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π‘ΠΈ, Ρ‚ΠΎΠ³Π΄Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠ°Π΄Π°Π΅Ρ‚ Π΄ΠΎ 100 тысяч строк Π² сСкунду). Бамосборка компилятора, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ написан Π½Π° языкС V (Ρ‚Π°ΠΊΠΆΠ΅ имССтся эталонный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π° Go), Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 0.4 сСк. К ΠΊΠΎΠ½Ρ†Ρƒ Π³ΠΎΠ΄Π° оТидаСтся Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ оптимизациями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ позволят ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ врСмя сборки компилятора Π΄ΠΎ 0.15 сСк. Будя ΠΏΠΎ ΠΏΡ€ΠΎΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ тСстам самосборка Go Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ 512 Мб дискового пространства ΠΈ выполняСтся Π·Π° ΠΏΠΎΠ»Ρ‚ΠΎΡ€Ρ‹ ΠΌΠΈΠ½ΡƒΡ‚Ρ‹, Rust Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ 30 Π“Π± ΠΈ 45 ΠΌΠΈΠ½ΡƒΡ‚, GCC — 8 Π“Π‘ ΠΈ 50 ΠΌΠΈΠ½ΡƒΡ‚, Clang — 90 Π“Π± ΠΈ 25 ΠΌΠΈΠ½ΡƒΡ‚,
    Swift — 70 Π“Π‘ ΠΈ 90 ΠΌΠΈΠ½ΡƒΡ‚;

  • ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ Π±Π΅Π· Π²Π½Π΅ΡˆΠ½ΠΈΡ… зависимостСй. Π Π°Π·ΠΌΠ΅Ρ€ исполняСмого Ρ„Π°ΠΉΠ»Π° простого http-сСрвСра послС сборки составляСт всСго 65 ΠšΠ‘;
  • ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ скомпилированных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ находится Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ сборок ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° языкС Π‘ΠΈ;
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ бСсшовного взаимодСйствия с Π‘ΠΈ-ΠΊΠΎΠ΄ΠΎΠΌ, Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов. Из ΠΊΠΎΠ΄Π° Π½Π° языкС V ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° языкС Π‘ΠΈ ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΠΊΠΎΠ΄ Π½Π° языкС V ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² Π»ΡŽΠ±Ρ‹Ρ… языках, совмСстимых с Π‘ΠΈ;
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° трансляции ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° C/C++ Π² прСдставлСниС Π½Π° языкС V. Для трансляции ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ парсСр ΠΎΡ‚ Clang. НС всС возмоТности стандарта Π‘ΠΈ ΠΏΠΎΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ, Π½ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… возмоТностСй транслятора ΡƒΠΆΠ΅ достаточно для ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° Π½Π° язык V ΠΈΠ³Ρ€Ρ‹ DOOM. Вранслятор с C++ ΠΏΠΎΠΊΠ° находится Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ стадии развития;
  • ВстроСнная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° сСриализации, Π±Π΅Π· привязки ΠΊ runtime;
  • ΠœΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ распрСдСлСния памяти;
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ бСзопасности: отсутствиС NULL, Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ пСрСопрСдСлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. ВстроСнныС срСдства для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π° Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π±ΡƒΡ„Π΅Ρ€Π°. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (Generic). НС измСняСмыС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ структуры;
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ «Π³ΠΎΡ€ΡΡ‡Π΅ΠΉ» ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠΎΠ΄Π° (отраТСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ΄Π΅ Π½Π° Π»Π΅Ρ‚Ρƒ Π±Π΅Π· пСрСкомпиляции);
  • БрСдства для обСспСчСния многопоточности. Как Π² языкС Go для запуска Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° выполнСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ конструкция Π²ΠΈΠ΄Π° «run foo()» (ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с «go foo()»). Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ планируСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° goroutines ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²;
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм Windows, macOS, Linux, *BSD. Π”ΠΎ ΠΊΠΎΠ½Ρ†Π° Π³ΠΎΠ΄Π° планируСтся Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Android ΠΈ iOS;
  • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π½Π° этапС компиляции (ΠΊΠ°ΠΊ Π² Rust), Π±Π΅Π· примСнСния сборщика мусора;
  • НаличиС ΠΌΠ½ΠΎΠ³ΠΎΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΡƒΠ»ΠΊΠΈΡ‚Π° для Π²Ρ‹Π²ΠΎΠ΄Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ для отрисовки GDI+/Cocoa ΠΈ OpenGL (Π² ΠΏΠ»Π°Π½Π°Ρ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° API DirectX, Vulkan ΠΈ Metal). Π˜ΠΌΠ΅ΡŽΡ‚ΡΡ срСдства для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с 3D-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, скСлСтной Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΈ управлСния ΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ;
  • НаличиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для формирования графичСских интСрфСйсов с Ρ€ΠΎΠ΄Π½Ρ‹ΠΌΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ОБ элСмСнтами оформлСния. Π’ Windows ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ WinAPI/GDI+, Π² macOS — Cocoa, Π² Linux — собствСнный Π½Π°Π±ΠΎΡ€ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ². Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Volt — ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° для Slack, Skype, Gmail, Twitter ΠΈ Facebook;

    ΠŸΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ созданиС ΠΏΠΎΡ…ΠΎΠΆΠ΅Π³ΠΎ Π½Π° Delphi прилоТСния для проСктирования интСрфСйса, прСдоставлСниС Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ API, ΠΏΠΎΡ…ΠΎΠΆΠ΅Π³ΠΎ Π½Π° SwiftUI ΠΈ React Native, ΠΈ обСспСчСниС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈ создания ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для iOS ΠΈ Android;

    ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ исходныС тСксты языка программирования V

  • НаличиС встроСнного web-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ использован для создания сайта, Ρ„ΠΎΡ€ΡƒΠΌΠ° ΠΈ Π±Π»ΠΎΠ³Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ прСдкомпиляция HTML-шаблонов, Π±Π΅Π· ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ запросС;
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° кросс-компиляции. Для сборки исполняСмого Ρ„Π°ΠΉΠ»Π° для Windows достаточно Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ «v -os windows», Π° для Linux — «v -os linux» (ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° кросс-компиляции для macOS оТидаСтся ΠΏΠΎΠ·Π΄Π½Π΅Π΅). ΠšΡ€ΠΎΡΡ-компиляция Π² Ρ‚ΠΎΠΌ числС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ для графичСских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ;
  • ВстроСнный ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ зависимостСй, ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΈ инструмСнтарий сборки. Для сборки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ достаточно Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ «v .», Π±Π΅Π· использования make ΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚. Для установки Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ достаточно Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, «v get sqlite»;
  • НаличиС ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° языкС V Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°Ρ… VS Code ΠΈ Vim.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° воспринята сообщСством со скСптицизмом, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠΊΠ°Π·Π°Π», Ρ‡Ρ‚ΠΎ Π½Π΅ всС заявлСнныС возмоТности ΠΏΠΎΠΊΠ° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΈ для воплощСния всСх ΠΏΠ»Π°Π½ΠΎΠ² трСбуСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ большой ΠΎΠ±ΡŠΡ‘ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹.
ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π±Ρ‹Π» Ρ€Π°Π·ΠΌΠ΅Ρ‰Ρ‘Π½ Π½Π΅Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π°Π±Π»ΡŽΠ΄Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ со сборкой ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΡ€ Π΅Ρ‰Ρ‘ Π½Π΅ достиг стадии, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ Π·Π°ΠΊΠΎΠ½ ΠŸΠ°Ρ€Π΅Ρ‚ΠΎ, Π² соотвСтствии с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ 20% усилий Π΄Π°ΡŽΡ‚ 80% Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ 80% усилий — лишь 20% Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

Π’Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ, Π² Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€Π΅ ошибок ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° V Π±Ρ‹Π»ΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΎ ΠΎΠΊΠΎΠ»ΠΎ 10 сообщСний с дСмонсрациСй Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ качСства ΠΊΠΎΠ΄Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π‘ΠΈ-вставок ΠΈ использованиС Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для удалСния ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ rm Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹Π·ΠΎΠ² os.system(«rm -rf $path»). Автор ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° заявил, Ρ‡Ρ‚ΠΎ ΠΎΠ½ лишь ΡƒΠ΄Π°Π»ΠΈΠ» сообщСния, ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ‚Ρ€ΠΎΠ»Π»Π΅ΠΌ (ΠΏΡ€ΠΈ этом измСнСния, ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠΈ, ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Π² истории ΠΏΡ€Π°Π²ΠΎΠΊ).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru