Язык программирования Vala: контрактное программирование и библиотека обобщенных контейнеров Gee
Содержание:
1. Hello world!;
2. Строки, массивы и управляющие конструкции ;
3. Делегаты и обобщенные классы;
4.Контрактное программирование и библиотека обобщенных контейнеров Gee
(Вы читаете данный раздел).
Vala поддерживает базовые конструкции контрактного программирования requires и ensures:
double method_name(int x, double d) requires (x > 0 ss x = 0.0 ss d = 0.0 ss result <= 10.0)
Специальная «магическая» переменная result имеет тип, возвращаемый функцией.
Язык программирования Vala достаточно гибкий, с его помощью можно написать достаточно мощное и функциональное приложение, операционную среду, которая возьмет под контроль оборудование умного дома (http://www.aptech.ru/tehnologii-dom) и, конечно же, простенькую игру!
Библиотека Gee в Vala выполняет ту же функцию, что STL в C++. В Gee имеются структуры данных и итераторы, но, в отличие от STL, в ней нет алгоритмов. Синтаксис шаблонных классов Gee очень похож на синтаксис C++, так что программисты, привыкшие к шаблонным контейнерам в C++, будут чувствовать себя как дома. Gee содержит несколько классов-коллекций, самыми часто используемыми из которых являются вектор ArrayList , односвязный список LinkedList и ассоциативный контейнер HashMap. Контейнеры Gee намного сильнее интегрированы в базовый язык, чем контейнеры STL. Например, любой контейнер можно использовать в циклах foreach:
Проверить наличие элемента в любом контейнере можно оператором in:
Появление любого нового языка программирования неизменно вызывает опасения, что он окажется очередным нежизнеспособным курьезом. Язык Vala благополучно избежал этой участи и за несколько лет своего существования уже стал достаточно популярным для написания GUI-приложений с использованием GTK+. Производительность Vala как компилируемого языка заведомо намного больше, чем у Java или С# (не говоря уже о Python), но все же многие особенности реализации не позволяют «выжать» из него такую же скорость, как из С/С++. Впрочем, это обычно и не нужно, поскольку Vala - типичный «язык продуктив-ности», склеивающий разные библиотеки и компоненты. По сути Vala - это «полностью свободный компилируемый C# без виртуальной машины». Он будет достойным дополнением к «арсеналу» любого программиста, особенно работающего с GTK+.
1. Hello world!;
2. Строки, массивы и управляющие конструкции ;
3. Делегаты и обобщенные классы;
4.
Контрактное программирование
Vala поддерживает базовые конструкции контрактного программирования requires и ensures:
double method_name(int x, double d) requires (x > 0 ss x = 0.0 ss d = 0.0 ss result <= 10.0)
{
return d * x;
}
return d * x;
}
Специальная «магическая» переменная result имеет тип, возвращаемый функцией.
Язык программирования Vala достаточно гибкий, с его помощью можно написать достаточно мощное и функциональное приложение, операционную среду, которая возьмет под контроль оборудование умного дома (http://www.aptech.ru/tehnologii-dom) и, конечно же, простенькую игру!
Библиотека обобщенных контейнеров Gee
Библиотека Gee в Vala выполняет ту же функцию, что STL в C++. В Gee имеются структуры данных и итераторы, но, в отличие от STL, в ней нет алгоритмов. Синтаксис шаблонных классов Gee очень похож на синтаксис C++, так что программисты, привыкшие к шаблонным контейнерам в C++, будут чувствовать себя как дома. Gee содержит несколько классов-коллекций, самыми часто используемыми из которых являются вектор ArrayList
var list = new ArrayList ();
list.add (1); // Добавление элементов
list.add (2); list.add (4);
list.insert (2, 3); // Вставка элемента
list.remove_at (3); // Удаление элемента
foreach (int i in list) { // Интеграция в цикл foreach
stdout.printf ("%dn", i);
}
list[2] = 10; // Доступ по индексу
list.add (1); // Добавление элементов
list.add (2); list.add (4);
list.insert (2, 3); // Вставка элемента
list.remove_at (3); // Удаление элемента
foreach (int i in list) { // Интеграция в цикл foreach
stdout.printf ("%dn", i);
}
list[2] = 10; // Доступ по индексу
Проверить наличие элемента в любом контейнере можно оператором in:
if (2 in list) { // Аналогично list.contains(2)
stdout.printf ("Двойка в списке есть!n");
}
stdout.printf ("Двойка в списке есть!n");
}
Выводы
Появление любого нового языка программирования неизменно вызывает опасения, что он окажется очередным нежизнеспособным курьезом. Язык Vala благополучно избежал этой участи и за несколько лет своего существования уже стал достаточно популярным для написания GUI-приложений с использованием GTK+. Производительность Vala как компилируемого языка заведомо намного больше, чем у Java или С# (не говоря уже о Python), но все же многие особенности реализации не позволяют «выжать» из него такую же скорость, как из С/С++. Впрочем, это обычно и не нужно, поскольку Vala - типичный «язык продуктив-ности», склеивающий разные библиотеки и компоненты. По сути Vala - это «полностью свободный компилируемый C# без виртуальной машины». Он будет достойным дополнением к «арсеналу» любого программиста, особенно работающего с GTK+.