The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Выпуск экспериментальной версии транслятора языка программирования Vala 0.51.1  "
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Выпуск экспериментальной версии транслятора языка программирования Vala 0.51.1  "  +/
Сообщение от opennews (??), 15-Фев-21, 19:39 
Вышла новая версия транслятора языка программирования Vala 0.51.1. Язык Vala является объектно-ориентированным языком программирования, предоставляет синтаксис, подобный языкам C# или Java. В качестве объектной модели используется Gobject (Glib Object System). Управление памятью осуществляется на основании подсчёта ссылок...

Подробнее: https://www.opennet.ru/opennews/art.shtml?num=54584

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "Выпуск экспериментальной версии транслятора языка программир..."  +15 +/
Сообщение от Аноним (1), 15-Фев-21, 19:39 
Хороший язык здорового программиста.
Ответить | Правка | Наверх | Cообщить модератору

12. "Выпуск экспериментальной версии транслятора языка программир..."  –9 +/
Сообщение от Dzen Python (ok), 15-Фев-21, 22:04 
Слишком ориентирован на gtk+ экосистему, за это низачот.
Нормальной работы С++ и QT нету.
Ответить | Правка | Наверх | Cообщить модератору

14. "Выпуск экспериментальной версии транслятора языка программир..."  +6 +/
Сообщение от gavr (ok), 15-Фев-21, 22:17 
Никто не может нормально работать с C++/Qt. Если думаешь что это может к примеру D то это неверно, хелловорды работают, а более сложные кейсы уже нет. Как пруф - посмотри как сделаны бинды к Qt для Go и Crystal -- просто обернули все в C API генераторами и вызывают по FFI.

К GTK Vala гвоздями не прибита, GLib это отдельная от GTK часть(по сути когда то давно GTK сильно разрослось и из него выделелась в отдельный проект часть не связанная с GUI, также было у WxWidgets). Кстати GLib полностью кроссплатформенна.

Ответить | Правка | Наверх | Cообщить модератору

16. "Выпуск экспериментальной версии транслятора языка программир..."  +1 +/
Сообщение от Аноним (1), 15-Фев-21, 22:20 
> Нормальной работы С++ и QT нету.

в Qt нету нормальной работы ни с чем, кроме с++.

Ответить | Правка | К родителю #12 | Наверх | Cообщить модератору

23. "Выпуск экспериментальной версии транслятора языка программир..."  +1 +/
Сообщение от Аноним (23), 16-Фев-21, 08:02 
Python - PyQt
Ответить | Правка | Наверх | Cообщить модератору

28. "Выпуск экспериментальной версии транслятора языка программир..."  –1 +/
Сообщение от Аноним (28), 16-Фев-21, 15:59 
это ужас, только для хеловорлдов.
Ответить | Правка | Наверх | Cообщить модератору

31. "Выпуск экспериментальной версии транслятора языка программир..."  +/
Сообщение от Аноним (31), 17-Фев-21, 16:51 
Да ладно: говорим AI, подразумеваем Python.
Ответить | Правка | Наверх | Cообщить модератору

2. "Выпуск экспериментальной версии транслятора языка программир..."  +/
Сообщение от Какаянахренразница (ok), 15-Фев-21, 19:45 
Брат-близнец vlang-a?
Ответить | Правка | Наверх | Cообщить модератору

9. "Выпуск экспериментальной версии транслятора языка программир..."  +13 +/
Сообщение от gavr (ok), 15-Фев-21, 20:33 
> Брат-близнец vlang-a?

    Да, только в отличии от vlang-a не такой смешной, появился в 2006 и юзался нокией для Maemo ( https://books.google.ru/books?id=9868DwAAQBAJ&pg=PA7&lpg=PA7... )

    Синтаксически это такой C# или по желанию Python(Genie), который транслируется в C и использует в качестве STD GLib.
    Runtime GC нет, память менеджит либо по владению (owned/unowned ссылки) либо через ARC(подставляет вызовы деструкторов(или дикремент счетчика ссылок) на этапе компиляции), но в этом случае нужно вручную фиксить циклические ссылки делая одну из них weak (если A -> B, и B -> A, то в одном из классов нужно добавить weak модификатор). Из этого следует что память полностью менеджится на этапе компиляции и объекты дохнут детерменированно, а значит для всего(вроде открытых сокетов/дескрипторов файлов) работает RAII.
    Из-за GIR( https://gi.readthedocs.io/en/latest/ )(то почему GTK есть для всех языков) можно использовать из любого языка бесплатна получая высокоуровневые бинды.
    Можно заставить генерировать чистый C без GLib, но тогда ООП пропадает (есть PR чтоб продолжили работать Compact классы)

    Куда высокоуровневее zig/odin/jai, так что это не замена С, я бы сказал что это такая смесь Java/C#/Go с очень простым вызовом C кода (кстати при бинде C либ ресурсами Vala управляет также как и своими, никакого unsafe). Перешел 2 года назад с Qt на Vala + GTK.

Ответить | Правка | Наверх | Cообщить модератору

3. Скрыто модератором  –9 +/
Сообщение от Аноним (3), 15-Фев-21, 19:50 
Ответить | Правка | Наверх | Cообщить модератору

5. Скрыто модератором  +1 +/
Сообщение от Аноним (5), 15-Фев-21, 19:57 
Ответить | Правка | Наверх | Cообщить модератору

7. Скрыто модератором  +1 +/
Сообщение от Сишник (?), 15-Фев-21, 20:02 
Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

8. "Выпуск экспериментальной версии транслятора языка программир..."  +7 +/
Сообщение от gavr (ok), 15-Фев-21, 20:20 
    Очень рад что кому то в СНГ сообществе не пофиг на валу настолько что не поленился перевести изменения не мажорного релиза.
    Думаю некоторые пункты требуют пояснений.

>type narrowing

    Теперь если на тип была сделана проверка, то внутри этой проверки объект будет автоматически приведен к данному типу
    if (x is Obj) {x.ObjField вместо (x as Obj).ObjField}

>Добавлена поддержка "непрозрачных" (opaque) компактных классов;

    Compact классы нужны добавления OOP к C библиотекам при биндах к Vala или просто для оптимизации производительности. По сути это легковесные классы с хитрым slice аллокатором, почитать него можно тут же на опеннете (https://www.opennet.ru/docs/RUS/glib_api/glib-Memory-Slices.... ).
    Так вот раньше такие были крайне ограничены в функционале, по сути там были только публичные поля и функции, теперь возможны private, internal, и свойства.
    
    

Ответить | Правка | Наверх | Cообщить модератору

10. "Выпуск экспериментальной версии транслятора языка программир..."  +/
Сообщение от Аноним (-), 15-Фев-21, 21:25 
Можете порекомендовать готовые примеры/самоучитель по Vala?
Ответить | Правка | Наверх | Cообщить модератору

15. "Выпуск экспериментальной версии транслятора языка программир..."  +/
Сообщение от gavr (ok), 15-Фев-21, 22:18 
Вот тут коллекция ссылок.
https://wiki.gnome.org/Projects/Vala/Documentation
Ответить | Правка | Наверх | Cообщить модератору

29. "Выпуск экспериментальной версии транслятора языка программир..."  –2 +/
Сообщение от Аноним (-), 16-Фев-21, 18:49 
Взял пример отсюда: https://wiki.gnome.org/Projects/Vala/GTKSample
Сделал так: valac --pkg gtk4 program_test_01.vala

Сыпануло ошибками. Есть ли готовые руководства по программированию GTK4 на Vala?

program_test_01.vala:4.5-4.23: error: 1 extra arguments for `void Gtk.init ()'
    Gtk.init (ref args);
    ^^^^^^^^^^^^^^^^^^^
program_test_01.vala:8.5-8.23: error: The name `border_width' does not exist in the context of `Gtk.Window' (gtk4)
    window.border_width = 10;
    ^^^^^^^^^^^^^^^^^^^
program_test_01.vala:9.5-9.26: error: The name `window_position' does not exist in the context of `Gtk.Window' (gtk4)
    window.window_position = WindowPosition.CENTER;
    ^^^^^^^^^^^^^^^^^^^^^^
program_test_01.vala:11.5-11.26: error: The name `connect' does not exist in the context of `Gtk.Window.destroy'
    window.destroy.connect (Gtk.main_quit);
    ^^^^^^^^^^^^^^^^^^^^^^
program_test_01.vala:18.5-18.14: error: The name `add' does not exist in the context of `Gtk.Window' (gtk4)
    window.add (button);
    ^^^^^^^^^^
program_test_01.vala:19.5-19.19: error: The name `show_all' does not exist in the context of `Gtk.Window' (gtk4)
    window.show_all ();
    ^^^^^^^^^^^^^^^
program_test_01.vala:21.5-21.12: error: The name `main' does not exist in the context of `Gtk' (gtk4)
    Gtk.main ();
    ^^^^^^^^
Compilation failed: 7 error(s), 0 warning(s)

Ответить | Правка | Наверх | Cообщить модератору

30. "Выпуск экспериментальной версии транслятора языка программир..."  +/
Сообщение от Совершенно другой аноним (?), 17-Фев-21, 09:34 
Пример, который Вы пытались собрать, применим только к GTK3+, и не будет собираться с GTK4. Скорее всего руководства нет, есть гид по миграции с GTK3+ на GTK4 (https://developer.gnome.org/gtk4/unstable/gtk-migrating-3-to... но для C. Можно попытаться воспользоваться им, смотря что поменялось для C, и соответственно заменяя или используя другие подходы для Vala.
Ответить | Правка | Наверх | Cообщить модератору

32. "Выпуск экспериментальной версии транслятора языка программир..."  +/
Сообщение от gavr (ok), 17-Фев-21, 21:23 
Примеры с GTK 4 есть вот тут https://github.com/aeldemery?tab=repositories
Ответить | Правка | К родителю #29 | Наверх | Cообщить модератору

45. "VALA"  +/
Сообщение от Аноним (-), 03-Авг-21, 13:10 
Благодарю. Всё работает.

Есть ли надежды на некий базовый туториал по программированию GNOME + GTK4 на Vala?

Ответить | Правка | Наверх | Cообщить модератору

11. "Выпуск экспериментальной версии транслятора языка программир..."  +/
Сообщение от Аноним (11), 15-Фев-21, 21:40 
А как с поддержкой платформ, отличных от Linux?  
Qt ведь поддерживает полноценно Windows/macOS
Ответить | Правка | Наверх | Cообщить модератору

17. "Выпуск экспериментальной версии транслятора языка программир..."  +/
Сообщение от Совершенно другой аноним (?), 15-Фев-21, 22:20 
Есть поддержка и Windows https://wiki.gnome.org/Projects/Vala/ValaOnWindows и macOS https://wiki.gnome.org/Projects/Vala/ValaOnOSX
Ответить | Правка | Наверх | Cообщить модератору

18. "Выпуск экспериментальной версии транслятора языка программир..."  +1 +/
Сообщение от Аноним (1), 15-Фев-21, 22:23 
GLib - кроссплатформенна.
Ответить | Правка | К родителю #11 | Наверх | Cообщить модератору

13. "Выпуск экспериментальной версии транслятора языка программир..."  –8 +/
Сообщение от Dzen Python (ok), 15-Фев-21, 22:07 
Хороший язык, всем хорош, кроме излишней завязки на гтк.
Ответить | Правка | Наверх | Cообщить модератору

35. "Выпуск экспериментальной версии транслятора языка программир..."  +/
Сообщение от gavr (ok), 17-Фев-21, 22:47 
> Хороший язык, всем хорош, кроме излишней завязки на гтк.

Завязки на GTK нет, по дефолту единственной зависимостью является GLib которая полностью кроссплатформена(можете попробовать на своем телефоне через Termux или Windows через msys2)

Если компилировать --profile=posix то будет генерироваться чистый С с единственной зависимостью libc вашего дистрибутива. Совместив это с биндингами к WINAPI или POSIX ( https://valadoc.org/posix/index.htm ) можно писать замечательный платформо зависимый код, правда эту и множество других проблем за вас решает GLib ( https://www.opennet.ru/docs/RUS/glib_api/ ).

Ответить | Правка | Наверх | Cообщить модератору

25. "Выпуск экспериментальной версии транслятора языка программир..."  –1 +/
Сообщение от Аноним (25), 16-Фев-21, 11:11 
А что там с поддержкой XML?

Ну то есть я вижу GXml, а не то, это реализация DOM4.
Вижу libxml2 - это вообще конченная... FFFFFFUUU~~~ (простите у меня вьетнамские флешбеки от этой либы)

Если есть тут люди писавшие на vala дальше чем хелловорлд, подскажите есть ли в Vala поддержка современного Xpath 2.1 / Xslt 3.0 ? Если там libxml2 вместо мозгов, то очевидно что нет. Но GXml вроде реализует свежий DOM...

Или вот еще. Есть XML-документы, точнее поток сериализованных XML-объектов. Я их хочу трансформировать и десериализовать внутрь своих типов на языке Vala. Я могу это сделать? Или мне надо для этого пердолиться в DOM как это делают всякие питонисты?

И наоборот, поддерживает ли XML-сериализатор аннотирование так чтобы я могу рулить элементами и атрибутами, чтобы получить желаемый формат документа при сериализации. DOM не предлагать.

Ответить | Правка | Наверх | Cообщить модератору

26. "Выпуск экспериментальной версии транслятора языка программир..."  +/
Сообщение от Аноним (26), 16-Фев-21, 11:34 
А, то есть, Java и .Net уже непопулярный энтерпрайз?!

Да и вообще, вам точно нужен XML?

Ответить | Правка | Наверх | Cообщить модератору

27. "Выпуск экспериментальной версии транслятора языка программир..."  –1 +/
Сообщение от Аноним (25), 16-Фев-21, 12:10 
> Да и вообще, вам точно нужен XML?

Да, по двум причинам:
1. Я не могу исправить/переписать софт который это шлёт. Теоретически это возможно, но чисто технически это невменяемый объем беспричинных изменений.
2. Если есть "обмен", это когда 2 энтерпрайзные соплекухи на бекендах шлют поток взаимосвязанных объектов разной степени упитанности, то SOAP и XML это правильный выбор.

> А, то есть, Java и .Net уже непопулярный энтерпрайз?!

.Net прекрасно решает все эти задачи до тех пор пока тебе не нужно писать портянки на Xpath 1.0, видимо Vala и весь GNOME точно также как и MS со своим Windows и .Net намертво застрял в старых версиях XML, потому что обновиться сложно... от этого полетит .Net Standard и зависимости Windows от этого API и вообще они отказались обновляться причем заявили об этом публично. Да, в Java поддержка XML в разы лучше, но зато там всё остальное... Vala + GTK даст твоему приложению нормальный интерфейс. Java кроме вебни в томкате выглядит и работает так, что пользователю такое не поставишь.

Не ну чисто теоретически можно их подружить отделив и переписав куски бекенда на Java, но это не упростит работу а усложнит.

Мне просто любопытно, есть ли смысл соваться в Vala, которая сильно-сильно похожа на C#, или это маленький язык для написания приложений типа Часы и Календарь в GNOME3?...

Ответить | Правка | Наверх | Cообщить модератору

34. "Выпуск экспериментальной версии транслятора языка программир..."  +1 +/
Сообщение от gavr (ok), 17-Фев-21, 22:01 
>или это маленький язык для написания приложений типа Часы и Календарь в GNOME3

Давайте приведу пару не часов и календарей
1) Ядро Frida( https://github.com/frida/frida frida-core) https://frida.re/ это такой дизасемблер с возможностью скриптинга на разных языках(как раз из-за GIR)
2) Akira ( https://github.com/akiraux/Akira/pull/485 ) сейчас в активной разработке, будет векторным редактором ориентированным на дизайнеров UI.
3) Planner ( https://github.com/alainm23/planner ) лучшая тудушка под линь из нативный, синхронит с Todoist
4) Coanda ( https://coanda.ca/ ), довольно большая АСУТП компания содержит в своих репах Vala код, в том числе SCADA систему. ( https://github.com/coanda?q=&type=&language=vala )
5) Dino ( https://github.com/dino/dino ) Jabber клиент
6) https://www.ev3dev.org/ любители перепрошить лего на дебиан( https://github.com/ev3dev/ev3devKit ), а также их brickman и grx-widgets(виджеты под чернобелые маленькие экраны) написаны на Vala
7) https://documatrix.com/ Компания специализируется на обработке документов, к сожелению большая часть софта закрыта, но в открытой видно что они используют достаточно много Vala ( https://github.com/documatrix?q=&type=&language=vala ) и она обновляется.
8) https://birdfont.org/ Программа для создания шрифтов ( https://github.com/johanmattssonm/birdfont ), кстати у них своя XML либа, тоже на Vala( https://github.com/johanmattssonm/xmlbird )
9) Rygel достаточно большое медиа-решение, у автора есть данные что оно используется некоторыми автопроизводителями https://wiki.gnome.org/Projects/Rygel/Development сурсы https://gitlab.gnome.org/GNOME/rygel/
10) DE Elementary OS и Budgie
11) Во времена N900 Nokia использовала Vala для интерфейсов, у нас сохранились биндинги к их UI фреймворку Hildon https://valadoc.org/hildon-1/Hildon.html https://valadoc.org/hildon-fm-2/Hildon.html

Также заявили что используют Vala, но код закрыт компании: https://www.untangle.com/ https://www.cablelabs.com/ https://www.realmacsoftware.com/

Ответить | Правка | Наверх | Cообщить модератору

33. "Выпуск экспериментальной версии транслятора языка программир..."  +/
Сообщение от gavr (ok), 17-Фев-21, 21:32 
Да, GXml неплоха, кстати целиком написана на Vala ( https://gitlab.gnome.org/GNOME/gxml ) не нравится забиндите любую понравившуюся либу поддерживающую C FFI, благо это довольно просто.

Вот пример ( https://gitlab.com/gavr123456789/xml-object-mapping-example ) её использования двумя способами, оба делают одно и тоже, достают отсюда ( http://www.cbr.ru/scripts/XML_daily.asp ) курс Гонконгских долларов.

Первый способ мапит объекты XML на объекты Vala(строка 44), второй способ использует упомянутый вами Xpath(строка 12)

Ответить | Правка | К родителю #25 | Наверх | Cообщить модератору

36. "Выпуск экспериментальной версии транслятора языка программир..."  +/
Сообщение от Аноним (36), 18-Фев-21, 11:04 
Наткнулся на такую особенность:

int main(string[] args) {
    var arr = new int[1] {1, 2, 3};
    int[1] arr2 = {1, 2, 3};
    stdout.printf("Length of arr = %d\n", arr.length);
    stdout.printf("Length of arr2 = %d\n", arr2.length);

    return 0;
}

$ vala main.vala
Length of arr = 1
Length of arr2 = 3

$ valac --version
Vala 0.48.6

Ответить | Правка | Наверх | Cообщить модератору

37. "Выпуск экспериментальной версии транслятора языка программир..."  +/
Сообщение от gavr (ok), 18-Фев-21, 11:53 
>[оверквотинг удален]
>  int[1] arr2 = {1, 2, 3};
>  stdout.printf("Length of arr = %d\n", arr.length);
>  stdout.printf("Length of arr2 = %d\n", arr2.length);
>  return 0;
> }
> $ vala main.vala
> Length of arr = 1
> Length of arr2 = 3
> $ valac --version
> Vala 0.48.6

v.vala:3.5-3.10: error: syntax error, no expression allowed between array brackets
    int[1] arr2 = {1, 2, 3};
    ^^^^^^
Compilation failed: 1 error(s), 0 warning(s)

valac --version
Vala 0.50.3


int[] arr в стиле C# - массив на куче, в него можно динамически добавлять данные через arr += 2;
int arr[] в стиле C - массив на стеке
Предполагаю что на твоей старой версии компилятора массив просто расширился чтобы вместить 3 элемента.

Ответить | Правка | Наверх | Cообщить модератору

38. "Выпуск экспериментальной версии транслятора языка программир..."  +/
Сообщение от Аноним (38), 18-Фев-21, 13:24 
Почему-то по-разному вывел размер массива (main.c):
...
_tmp0_ = g_new0 (gint, 1);
_tmp0_[0] = 1;
_tmp0_[1] = 2;
_tmp0_[2] = 3;
arr = _tmp0_;
arr_length1 = 1;
_arr_size_ = arr_length1;
_tmp1_ = g_new0 (gint, 3);
_tmp1_[0] = 1;
_tmp1_[1] = 2;
_tmp1_[2] = 3;
arr2 = _tmp1_;
arr2_length1 = 3;
_arr2_size_ = arr2_length1;
...

Но компилятор таки надо будет попробовать посвежее, ага.

Ответить | Правка | Наверх | Cообщить модератору

39. "Выпуск экспериментальной версии транслятора языка программир..."  +/
Сообщение от Аноним (38), 18-Фев-21, 13:40 
А свежие версии только из исходников компилить? В ppa тоже старая версия.
Ответить | Правка | К родителю #37 | Наверх | Cообщить модератору

41. "Выпуск экспериментальной версии транслятора языка программир..."  +2 +/
Сообщение от gavr (ok), 18-Фев-21, 21:15 
Написал разрабу в IRC, обновил https://launchpad.net/~vala-team/+archive/ubuntu/next
Ответить | Правка | Наверх | Cообщить модератору

43. "Выпуск экспериментальной версии транслятора языка программир..."  +/
Сообщение от Аноним (43), 18-Фев-21, 22:35 
Отлично, спасибо! (хоть я и собрал таки уже из исходников)
Погляжу поближе, что он из себя представляет.
Ответить | Правка | Наверх | Cообщить модератору

40. "Выпуск экспериментальной версии транслятора языка программир..."  +/
Сообщение от Аноним (38), 18-Фев-21, 14:25 
>int arr[] в стиле C - массив на стеке

main.vala:
int main(string[] args) {
    int arr3[] = {1, 2, 3};
    return 0;
}

main.c:
...
gint arr3[3] = {0};
gint _tmp0_[3] = {0};
FILE* _tmp1_;
gint result = 0;
_tmp0_[0] = 1;
_tmp0_[1] = 2;
_tmp0_[2] = 3;
memcpy (arr3, _tmp0_, 3 * sizeof (gint));
...
Хм, и они говорят, что нет оверхеда по сравнению с Си?

Ответить | Правка | К родителю #37 | Наверх | Cообщить модератору

42. "Выпуск экспериментальной версии транслятора языка программир..."  +2 +/
Сообщение от gavr (ok), 18-Фев-21, 21:41 
Vala делает много разных трюков для оптимизации и избегания сишного UB.
Это кстати в данном случае и то и другое

https://ru.wikipedia.org/wiki/SSA

https://stackoverflow.com/questions/54058529/why-valac-gener...

Проверяйте сначала ассемблер https://godbolt.org/z/c8cs5Y

Ответить | Правка | Наверх | Cообщить модератору

44. "Выпуск экспериментальной версии транслятора языка программир..."  +/
Сообщение от Аноним (43), 18-Фев-21, 22:42 
Спасибо за терпеливое разъяснение.
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру