LINUX.ORG.RU

[провокация срача]Qt & Vala

 ,


0

2

Изучаю Си++, захотелось написать утилитку. Из годных языков тулкитов нашел 2 подходящих. Вот думаю, какой из этих языков быстрее, лучше, фичастее? Гугл молчит, как партизан.



Последнее исправление: CYB3R (всего исправлений: 2)

>Изучаю Си++

Из годных языков нашел 2 подходящих


Сам себе противоречишь. Вала - язык для гтк, Qt тулкит, основанный на c++ в основном. Так что тебе надо?

Zhbert ★★★★★
()

Ты плюсы изучаешь или чего хочешь добиться?

Из годных языков нашел 2 подходящих

Огласи список годных языков и список подходящих.

//Hint: Qt - это не язык программирования

pathfinder ★★★★
()

> нашел 2 подходящих

Критерии подходящести в студию.

FractaIL
()

Озвуч что за утилита, какие у тебя требования. А с текущим списком потребностей (не озвученым вообще) что-то полезного тебе никто не сможет посоветовать.

erfea ★★★★★
()

Гугл молчит, как партизан.

Набери лучше в гугле вместо «Qt vs Vala» что-нибудь вроде «провокация срача». Гугл выдаст правильные мануалы.

А если по делу, то Qt хорошо сделан, это отработаная технология, нет проблем с документацией и есть большое комьюнити. Но это плюсы.

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

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

Если плюсы тебе не нравятся, а хочется язык с нативной сборкой мусора

если правильно юзать QObject, сборка мусора не проблема.

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

Сомневаюсь что кто-то делал подобное сравнение (хотя бы потому что Qt - тулкит для плюсов, а вала это ЯП), посмотри что может вала, а что Qt и сравни.

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

если правильно юзать QObject, сборка мусора не проблема.

Согласен, что если все правильно делать, то управление памятью не доставит проблем. Но некоторые люди на дух не переносят что-то отличное от нативной сборки мусора. Жаль lovе5an забанили, он бы нам объяснил альтернативную точку зрения.

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

Если использовать Qt, то QObject использовать нужно правильно, а если правильно использовать QObject заботы о мусоре с плеч программиста снимаются.

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

> Инструмент

бери микроскоп — отличный инструмент! мне подошел, всем знакомым и их родственникам подошел, и тебе должен подойти!!!

arsi ★★★★★
()

> Изучаю Си++, захотелось написать утилитку.

а что за утилитка?
способ сравнить единственно верный — возьми да напиши.
Один раз на Qt/C++, второй на Gtk/Vala. И сравни ощущения, что проще, что сложнее.

Вот думаю, какой из этих языков быстрее, лучше, фичастее? Гугл молчит, как партизан.


ну Qt это C++, а Vala это C# или Python (Vala/Genie).

То есть, сравнивать надо не языки C++/C#/Python vs. Vala/Genie, а сами тулкиты.
В Qt много чего есть из коробки, документация, коммьюнити, поддержка CMake, один минус — С++.

Из чего (выбора С++) следует: относительно долгое время конпеляции, непрозрачный ABI, сложность биндингов к другим языкам (например, посмотри QtJambi, на основании которого сделаны биндинги к Java, D (QtD) или SWIG PySide/PyQt)

сборки мусора нет (хотя можно прикрутить boehm gc к C++)

Vala: язык C#, транслируемый в Си. Vala/Genie: язык вроде питона, транслируемый в Си.
В языке «из коробки» есть свойства, делегаты, события, сигналы, лямбды, weak ptr, owned/unowned управление памятью.

Это всё реализовано для объектной модели GObject на базе Glib. Можно эту объектную модель не использовать. Можно вообще отказаться glib, и использовать libc/POSIX, тогда заодно и отказываешься от некоторых фич языка. Есть профили которые примерно соответствуют разным C++ runtime по смыслу, но остальные профили кроме Glib (dova, posix) недопилены.

Соответстветственно, сравнивать надо Glib + GTK + Vala vs. Qt + C++.
Сборки мусора нет, вместо него подсчёт ссылок.
Биндинги делаются проще, см. gir-introspection и VAPI.
Биндингов довольно много уже есть сейчас готовых «из коробки», и несложно написать свои.
Есть поддержка Vala в Waf, скрипты для autotools.

В общем, если нужна прозрачная линковка с Си — Vala вполне неплохое решение.
Но, документации не особо много. Это http://live.gnome.org/Vala + http://valacode.org , бложик valaide
Основная документация по Вале — это C документация к Glib/GTK+ и исходники готовых проектов.

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

Vala в среднем быстрее C++, см. на гуглокоде Vala benchmarks: примерно наполовину между plain C и C++. С другой стороны, бенчмарки шутаутовские в вакууме, да и сферическая скорость работы готовой проги по сравнению со скоростью её написания тоже особого смысла не имеет.

anonymous
()

Бери Qt.
Ну или Vala.

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

Он кстати в бложике приводил пример когда GC оказывался быстрее счётчика ссылок. Отсюда, вроде бы он не должен любить Валю, потому как опять голимый счётчик ссылок в Glib. C другой стороны, ему нравится COM, а я особо глубинной разницы между GObject и COM AddRef/Release не узрел.

Вот в Vala есть профиль POSIX, который довольно сильно не допилен.
Надо бы по аналогии сделать профиль WinCOM (ну или кроссплатформный XPCOM из мозиллы стянуть), и на винду валу портировать с минимальным рантаймом (MinGW вроде как собирает нормально, но опять тянет за собой юниксизмы).

В итоге, потенциально можно сделать быстрый C# под винду или кроссплатформный через XPCOM без .NET runtime :)))

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

при этом конпелятор надо брать не mingw, а tcc или pcc, которые неплохо работают под вендой, генерят x86 и x86_64 код. А всякую хрень вроде autotools и gnu hello world не тянуть за собой.

в общем, новый пурик написать такой.

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

Народ подскажите как в QT отследить какая вкладка контейнера TabWidget выбрана? Мне нужно в слоте кнопки реализовать что то типа:

if(если выбрана такая то) {
...
}

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

> Hint: Qt - это не язык программирования

учитывая наличие moc в qt это практически отдельный язык

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

Народ подскажите как в QT отследить какая вкладка контейнера TabWidget выбрана? Мне нужно в слоте кнопки реализовать что то типа:

QTabWidget::currentIndex(), не? Или в вопросе какой-то подвох есть?

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

Спасибо, как раз то что доктор прописал. Буду учится пользоваться справкой.

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