Что будет, если взять некое подмножество языка C++ и попытаться избавиться от различных его недостатков? Java? Хорошо, теперь выкидываем виртуальную машину и добавляем пару элементов функционального программирования. То, что мы получим в итоге, и есть Vala.
В отношении Vala справедливы следующие утверждения:
- Язык появился в 2006-м году и активно развивается по сей день;
- Код на Vala транслируется в код на Си, что как бы намекает нам на переносимость и скорость языка;
- В Vala не используются заголовочные файлы;
- Vala — язык со строгой статической типизацией , но при объявлении переменных не требуется полностью указывать их тип (ключевое слово var);
- В Vala используется сборка мусора, основанная на подсчете ссылок , а также можно управлять памятью вручную ;
- В Vala есть интерфейсы, исключения, классы и наследование, плюс элементы ФП, например, замыкания и лямбды;
- Строки хранятся в памяти в кодировке UTF-8 (да, именно UTF-8 , а не в каком-то другом юникоде);
- В строки можно
@ "подставлять $переменные"
; - Vala отлично документирован, на официальном сайте имеются примеры ко всем аспектам языка;
- В нашем распоряжении имеется куча готовых контейнеров (списки, множества, словари и тп), регулярные выражения , потоки, работа с сетью и многое другие;
- Vala имеет кучу биндингов к различным библиотекам , а также развитый инстументарий — Valadoc для документирования, Valadate для модульного тестирования , есть даже веб-фреймворк Valum ;
- По понятным причинам для Vala не нужны специализированные отладчики, профайлеры и тп; аналог CPAN, по всей видимости, также никто создавать не собирается — вместо него, например, можно использовать GitHub и механизм сабмодулей в Git;
- На Vala уже написано немало софта, например, Unity , сам компилятор Vala, IDE под названием Val(a)IDE и не только ;
Установка Vala под FreeBSD:
Установка под Debian:
Для установки под Windows нужно сходить по следующим ссылкам: раз и два .
Geany, Netbeans и ряд других IDE имеют встроенную подсветку синтаксиса Vala. В моем любимом vim ее нет, но она легко настраивается:
wget http: // goo.gl / 1dsCb -O ~ / .vim / syntax / vala.vim
mkdir -p ~ / .vim / ftdetect /
echo ‘au BufRead,BufNewFile *.vala,*.vapi set filetype=vala’ >
~ / .vim / ftdetect / vala.vim
Язык программирования Vala очень прост. Если вы когда-нибудь писали на C++, Java, C# или PHP, то без труда освоите его в считанные часы. Так, например, выглядит «Привет, мир!» на Vala:
var name = args [ 1 ] != null ? args [ 1 ] : «%username%» ;
print ( @ «Hello, $name! n » ) ;
return 0 ;
}
Также на Vala легко и просто пишутся GUI-приложения . Если нет желания писать код вручную, можно воспользоваться Glade. Собираются GUI-приложения примерно так:
В целом Vala очень похож на годную замену C++ или даже PHP, если вас не устраивает его скорость. И в отличие, например, от D2, Vala выглядит проще и куда более готовым к использованию.
Подборка ссылок по теме:
- Официальный сайт и список рассылки ;
- Много документации: http://valadoc.org/
- Genie — тот же Vala (он даже компилируется тем же valac), но по синтаксису более похожий на Python;
- В плане скорости Vala сравним с Си и C++;
- Статья в журнале LinuxFormat;
- Серия статей на ibm.com: айн , цвай , драй ;
А что вы думаете о языке Vala?