Язык программирования Vala: производительность и основные возможности
Содержание:
1. Прагматичное начало;
2.Производительность и основные возможности (Вы читаете данный раздел);
3. Распространенность и проекты;
4. Установка и поддержка в IDE.
Несмотря на то, что в Vala используется транслятор «source to source», его называют компилятором, поскольку он автоматически вызывает компилятор Си для сгенерированного кода. На выходе получается нативный исполняемый файл, для которого не нужны никакие дополнительные библиотеки времени выполнения или виртуальные машины. В системе, где установлены Glib и GTK+, исполняемый файл имеет очень маленький размер, а его эффективность не уступает программам, написанным на Си вручную. По сравнению с аналогами, написанными на Python или C#, программы на Vala буквально «летают» и потребляют намного меньше памяти.
Синтаксис Vala очень похож на C#, поэтому его часто называют «C# без виртуальной машины». Vala предоставляет все возможности современных объектно-ориентированных языков и многие удобные конструкции высокого уровня:
Поскольку программы на Vala превращаются в код на обычном Си, они непосредственно компонуются с внешними библиотеками, написанными на Си, без дополнительных «оберток» и, что особенно важно для производительности, без преобразования данных. Для использования любой библиотеки в Vala достаточно создать интерфейсный файл *.vapi с инструкциями для компилятора о том, как транслировать код на Vala в соответствующие библиотечные вызовы. Создание файлов vapi может быть практически полностью автоматизировано для библиотек, основанных на Glib и GObject, а иногда и для других библиотек. Сначала утилита vala-gen-introspect обрабатывает заголовки библиотеки и генерирует так называемый GI-файл, а затем другая утилита vapigen превращает его в готовый файл vapi. Не удивительно, что очень быстро появились интерфейсы для огромного количества библиотек (http://live.gnome.org/Vala/BindingsStatus). Среди них - все библиотеки GTK+ версий 2 и 3, все библиотеки платформы GNOME, а также alsa, gsl, webkit, zlib, sqlite, OpenGL, lua, sdl, twitter и многие другие. В Vala имеется и собственная библиотека обобщенных контейнеров Gee (http://live.gnome.org/ Libgee), напоминающая STL в C++. Все интерфейсы доступны «из коробки» и не требуют никакой дополнительной настройки (кроме, разумеется, установки самих библиотек).
Библиотеки, написанные на Vala, имеют автоматически сгенерированные заголовочные файлы и также могут сразу же использоваться в С/С++ без каких-либо дополнительных «прослоек». Это позволяет, например, играючи создавать новые классы GObject, которые затем можно использовать где угодно в среде GNOME.
При всей своей прагматичной привлекательности идея трансляции в Си и использования готовых библиотек накладывает на язык существенные ограничения. Дизайн Vala во многом навязан возможностями Glib и GObject. Все, что сложно эффективно транслировать в Си, нельзя сделать и в Vala. Например, шаблоны в Vala - далеко не такой мощный и эффективный инструмент, как в С++ и особенно в D: нет ни «метапрограммирования», ни выполнения кода на этапе компиляции. Язык в целом не отличается какой-то особой внутренней красотой и изяществом: синтаксис прост и логичен, но никаких принципиальных новшеств и «изюминок» в Vala нет. Однако Vala и не претендует на роль универсального системного языка, на котором можно написать как систему биллинга, так и драйвер видеокарты. Он изначально направлен на программы с графическим интер-фейсом и библиотеки высокого уровня. Являясь таким же «клеем» для отдельных готовых компонент и библиотек, как и Java или C#, он обходит эти языки по производительности за счет компиляции в машинный код и отсутствию виртуальной машины.
Планируете самостоятельно перекрасить свое авто и программирование Вас интересует в данный момент меньше всего? Тогда Вам определенно точно следует знать, что пескоструйка в москве (http://www.7281604.ru/posko_rab.html), которая позволит Вам быстро и качественно снять старую краску, - основная специализация компании ООО «МТБ»! Подробности на www.7281604.ru!
1. Прагматичное начало;
2.
3. Распространенность и проекты;
4. Установка и поддержка в IDE.
Несмотря на то, что в Vala используется транслятор «source to source», его называют компилятором, поскольку он автоматически вызывает компилятор Си для сгенерированного кода. На выходе получается нативный исполняемый файл, для которого не нужны никакие дополнительные библиотеки времени выполнения или виртуальные машины. В системе, где установлены Glib и GTK+, исполняемый файл имеет очень маленький размер, а его эффективность не уступает программам, написанным на Си вручную. По сравнению с аналогами, написанными на Python или C#, программы на Vala буквально «летают» и потребляют намного меньше памяти.
Синтаксис Vala очень похож на C#, поэтому его часто называют «C# без виртуальной машины». Vala предоставляет все возможности современных объектно-ориентированных языков и многие удобные конструкции высокого уровня:
- классы и интерфейсы;
- свойства;
- сигналы;
- конструкцию foreach;
- лямбда-функции и делегаты;
- неявную типизацию (type inference);
- обобщенные классы (generics);
- автоматическое или «ручное» управление памятью;
- исключения;
- контрактное программирование;
- регулярные выражения как часть языка.
- свойства;
- сигналы;
- конструкцию foreach;
- лямбда-функции и делегаты;
- неявную типизацию (type inference);
- обобщенные классы (generics);
- автоматическое или «ручное» управление памятью;
- исключения;
- контрактное программирование;
- регулярные выражения как часть языка.
Поскольку программы на Vala превращаются в код на обычном Си, они непосредственно компонуются с внешними библиотеками, написанными на Си, без дополнительных «оберток» и, что особенно важно для производительности, без преобразования данных. Для использования любой библиотеки в Vala достаточно создать интерфейсный файл *.vapi с инструкциями для компилятора о том, как транслировать код на Vala в соответствующие библиотечные вызовы. Создание файлов vapi может быть практически полностью автоматизировано для библиотек, основанных на Glib и GObject, а иногда и для других библиотек. Сначала утилита vala-gen-introspect обрабатывает заголовки библиотеки и генерирует так называемый GI-файл, а затем другая утилита vapigen превращает его в готовый файл vapi. Не удивительно, что очень быстро появились интерфейсы для огромного количества библиотек (http://live.gnome.org/Vala/BindingsStatus). Среди них - все библиотеки GTK+ версий 2 и 3, все библиотеки платформы GNOME, а также alsa, gsl, webkit, zlib, sqlite, OpenGL, lua, sdl, twitter и многие другие. В Vala имеется и собственная библиотека обобщенных контейнеров Gee (http://live.gnome.org/ Libgee), напоминающая STL в C++. Все интерфейсы доступны «из коробки» и не требуют никакой дополнительной настройки (кроме, разумеется, установки самих библиотек).
Библиотеки, написанные на Vala, имеют автоматически сгенерированные заголовочные файлы и также могут сразу же использоваться в С/С++ без каких-либо дополнительных «прослоек». Это позволяет, например, играючи создавать новые классы GObject, которые затем можно использовать где угодно в среде GNOME.
При всей своей прагматичной привлекательности идея трансляции в Си и использования готовых библиотек накладывает на язык существенные ограничения. Дизайн Vala во многом навязан возможностями Glib и GObject. Все, что сложно эффективно транслировать в Си, нельзя сделать и в Vala. Например, шаблоны в Vala - далеко не такой мощный и эффективный инструмент, как в С++ и особенно в D: нет ни «метапрограммирования», ни выполнения кода на этапе компиляции. Язык в целом не отличается какой-то особой внутренней красотой и изяществом: синтаксис прост и логичен, но никаких принципиальных новшеств и «изюминок» в Vala нет. Однако Vala и не претендует на роль универсального системного языка, на котором можно написать как систему биллинга, так и драйвер видеокарты. Он изначально направлен на программы с графическим интер-фейсом и библиотеки высокого уровня. Являясь таким же «клеем» для отдельных готовых компонент и библиотек, как и Java или C#, он обходит эти языки по производительности за счет компиляции в машинный код и отсутствию виртуальной машины.
Планируете самостоятельно перекрасить свое авто и программирование Вас интересует в данный момент меньше всего? Тогда Вам определенно точно следует знать, что пескоструйка в москве (http://www.7281604.ru/posko_rab.html), которая позволит Вам быстро и качественно снять старую краску, - основная специализация компании ООО «МТБ»! Подробности на www.7281604.ru!