LINUX.ORG.RU — Русская информация об ОС Linux

[#]  

Обзор языка программирования Vala (для среды Gnome): Часть 3. Расширенные возможности языка Vala

В этой серии статей рассматривается язык программирования Vala, ориентированный на использование в графической среде Gnome. Данная статья завершает цикл, и в ней описываются расширенные возможности языка Vala, а также приводится краткая информация о штатных средствах и утилитах, прилагаемых к компилятору.

>>> Подробности

Метки: gnome, vala

IBM_dW *** (09.02.2010 12:56:57)
Проверено: Shaman007 (09.02.2010 13:12:43)
Juick

[#]  
ZveN

Почему так много шуму вокруг этой поделки?

ZveN # (09.02.2010 13:29:57)
[#] Ответ на: комментарий от ZveN 09.02.2010 13:29:57  

У тебя есть какие-то конкретные претензии к языку или тебе просто не нравится, когда в интернете кто-то не прав?

troorl ** (09.02.2010 13:31:12)
[#] Ответ на: комментарий от ZveN 09.02.2010 13:29:57  

Потому как, возможно, это единственное, что спасёт гном от монофикации.

Lumi ***** (09.02.2010 13:32:33)
[#]  
k0l0b0k

Часть 3.

что-то предыдущие части я пропустил.

k0l0b0k ** (09.02.2010 13:33:22)
[#] Ответ на: комментарий от troorl 09.02.2010 13:31:12  

А в чём не прав этот бедный индус, автор очередной статьи на бимеровском сайте?

Lumi ***** (09.02.2010 13:33:46)
[#] Ответ на: комментарий от troorl 09.02.2010 13:31:12  
Creed

+1 :)

Creed * (09.02.2010 13:49:20)
[#] Ответ на: комментарий от Lumi 09.02.2010 13:33:46  

Я думаю, об этом лучше спросить ZveN.

troorl ** (09.02.2010 13:49:53)
[#]  
boo32

язык выглядит более привлекательным, чем уродец c++. если осилю кросскомпиляцию под оффтопик гуишных приложений (основная проблема, насколько я понимаю, будет с gtk), то заменю данным инструментом используемый ныне wxWidgets.

boo32 * (09.02.2010 13:52:12)
[#] Ответ на: комментарий от troorl 09.02.2010 13:31:12  
Yurand

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

Yurand * (09.02.2010 13:59:38)
[#]  
Sun-ch

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

Sun-ch # (09.02.2010 13:59:48)
[#]  
mkfifo

если в теме есть специалисты по языку Vala -- то можно спросить следущий вопрос:

когда мы используем какойнить идентификатор в Vala (например называм так свой функцию или класс или переменную), теми названиями которые обычно в C/C++ за define`нены чемнибудь -- то что мы получить при компиляции Vala-кода в двоичный-исполняемый-код? (получим ошибку или всё пройдёт гладко?)

((но при этом название идентификатора -- не является ключевым_словом\зарезервированным_словом -- ни языка C/C++ ни Vala ))

....например если назовём функцию\класс\переменную -- идентификатором "EXIT_SUCCESS" (который за define'ин в <stdlib.h> ?

# p.s.: Vala не устанавливал, наблюдаю "из далека"...

mkfifo * (09.02.2010 14:04:02)
[#] Ответ на: комментарий от Yurand 09.02.2010 13:59:38  

Если совмещать Си-документацию и http://references.valadoc.org/ , то на этом вполне можно писать.

troorl ** (09.02.2010 14:29:19)
[#] Ответ на: комментарий от mkfifo 09.02.2010 14:04:02  

А области видимости для чего придумали?

troorl ** (09.02.2010 14:30:18)
[#] Ответ на: комментарий от Yurand 09.02.2010 13:59:38  
sambo

во второй статье приводится ссылка на ресурс с доками: http://references.valadoc.org/

sambo (09.02.2010 14:34:50)
[#] Ответ на: комментарий от boo32 09.02.2010 13:52:12  

> если осилю кросскомпиляцию под оффтопик гуишных приложений (основная проблема, насколько я понимаю, будет с gtk)

и эти люди говорят про "уродства"...

lester **** (09.02.2010 14:35:19)
[#] Ответ на: комментарий от troorl 09.02.2010 14:30:18  
mkfifo

> А области видимости для чего придумали?

поэтому и спрашиваю.. так как в C/C++ если <чтото> было <гдето> (гдето ранее в коде) за-#define-нено , -- то использовать такой идентификатор уже будет НЕвозможно ни в какой из областей видимости

но Vala это не C/C++ .

а сдругой стороны, написанно что при компиляции Vala-кода -- происходит его преобразование в C/C++-код (?) :

(а значит появиться проблемма с невозмозностью использования определённых идентификаторов независимо от того в какой области видимости они находятся?)


илиже преобразование в C/C++-код -- происходит МИНУЯ препроцессора C/C++ ? по крайней мере во время операции:

vala -c <список_vala-файлов>


???

mkfifo * (09.02.2010 14:41:46)
[#] Ответ на: комментарий от mkfifo 09.02.2010 14:41:46  

При трансляции в Си название твоего идентификатора разворачивается примерно в ОбластьВидимостиИмяДиентификатора. Так что никаких особых проблем с этим нет.

troorl ** (09.02.2010 14:58:22)
[#]  

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

Т.е. изучение C-клонов как-то может повысить т.н. "квалификацию"? Интересно-с.

xkitenz * (09.02.2010 15:02:40)
[#] Ответ на: комментарий от troorl 09.02.2010 14:58:22  
mkfifo

это хорошо! спасибо за разъеснение...

...надеюсь всякие спец символы тоже добавляются в префикс (чтоб "развёрнутый" идентификатор случайно таки не совпал с <....> )

mkfifo * (09.02.2010 15:05:33)
[#]  
a3

И лепят, и лепят вокруг этого бедного Си подпорки, подпорища, костыли, костылищщи... Поделие мертворожденно.

a3 * (09.02.2010 15:12:32)
[#] Ответ на: комментарий от a3 09.02.2010 15:12:32  
mkfifo

нената :-( .. Си -- хороший кросплатформенный незамысловатый язык ^__^ ..

а вот Си++ -- спорно (вот его и пытаются змениться всякими Ди , ... ) ...

mkfifo * (09.02.2010 15:14:36)
[#] Ответ на: комментарий от mkfifo 09.02.2010 15:05:33  
los_nikos

Для таких дотошных в первой части статейки уже рассматривали vala -C

los_nikos ***** (09.02.2010 15:19:07)
[#] Ответ на: комментарий от a3 09.02.2010 15:12:32  
los_nikos

> Поделие мертворожденно

оно лучше Mono, поэтому живо и будет жить

los_nikos ***** (09.02.2010 15:22:06)
[#] Ответ на: комментарий от los_nikos 09.02.2010 15:22:06  
a3

Чем лучше? Вот объективно, если не брать в расчет банальное рабство, то моно лучшее, что есть для гнома.

a3 * (09.02.2010 15:26:14)
[#] Ответ на: комментарий от a3 09.02.2010 15:26:14  
los_nikos

> Чем лучше?

Тем что не .NET

> Вот объективно, если не брать в расчет банальное рабство, то моно лучшее, что есть для гнома

Пока весь основной софт который делается для Mono и около Mono делает сама Novell, поэтому Mono - лучшее что есть только для Novell и Microsoft, но никак не Gnome.

los_nikos ***** (09.02.2010 15:30:14)
[#]  
wfrr

Там есть онанисмные функции? Карринг?

или это просто первый шаг к моне?

wfrr **# (09.02.2010 15:33:04)
[#] Ответ на: комментарий от a3 09.02.2010 15:12:32  
helios

> Поделие мертворожденно.

Чёт у тебя всё "мёртворождённое"... ты сам(а) случаем не того?..

helios *** (09.02.2010 15:34:04)
[#] Ответ на: Там есть онанисмные функции? Карринг? от wfrr 09.02.2010 15:33:04  
Bohtvaroh

Лямбды есть.

Bohtvaroh *** (09.02.2010 15:38:08)
[#] Ответ на: комментарий от a3 09.02.2010 15:12:32  
KRoN73

>И лепят, и лепят вокруг этого бедного Си подпорки, подпорища, костыли, костылищщи...

Разве сабж не бОльший "костыль вокруг Си", чем D, Java или Perl? :)

KRoN73 ***** (09.02.2010 15:39:11)
[#] Ответ на: комментарий от KRoN73 09.02.2010 15:39:11  
wfrr

Если морятся костылями то больше и толще, и еще без иструкции по рпименению, от чего иногда стреляет в ногу.

wfrr **# (09.02.2010 15:43:52)
[#] Ответ на: комментарий от a3 09.02.2010 15:26:14  

> Чем лучше? Вот объективно, если не брать в расчет банальное рабство, то моно лучшее, что есть для гнома.

Лучше тем, что оно компилит прямо в бинарный код и для выполнения проги не нужны никакие прослойки типа .NET или Java.

anonymous (09.02.2010 16:04:11)
[#] Ответ на: комментарий от anonymous 09.02.2010 16:04:11  
wfrr

Бугага © и через 200 лет будут ставить двойки по некрофилии метанонимусам думающим что java и .Net интерпретируется

wfrr **# (09.02.2010 16:13:38)
[#] Ответ на: комментарий от wfrr 09.02.2010 16:13:38  

> Бугага © и через 200 лет будут ставить двойки по некрофилии метанонимусам думающим что java и .Net интерпретируется

А кто говорил про интерпретацию? Я сказал только, что java и .Net являются доп. прослойками.

anonymous (09.02.2010 16:19:00)
[#] Ответ на: комментарий от wfrr 09.02.2010 15:43:52  
KRoN73

>Если морятся костылями

При чём тут меряние костылями?

Vala - расширение Си или самостоятельный язык?

KRoN73 ***** (09.02.2010 16:20:02)
[#] Ответ на: комментарий от wfrr 09.02.2010 16:13:38  
Bohtvaroh

От того, что байт-код транслируется машинный, они перестают быть прослойками, или что?

Bohtvaroh *** (09.02.2010 16:20:16)
[#] Ответ на: комментарий от los_nikos 09.02.2010 15:30:14  
a3

> Пока весь основной софт который делается для Mono и около Mono делает сама Novell, поэтому Mono - лучшее что есть только для Novell и Microsoft, но никак не Gnome.

За это, во-первых, скажите спасибо товарищу Штольману, во-вторых, а какой новый серьезный софт в линупсе появился? Все старье и тянется еще со времен мамонтов. И тем не менее, то тут, то там всплывает очередная моноподелка.

> азве сабж не бОльший "костыль вокруг Си", чем D, Java или Perl? :)

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

a3 * (09.02.2010 16:21:53)
[#] Ответ на: комментарий от Bohtvaroh 09.02.2010 16:20:16  
wfrr

Перестают, или D у нас тожа уже прослойка. А может QT?

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

wfrr **# (09.02.2010 16:27:18)
[#] Ответ на: комментарий от KRoN73 09.02.2010 16:20:02  
wfrr

Надстройка, читать костыль-подпорка, случайно оказавшийся сверху.

wfrr **# (09.02.2010 16:27:56)
[#] Ответ на: комментарий от lester 09.02.2010 14:35:19  
boo32

>и эти люди говорят про "уродства"...

не думаю, что уродство си++ для кого-то является секретом. это действительно мощный инструмент, обросший кучей востребованных в производстве ПО свойств. однако обрастал он этими свойствами уж больно эволюционно и гетерогенно, что, опять же, вытекает из его массовости и востребованности в широком спектре применений. использую его, и, безусловно, буду вынужден использовать ещё долго, ибо замены ему во многих областях не предвидится. но от этого он не становится менее уродливым. и я был бы рад, заменив его хотя бы в области десктопных гуи-поделок с парой кнопочек на морде. иногда вместо бульдозера удобнее воспользоваться самокатом.

boo32 * (09.02.2010 16:53:00)
[#] Ответ на: комментарий от a3 09.02.2010 16:21:53  
los_nikos

> какой новый серьезный софт в линупсе появился?

по крайней мере мне теперь не нужно загружать Windows, а то что я вижу из виртуалки в Windows7 совсем ни о чём, хоть в какой варианте, вплоть до Максимальной. Да, MonoDevelop там можно запустить, но Banshee ещё не работает, только на MacOS X, т.е. смысл в кросскомпиляции теряется когда где-то чего-то не работает.

los_nikos ***** (09.02.2010 17:03:28)
[#] Ответ на: комментарий от Yurand 09.02.2010 13:59:38  

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

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

snizovtsev ** (09.02.2010 17:14:36)
[#] Ответ на: комментарий от boo32 09.02.2010 16:53:00  
Waterlaz

>ибо замены ему во многих областях не предвидится.

Да почти везде есть замена. ** слово почти поставлено лишь в целях защитить себя от будущих нападок со стороны плюсофилов.

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

Вот для этого уже есть миллион на порядок лучших альтернатив, чем С++.

Waterlaz ** (09.02.2010 17:17:31)
[#] Ответ на: комментарий от boo32 09.02.2010 16:53:00  
Sun-ch

>не думаю, что уродство си++ для кого-то является секретом. это действительно мощный инструмент, обросший кучей востребованных в производстве ПО свойств.

Сегодня как раз прочел по теме:

Бьярн Страуструп - "Дизайн и эволюция языка С++" ==================> "Как я родил ёжика"

Андрей Александреску - "Современное проектирование на языке С++" ==================> "Как я трахнул ёжика"

Sun-ch # (09.02.2010 17:18:57)
[#] Ответ на: комментарий от wfrr 09.02.2010 16:27:18  
mkfifo

> А может QT?

ну вот и Квик Тайм вспомнили :-)

mkfifo * (09.02.2010 17:21:39)
[#] Ответ на: комментарий от Sun-ch 09.02.2010 17:18:57  

собаки лают ;)

lester **** (09.02.2010 17:25:24)
[#]  

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

В качестве примера приведу 2 нетривиальных момента, на которые я натолкнулся.

1. Хотел реализовать GtkMenuPositionFunc как лямбда функцию. Оказалось, что лямбда-функции в Vala не поддерживают "ref" и "out" параметры, который там были нужны. Баг уже висел в багзилле, даже патч предлагался, но там написали, что для этого лучше изменять синтаксис, далее прогресса нет.

2. Писал свой GtkCellRenderer. Там в функции get_size описаны out параметры, но по документации Gtk они могут быть также NULL. Но как сделать проверку на NULL в Vala, чтобы программа не падала? Оказывается там есть как и в Си операция "&" для взятия адреса out-параметров (и не только), но об этом я узнал только в каком-то блоге, в описании языка нигде этого не видел.

snizovtsev ** (09.02.2010 17:25:56)
[#] Ответ на: комментарий от a3 09.02.2010 15:12:32  

> И лепят, и лепят вокруг этого бедного Си подпорки, подпорища, костыли, костылищщи... Поделие мертворожденно.

Ага, тогда сам си по твоей смещной логике - подпорка/костыль над машинным кодом...

Промежуточная трансляция в си -- хорошая практика я считаю:

1) Отпадает нужда писать собственные трансляторы в машинный код/линкеры - время, деньги, нервы

2) Си есть на всех платформах, он до жути оптимизирован

3) на gcc с его фронт-/бекендами свет клином не сошёлся, есть и другие компиляторы, кто-то может предпочитать другие...

А то что Вала закручена вокруг гтк это конечно плохо... Было бы неплохо, если бы она могла использовать любой тулкит

ubuntulover (09.02.2010 17:26:39)
[#] Ответ на: комментарий от ubuntulover 09.02.2010 17:26:39  

> А то что Вала закручена вокруг гтк это конечно плохо... Было бы неплохо, если бы она могла использовать любой тулкит

Вокруг Gtk она не закручена, она закручена вокруг Glib и GObject, благодаря чему получила кучу фич "нахаляву", без изобретения своего велосипеда.

Код по стандартам GObject хоть и на Си, но вполне себе объектно-ориентирован, просто для C++/Java/C# программистов он кажется страшным и непривычным. Vala транслирует привычный C# стиль кода в GObject, это основная его задача.

snizovtsev ** (09.02.2010 17:32:07)
[#] Ответ на: комментарий от lester 09.02.2010 17:25:24  
Sun-ch

По своему опыту могут сказать, что плюсы практически идеально подходят для целей обучения. На первом занятии объявляешь: "Кто не осилит Александреску - зачета не получит". 80% группы сдает с первого захода.

Sun-ch # (09.02.2010 17:34:38)
[#] Ответ на: комментарий от ubuntulover 09.02.2010 17:26:39  
KRoN73

>Ага, тогда сам си по твоей смещной логике - подпорка/костыль над машинным кодом...

Угу. А ещё есть такой костыль на Си, как OCaml :)

KRoN73 ***** (09.02.2010 18:22:03)

О Сервере - Правила форума
http://www.linux.org.ru/

Rambler's Top100 Рейтинг@Mail.ru