LINUX.ORG.RU

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

 ,


0

0

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

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

★★★

Проверено: Shaman007 ()
Ответ на: комментарий от ZveN

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

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

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

Lumi ★★★★★
()

Часть 3.

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

k0l0b0k ★★
()

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

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

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

Yurand
()

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

Sun-ch
()

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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


???

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

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

troorl ★★
()

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

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

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

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

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

mkfifo
()

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

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

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

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

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

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

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

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

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

Чем лучше?

Тем что не .NET

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Sun-ch
()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Sun-ch
()
Ответ на: комментарий от ubuntulover

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

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

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