LINUX.ORG.RU

Зачем нужен язык Vala?

чтобы было менее больно писать под glib, по сравнению с сишечкой.

waker ★★★★★
()

Интеграция с Glib и GTK+. К D и Rust нужно писать биндинги, а Vala просто в С перегоняется - профит.

NegatiV
()

По какой причине разработчики GNOME создали свой язык вместо использования уже существующих D и Rust

Vala появилась раньше, чем Rust.

Heretique
()

Видимо посчитали, что встраивать язык в тулкит a la QtScript — плохая идея.

quantum-troll ★★★★★
()
Ответ на: комментарий от NegatiV

Все равно не могу понять, зачем создавать новый язык. Написать биндинг к Gtk/Glib сложнее, чем синтаксический анализатор?

Den_Zurin
() автор топика

вместо использования уже существующих D и Rust

Потому что раста вообще не существовало, а D был в зародышевом состоянии, очевидно

buddhist ★★★★★
()

чтобы было! вот только документации на его мало;-) по крайней мере было, когда я смотрел. А у си в прямых руках всегда было преимущество по скорости.

Ignatov ★★★
()
Ответ на: комментарий от Den_Zurin

ему не хватало только библиотек

«А щас-то да, у него с библиотеками все норм». - тут не хватает вот такого хэппи-энда, чтоб прошедшее время «не хватало» не повисало в воздухе стыдливыми недосказанностями.

slackwarrior ★★★★★
()

Чтобы не писать на голом GObject. Это адовый кошмар — вручную заполнять виртуальные таблицы, таблицы сигналов и свойств. Посмотри сишный выхлоп vala — примерно то же самое приходится писать руками если работать в сишным GTK+.

crowbar
()

Зачем нужен язык Vala?

Чтобы C#-пом не пользоваться, очевидно же :) «And introducing Vala, to my mind, was done in part to replace Mono. C#-like syntax, compiling with gcc, no Microsoft. Win-win-win» (c)

slackwarrior ★★★★★
()
Ответ на: комментарий от slackwarrior

Я сравнивал не с C#, а с другими C++ killer'ами. Хорошо, Rust тогда не было, но D и Objective-C были. Чем они не угодили создателю Vala?

Den_Zurin
() автор топика

Зачем нужен язык Vala?

А кто утверждает? вроде всем понятно, что не нужен

umren ★★★★★
()

Зачем нужен язык Vala?

Он нинужен.

По какой причине разработчики GNOME создали свой язык вместо использования уже существующих D и Rust?

Потому что они как майкрософт, им всегда надо запилить свой несовместимый велосипед. Они даже гном именно поэтому сделали.

Есть ли у Vala какие-либо преимущества перед этими языками?

Нет. Зато есть недостатки: маленькая аудитория и следственно ужасная поддержка. Недоросли гномовцы до майкрософта ещё, чтоб просто так велосипеды делать.

anonymous
()
Ответ на: комментарий от anonymous

Они даже гном именно поэтому сделали.

Проект GNOME был основан в августе 1997 года Мигелем де Икасой и Федерико Меной Кинтеро как попытка создать полностью свободную рабочую среду для операционной системы GNU/Linux.

В то время единственным вариантом для неискушённого пользователя являлась среда KDE. Но KDE основана на инструментарии Qt фирмы Trolltech, который тогда был проприетарным продуктом. Чтобы не допустить ухудшения ситуации, была инициирована разработка GNOME — новой свободной рабочей среды на основе инструментария GTK+, созданного ранее для графического редактора The GIMP и распространяемого на условиях GNU LGPL.

Den_Zurin
() автор топика

Vala - это генератор в СИ и разработчику не нужно отказываться от привычных ему инструментов. Уменьшает размер кода, добавляет ООП, повышает уровень абстракции.

D и Rust? Есть ли у СИ какие-либо преимущества перед этими языками?

Можно было бы и так вопрос поставить.

backbone ★★★★★
()
Ответ на: комментарий от backbone

D и Rust? Есть ли у СИ какие-либо преимущества перед этими языками?
Можно было бы и так вопрос поставить.

Если нужно ООП и сборка мусора (желательно при разработке GUI приложений) - нет.

Den_Zurin
() автор топика
Ответ на: комментарий от Den_Zurin

Если ты понимаешь под биндингом возможность юзать вызовы glib/gtk+, то да, сделать биндинг проще. Вот только такой биндинг мало юзабелен и по сути приведет к тому, чего гноморазрабы хотели избежать - куча низкоуровневой работы с glib/gtk+. Согласись, что назревает необходимость создания библиотеки/фреймворка, которая скроет под капотом всю низкоуровневщину и будет более-менее соответствовать концепциям, принятым в языке для которого создается биндинг. Вот и думай что проще: написать конвертор Vala -> C, или биндинг + фреймворк с минимумом потерь для производительности.

NegatiV
()
Ответ на: комментарий от Den_Zurin

Спасибо, кэп. Qt уже тогда был свободным, только не по мнению гнусов. Икаса вместо того, чтобы договариваться с трольтехом, начал пилить свой велосипед. Теперь у нас зоопарк в котором гномовцы.

anonymous
()
Ответ на: комментарий от Den_Zurin

Если нужно ООП и сборка мусора (желательно при разработке GUI приложений) - нет.

Имхо, есть, разница лишь в том, что многие операции в СИ/GObject делаются явно.

backbone ★★★★★
()

Во-первых D очень сложный язык. То есть Александреску утверждает что он проще крестов и многие ему верят, но… Rust'а тогда не было. На Objective-C никто не согласиться писать бесплатно. Во-вторых GObject реализует примерно то что в современных ЯВУ реализуется в рантайм-системе. В случае написание биндингов у программиста оказалось бы в руках две рантайм-системы и необходимость заставлять их работать вместе. Плюс к этому бесконечный маршалинг. А в отношении Vala такого нет: её rts это rts glib'а, её объекты это GObject'ы. В общем решение было очень интересное. Жаль не взлетело.

KblCb ★★★★★
()
Ответ на: комментарий от CrossFire

Там лишь неудачная реализация GC. В сложных программах, написанных на C++ и других языках с ручной сборкой мусора рано или поздно начинает течь память, т.к. программист не может уследить за всеми компонентами. Прекрасно видно на примере всех популярных браузеров - Chrome, Opera, FireFox.

Den_Zurin
() автор топика
Ответ на: комментарий от backbone

и разработчику не нужно отказываться от привычных ему инструментов

Чтобы разработчику не нужно было отказываться от привычных инструментов, нужно было писать на плюсах, а не насиловать си в 2014 году.

Deleted
()
Ответ на: комментарий от Den_Zurin

Хорошо, Rust тогда не было

А щас он уже «есть» во все поля? В смысле, кроме фриков/гиков на нем кто-то что-то пишет?

slackwarrior ★★★★★
()
Ответ на: комментарий от Den_Zurin

Кхм, просто мимоходом отмечу, что в Rust`е нет встроенного сборщика мусора.

ozkriff
()

приимуществ нету. Просто у других языков был один, но очень фатальный недостаток.

Deleted
()

Vala — очень приятный язык. Нужен хотя бы для того, чтобы я легко пописывал свои хеллоуворды, не используя мейнстримовый язык.

CYB3R ★★★★★
()
Ответ на: комментарий от Den_Zurin

написанных на C++ и других языках с ручной сборкой мусора рано или поздно начинает течь память

Что мешает прикрутить сборщик мусора в кресты?

no-such-file ★★★★★
()
Ответ на: комментарий от Den_Zurin

В сложных программах, написанных на C++ и других языках с ручной сборкой мусора рано или поздно начинает течь память, т.к. программист не может уследить за всеми компонентами. Прекрасно видно на примере всех популярных браузеров - Chrome, Opera, FireFox.

В больших и сложных программах память может просто люто фрагментироваться. Заюзай в своем хелловорлде libxml2, открой им 50мб xml-файл, посмотри в top, освободи ресурсы, снова глянь в top - о боже - твой хелловорлд стал большой и сложной программой!

P.S. я не говорю что в больших программах утечек нет, но это далеко не главная причина их «жручести».

NegatiV
()
Ответ на: комментарий от Den_Zurin

а с другими C++ killer'ами

есть же glibmm. вероятно им нужна именно vala, а не c++-киллер (или сам c++)

stevejobs ★★★★☆
()

Зачем нужен язык Vala?

Ненужно.

Oxdeadbeef ★★★
()
Ответ на: комментарий от NegatiV

от возможности работать без GC все равно не отказаться.

Чо? Я и не говорил что его нужно прибить гвоздями. Я о том, что есть библиотеки для этого дела, ну хоть бы и эта http://www.hboehm.info/gc/ Ну и используй gc_malloc/gc_allocator вместо new, в чём проблема?

no-such-file ★★★★★
()
Ответ на: комментарий от Deleted

Чтобы разработчику не нужно было отказываться от привычных инструментов, нужно было писать на плюсах, а не насиловать си в 2014 году.

Многие не долюбливают плюсы по ряду причин. К слову, можно ли экспортировать без последующих проблем класс из библиотеки в плюсах?

backbone ★★★★★
()
Ответ на: комментарий от no-such-file

А ты попробуй теперь заюзать ее в проекте с кучей сишных библиотек и/или крестовыми либами со своими аллокаторами.

NegatiV
()
Ответ на: комментарий от backbone

К слову, можно ли экспортировать без последующих проблем класс из библиотеки в плюсах?

Можно, что в этих случаях можно делать с классом, а чего нельзя есть в интернете.

NegatiV
()
Ответ на: комментарий от NegatiV

Можно, что в этих случаях можно делать с классом, а чего нельзя есть в интернете.

Вот эти ограничения тоже могут стать проблемой. Нельзя безболезненно удалить какой-нибудь field без ломки ABI, что в последствии приводит к разрастанию класса.

backbone ★★★★★
()
Ответ на: комментарий от backbone

Кое-какие поля можно удалять, например, приватные невиртуальные функции. Если возникла необходимость удалить паблик функцию, то извини, это уже несовместимость на уровне API и всем кто юзает твою либу и эту функцию все равно придется пересобираться. Вообще кишки класса (в том числе реализацию функций) лучше прятать за d-pointer'ом - он спасет от целого скопа проблем, хоть и не всех.

NegatiV
()
Последнее исправление: NegatiV (всего исправлений: 1)
Ответ на: комментарий от Den_Zurin

Однако сейчас Qt и кеды свободны, но гном сопротивляется закапыванию.

vurdalak ★★★★★
()
Ответ на: комментарий от NegatiV

С этим всем согласен. Собственно про разницу о прямом доступе к полю в C++ и доступу по методу и говорил. Метод можно отметить как deprecated и спустя какое-то время просто удалить, подразумевая, что уже никто им не пользуется. При удалении поля с прямым доступом нужно пересобирать все зависимости.

В C++ нужно вручную описывать эти методы плюс, как Вы сказали, прятать приватные поля за указателем. В чистом C тоже. Vala автоматизирует этот процесс, позволяя писать меньше кода.

На всякий случай, я не говорил, что Vala лучше плюсов, но утверждаю, что плюсы не лучше, чем Vala.

backbone ★★★★★
()
Ответ на: комментарий от backbone

Vala автоматизирует этот процесс, позволяя писать меньше кода.

Если речь шла об экспортировании классов, то так понимаю Vala умеет в либы? И умеет сохранять ABI в случае изменения содержимого класса (новые функции, поля)?

NegatiV
()

проблема vala это что по ней нет книг, кроме вики гнома я больше ничего не нашел, а это совсем не удобно.

Novell-ch ★★★★★
()
Ответ на: комментарий от NegatiV

Экспорт классов в Vala - обычный процесс и не напрягает лишними мыслями, всё реализуется через C-шные процедуры, т.е. клиент класса не обязан знать смещение какого-либо поля.

Но, если нужна оптимизация, можно создавать, так называемые «лёгкие классы» и структуры, для которых при удалении полей ABI не сохранится.

Добавлять свойства и методы для классов, наследуемых от Object (GObject) можно без проблем.

backbone ★★★★★
()

По какой причине разработчики GNOME создали свой язык вместо использования уже существующих D и Rust?

«Уже существующих»? Да ты же лопнешь!

Есть ли у Vala какие-либо преимущества перед этими языками?

Как пишут на педивикии, «Программа на Vala транслируется в программу на зыке C, которая в свою очередь компилируется в исполняемый код целевой платформы со стандартными библиотеками C, Glib.» Ни D, ни Rust так не умеют.

Manhunt ★★★★★
()

Чтобы потом изобрести язык P.

anonymous
()
Ответ на: комментарий от I-Love-Microsoft

А серьезные задачи на нем как делать?

Гораздо легче, чем на тех же крестах.

Не хватает того что вокруг него...

Чего не хватает? IDE? Сейчас одну очень крутую пилят. А я в обычном Geany пишу и в vim иногда.

CYB3R ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.