Вышла новая версия компилятора для языка программирования Vala 0.50.4...Подробнее: https://www.opennet.me/opennews/art.shtml?num=54675
может, проще сразу цпп?
Цпп и проще в одном предложении?
Всё было просто, пока не пришли шаблоны.
Так метапрограммирование это один из трендов. Рано или поздно, что-то подобное появится и в Vala.
Не пользуйтесь шаблонами, никто же не заставляет.
> Не пользуйтесь шаблонами, никто же не заставляет.Только ежедневно читайте и чините код ваших коллег, переполненный ими.
Ребят, Вы точно про метопрограммирование? Просто Макросы -- это та ещё жесть, а декларировать какие-либо свойства/поведение группы классов в одном (приличном!) месте, бывает очень удобно и сильно облегчает чтение.
При всей жести макропортянок Си, сами по себе правила языка для макросов очень просты для понимания (если не сказать тривиальны). Далее уже понимание того, что наворотили, собственно, предшественники. Хотя, это, конечно, не совсем метапрограммирование.Во что развернётся шаблон в cpp сходу понять могут "не только лишь все" (c), т.к. правила языка в этой части, мягко говоря, не тривиальны (т.к. суть шаблонов cpp, как я её понимаю, это, в общем-то, те же макроподстановки, только не на уровне лексера, а на уровне AST).
> При всей жести макропортянок Си, сами по себе правила языка для макросов
> очень просты для понимания (если не сказать тривиальны).Вы оптимист. Помнится, MSVC 7й что ли версии (точно не 6й) отказался понимать примеры из Стандарта. Ну а про шаблоны, это отдельная больная тема, замнём её для ясности, тем более что разработка Comeau прекращена.
> MSVCНу, у этих всю жизнь своя атмосфера и своеобразное трактование стандартов. И вообще компилятор капризный (самый, из мне знакомых, как минимум). Помню, была задача проекту, собирающемуся gcc/clang, обеспечить нативную сборку на Виндах с использованием msvc (не надо спрашивать зачем, решение не я принимал) - тот ещё случился АдокЪ.
Макросы могут делать мозг. Зато
1) Не генерят код. Все считается compile time. Конечно можно это наесть при сильном желании, но по умолчанию оно вот так.
2) Все достаточно просто и прозрачно. А вот на шаблонах могут завернуть такого что мало не покажется. Не то чтоб на макро так нельзя - но неудобно. А шаблоны могут так влупить что потом этот код вообще майнтайнить никто не может или не хочет.
> Так метапрограммирование это один из трендов.Андре́й Александре́ску ... известный благодаря ... метапрограммирования шаблонов.
С 2009 года работал в ... в 2015 году ушёл из компании, чтобы сосредоточиться на разработке языка D.
> Рано или поздно, что-то подобное появится и в Vala.Оно там уже есть - есть коллекции в библиотеке gee построенные на основании шаблонов.
В Vala generics, а не templates. Оба случая переводят как "шаблоны", но есть различия, в том числе и в возможностях. Темплейты -- отдельный Тьюринг-полный язык в языке, исполняемый на этапе трансляции. Возможностей больше, но и повышается порог вхождения.
На макросах хуже, чем на шаблонах
> кто читал стандарт цпп?Хороший вопрос.
Или джаву или сишарп.
> Уже видел такое. По телевизору.100% , лучше старый добрый stl чем новый glib апи каждый день
Минусуйте сколько влезет, но без нормальной работы с чем бы то ни было кроме гетека (Qt, wxWidgets) - не нужен.
Vala не стремится распространиться во все сферы и на весь мир. Это язык чисто для своих, для работы с GLib-овским ООП и линуксовыми сервисами/библиотеками. Скажем, у эпла есть свой собственный ЯП, обслуживающий интересы эпла. Vala - то же самое, обслуживает интересы GNU/Linux и предоставляет чрезвычайно удобный синтаксис по работе с сишным ООП, D-Bus-сервисами, GTK+ и так далее. И как приятное дополнение, биндинги к наиболее популярным языкам: все, что напишешь на вале, может пригодиться и тем, кто кроме питона или JS ничего не знает. Это в отличие от крестов, которые продолжают оставаться вещью в себе.
> все, что напишешь на вале, может пригодиться и тем, кто кроме питона или JS ничего не знаетКаким образом, не сильно понимаю?
>Vala - то же самое, обслуживает интересы GNU/LinuxОно обслуживает интересы гномосеков, а не линукса, кукаретик.
GNOME - ведущая, основная и дефолтная DE в GNU/Linux. При этом в самом GNOME на вале писать особо не стараются, -- вместо этого валя возымела необыкновенную популярность в elementary OS. Так что я рекомендую тебе все же хотя бы поверхностно ознакомиться с темой, прежде чем садиться в лужу, как сейчас.
Ведущая... дефолтная... Смешная шутка... но сегодня 1 марта, а не 1 апреля
Берешь топ-10 наиболее популярных дистров. Какая там стоит дефолтная ДЕ?По каждому ДЕ берешь количество разработчиков, которые ею заняты. Какая ДЕ будет в существенном перевесе? Ну и а если считать разработчиков на зарплате?
Популярных от слова попа.
Не путайте количество с качеством! Но предположим!.. И что с того? Почему тогда у вашей ведушей, дефолтной DE столько форков? Почему за 10 лет, по вашему, ведущие разработчики не способны решить элементарные проблемы с теми же гигантскими размерами виджетов (с заголовками) на экранах с небольшим разрешением и т.д.? И почему за годы "упрощений" 3-ей версии их поделка по виду и юзабилити стала для аутистов? То, что вы написали высше, вообще не показатель! Не стояла бы Red Hat, все было бы иначе. Нормальный, вменяемый линуксоид скорее должен стыдиться GNOME 3, чем восхищаться!
> Не путайте количество с качеством!Комментаторы выше попытались подвергнуть сомнению характеристики "ведущая, основная, дефолтная". А не "качественная". Перечитывай сообщения внимательнее. И да, GNOME действительно качественная.
> Почему тогда у вашей ведушей, дефолтной DE столько форков?
Потому что это популярная DE. Непопулярные проекты обычно не форкают.
> ведущие разработчики не способны решить элементарные проблемы с теми же гигантскими размерами виджетов
Ты назвал факты, а не проблемы. Лично меня эти факты устраивают и проблем не доставляют. Если не нравится размер виджетов, ставь другую тему, благо их полно и создавать их легче, чем для полупроприетарных тулкитов типа Qt.
> поделка по виду и юзабилити стала для аутистов
Это все лишь общие слова, а конкретики за тобой нет. Отвечать не на что.
> Нормальный, вменяемый линуксоид скорее должен стыдиться GNOME 3, чем восхищаться!
Нормальный, вменяемый линуксоид будет приветствовать стандартизацию и унификацию рабочего пространства. GNOME полностью соответствует фразе "desktop environment" в том плане, что компоненты системы действительно работают в связке и используют одни и те же реюзабельные механизмы.
Скажем, чтобы сконфигурировать через Ansible шрифты в qt5ct, придется проворачивать какие-то трюки, поскольку в текстовом conf-файле названия шрифтов кодируются через какое-то текстовое представление бинарных структур: https://www.google.com/search?q=%22qt5ct%22+%...
В то же время через тот же Ansible абсолютно любая GNOME-овская программа легко и просто конфигурируется через dconf единым стилем.
GNOME -- это вершина DE. И не только в одном лишь линуксе. Красота GNOME не только во внешнем виде, но и в его внутренних механизмах.
> GNOME — это вершина DEЧем больше изучаю GNOME, тем больше понимаю, что ты чертовски прав. О внешнем виде даже не упоминаю.
>их поделка по виду и юзабилити стала для аутистов"Аутизм (...) - расстройство, возникающее вследствие нарушения развития головного мозга и характеризующееся выраженным и всесторонним дефицитом социального взаимодействия и общения, а также ограниченными интересами и повторяющимися действиями"
"Аутизм — состояние, характеризующееся преобладанием замкнутой внутренней жизни, активным отстранением от внешнего мира, бедностью выражения эмоций."
Объясните, как ваш экспириенс в постижении юзабилити Gnome 3 соотносится с определением аутизма. Или перестаньте нести пургу.
Вон....
В смысле - "вон там, гляди!" или в смысле "пшел вон"? Если во втором - ха-ха, неохота, а если в первом - что именно и где именно?
> В смысле - "вон там, гляди!" или в смысле "пшел вон"? Если
> во втором - ха-ха, неохота, а если в первом - что
> именно и где именно?Пошел вон...
Ну, помечтать об этом ты можешь. А можешь смирить гордыню и рассказать всё же о связи Gnome 3 и аутизма. В соответствии с общепринятыми значениями медицинских терминов.
> Нормальный, вменяемый линуксоидЛинукс - это не идеология. Это операционная система. Любой линуксоид, т.е. пользователь Линукс, вменяем и нормален, пока использует тот софт, что нравится ему и не навязывает остальным свое видение юзабилити остальным. Намёк ясен?
А почему еще не обязаны быть биндинги к WPF, MAUI, Swing, JavaFX?
Хорошее сравнение. Vala для GTK это ровно то же, что и C# для WPF или Swing для Java. Минус гигантские деньги на раскрутку самого языка. Отсюда и язык идёт в один ряд с Nim, Zig или D: в меру интересные проекты, которые могут выйти из периферии если внезапно их подхватит какая-то достаточно крупная контора, как было с питоном в своё время.
Так его и придумали для того, чтобы нормально работать с мзначан сишным gtk: на голых сях писать объектно-ориентированную гую удовольствие сомнительное. На изначально плюсовом Qt и на плюсах норм.
> Минусуйте сколько влезет, но без нормальной работы с чем бы то ни
> было кроме гетека (Qt, wxWidgets) - не нужен.Что бы иметь хоть чем-то обоснованное мнение о языке, переписал с Qt (жду мнения знатоков, насколько оно well-formed C++) на Vala MPSIR брокер из https://community.kde.org/Plasma/Browser_Integration
получилось вдвое меньше как в исходнике, так и в исполняемом файле.Простой и доступный язык для своих задач, не требующий двухнедельного чтения книжки про SFINAE.
Есть ссыль на репу?
В профиле есть. Вот прямая https://github.com/STrusov/plasma-browser-integration-glib
Перепиши на Python, еще вдвое уменьшится кода!
Во-первых, в Vala унаследованный от Си привычный синтаксис и семантика, значит похоже на исходный Qt, а Python надо изучать отдельно.
Во-вторых, написанный на Python плагин chrome-gnome-shell занимает 15Мб, а мой -- 444Кб.
В общем, так себе экономия. Про прелести динамической типизации можно даже и не начинать.
Как там LTS у Qt поживает? А что с лицензией? GTK позволяет использовать в любых проектах, а Qt заставляет чуть что платить, если проект не GPL.
> GTK позволяет использовать в любых проектахНа не родной платформе просто ужасно выглядит, потому многие поделки переписывают на Qt.
> а Qt заставляет чуть что платить, если проект не GPLНе LGPL. Ограничения в последней LTS с бинарными сборками. Возможно, в будущем появятся неофициальные LTS от сообщества (Qt 5.15.3, ...).
Всем интересующимся, хороший гайд на русском тут https://wiki.gnome.org/Projects/Vala/Tutorial/ru
Общие ссылки, в том числе где найти сообщества тут https://wiki.gnome.org/Projects/Vala/Documentation#Places_to...
Благодарю, бро. Весьма в тему. Чем больше глядишь в программирование GUI (среди не жручих и более или менее приличных только GNOME), тем больше понимаешь, что нужно погружаться в Vala.Переводи дальше. 4.8 Mixins и выше.
Спасибо, совсем полный перевод я захостил на gitbook'е (https://vala.gitbook.io/vala/untitled/language-elements/tipy...), но мне чето самому не понравилось что получилось.Также по второй ссылке из предыдущего комментария (https://wiki.gnome.org/Projects/Vala/Documentation#Places_to...) можно найти мою тг конфу или общий дискорд.
> Спасибо, совсем полный перевод я захостил на gitbook'е (https://vala.gitbook.io/vala/untitled/language-elements/tipy...),Спасибо. С этого перевода и начинал. Написано доступно, желания переключиться на оригинал не возникало.
> но мне чето самому не понравилось что получилось.
Это хорошо, на самом деле. Как пишут классики, что бы получить совершенный художественный текст, его следует полностью переписать 21 раз.)
А он уже пережил этап трансляции в C? Насколько удобно выполнять отладку кода в нем если он до сих пор транслирует в C?
Нет, в этом плане пока всё остаётся без изменений, и насколько я понял - менять это не собираются (по крайней мере в качестве заявленных целей этого нет, даже наоборот, постулируется, что такой способ значительно облегчает как совместимость с C, так и с другими языками).
Во-первых, транслируя в си, можно детально изучить, как работает валя.
Во-вторых, приведу одну цитату: «только что вышло мажорное обновление GCC 9. В нем улучшили оптимизацию switch, и эта оптимизация автоматически попала в Vala, т.к. она компилируется в си».Так что я бы не сказал, что есть повод что-то там «переживать».
> он уже пережил этап трансляции в C?
В мини-новость!
Идея хорошая, но жаль что все это дело прибито гвоздями к мерзкому GTK.
Не прибито.
Правда? Даже у них в документации написано, что прибито к GTK и GNOME.Vala - это новый язык программирования, предназначенный для прикладного и системного программирования на основе библиотек GLib Object System (GObject) рабочей среды GNOME/GTK+
Если у вас нигде нет using Gtk, или другой либы, в которой есть using Gtk, то программа с ним линковаться не будет. Прибито оно только к GLib:$ cat hello.vala
public static int main () {
print ("Hello, World!\n");
return 0;
}
$ valac hello.vala && ./hello
Hello, World!
$ ldd hello
linux-vdso.so.1 (0x00007ffeb1bc4000)
libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x00007f094a662000)
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007f094a52d000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f094a360000)
libffi.so.7 => /usr/lib/libffi.so.7 (0x00007f094a354000)
libpcre.so.1 => /usr/lib/libpcre.so.1 (0x00007f094a2e2000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f094a2c1000)
/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007f094a6f4000)
Оно аккуратно прикреплено нержавеющими болтами к Си. Это хорошо.
Все бы хорошо, но glib .. нет спасибо