Logo Спонсор сайта — Хостинг Fornex.com Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Сверхбыстрый хостинг от 69 р./мес., VPS от 299 р./мес.

Бесплатно: администрирование + ISPmanager + DDoS защита + SSL + 7 дней тестовый период

Скидка 50% на первый месяц VPS и хостинга по промокоду CITFORUM

VPS/VDS за 1 евро!

vCore x1, 1 GB RAM ECC, 15 GB SSD (RAID 10), Port 1 Gbps, Трафик ∞, Виртуализатор KVM.

Выбор стран: Нидерланды, Молдова и Россия!

Тарифы от 59 руб в месяц за 512MB RAM и 5Gb NVMe SSD!

Hi-CPU тарифы с повышенной частотой процессора 3.8 – 4.2 GHz, автоматическая установка Windows

Дата-центры на выбор, защита от DDoS-атак

хостинг сайтов ГиперХост — хостинг сайтов который Вы искали.

Виртуальный хостинг, Аренда VPS серверов, рация доменных имен, SSL сертификаты

Открыты исходные тексты языка программирования 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;

  • Наличие встроенного 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

Ваш комментарий

Имя:

Текст комментария (HTML-теги не допускаются):

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

Новости мира IT:

Архив новостей

Последние комментарии:

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 985 1945361
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2015 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...