LINUX.ORG.RU

Vala 0.0.8

 


0

0

22 марта вышла новая версия языка программирования Vala 0.0.8. Давней проблемой програмистов GNOME являлась невозможность работы с интерфейсами среды напрямую и использования для доступа к интерфейсам таких прослоек как языки программирования C и ему подобных. Теперь же Vala решает эту проблему позволяя програмистам работать напрямую на уровне glib-gobject

Из возможностей языка:

  • Интерфейсы
  • Свойства
  • Сигналы
  • For each конструкции
  • Лямбда выражения
  • Типы переменных
  • NN типы
  • Обработка exceptions
  • Менеджмент памяти
  • Плагины для типов

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

  • anonymous

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

    Ответ на: комментарий от argin

    > Ну, тогда говорили, что объем прог на С может достигать до 100 000 строк, а вот уже если хочешь осилить более крупный проект, то надо написать код на С++.

    Скажите, а как вы считаете эти строки? С каментами, с пустыми строками аль как?

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

    Вообще по опыту большой проект на C поддерживать и отлаживать гораздо проще чем на C++. Для того чтобы поддерживать объектный код нужно иметь план развития на 20 лет вперед, ни шагу влева, ни шагу вправа, отличную документацию по взаимодействию подсистем и.т.п. Естественно если использовать GObject вылезают те же проблеммы, что и с плюсами. Сверхвысокие языки для написания большого продукта с длительной поддержкой не подходят. Их удел побыстрому наклепать наколеночный биллинг и.т.п

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

    > В моем детстве С считался языком высокого уровня.

    Это потому что тебя в детстве пичкали С, а правду о питоне, перле или там калме коварно скрывали...

    > Неужели незаменто для меня все так изменилось с тех пор ?

    Да, вылазь из танка.

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

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

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

    > баяне уж никто по вечерам не играет

    Играют - в клубах. Самодеятельность нонче цветет во всех жанрах, от фолка до гринда....

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

    > http://gtk-server.org/intro.html

    Кстати, зря. Неплохая фишка в ряде ситуаций. Я вот хотел из bash скрипта сделать GUI уведомление, но gtk-server даже в extras у fedora нет. Делать лишний пакет не хотелось. Пришлось питон "асилить". Тоже вариант, но теперь лишняя зависимость.

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

    > Дык.... А ведь совсем недавно еще были истошные вопли гномоводов о том, как это круто - все на С. :)

    Вы не понимаете. На C не круто, на C - универсально. Их Gtk можно прикрутить к чему угодно. А Qt только к тому, что понимает C++ объекты.

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

    > А где их купить сейчас, кстати?

    На любой барахолке. :)

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

    > Я вот хотел из bash скрипта сделать GUI уведомление

    А что, xmessage злобный Ктулху сожрал в дистрибутиве?

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

    > Вы не понимаете. На C не круто, на C - универсально. Их Gtk можно прикрутить к чему угодно. А Qt только к тому, что понимает C++ объекты.

    Бред. С++ прикручивается не хуже С, а в некоторых случаях и лучше.

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

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

    Вообще, есть стандартные метрики. http://www.google.com/search?rls=en&q=sloc&ie=utf-8&oe=utf-8

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

    >В тельниках не ходят и на баяне уж никто по вечерам не играет. И беломору нынче не достать.

    Неправда. Правда. Неправда :)

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

    > В твоем (да и в моем) детстве объем прог был несколько меньше, мягко говоря...

    Уровень языка не зависит от объема прог :) Он зависит от числа строк на единицу функциональности (или както так -- типа скока надо написать, чтобы получить одно и тоже на разных языках). К тому же объемы могут быть разные -- это зависит то того кто как пишет. Си всего лишь следующий по уровню после ассемблера (возможно между ними еще чтото есть, но непомню такого). Гдето видел схему "уровни языков программирования". Из существующих языков у Prolog-а выше остальных. Потом помниться Python шел уровнем ниже или типа того. Возможно, сейчас равновесие изменилось в какую-то сторону, но Prolog все равно врят ли обошли, а Си полюбому остался уровнем выше асма (хотя я пишу на сях и на прологе, меня все устраивает).

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

    >> Ну, тогда говорили, что объем прог на С может достигать до 100 000 строк, а вот уже если хочешь осилить более крупный проект, то надо написать код на С++.

    >Скажите, а как вы считаете эти строки? С каментами, с пустыми строками аль как?

    Достаточно почитать литературу теоретиков ООП, и там можно найти эти цифры. А потом можно задать свой вопрос авторам этих работ. А они если захотят, ответят.

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

    >> В моем детстве С считался языком высокого уровня.

    >Это потому что тебя в детстве пичкали С, а правду о питоне, перле или там калме коварно скрывали...

    Слово "пичкали" как то режет слух. Оно явно не к месту употреблено, учитывая, что ни перла, не питона тогда не было.

    >> Неужели незаменто для меня все так изменилось с тех пор ?

    >Да, вылазь из танка.

    Как ты думаешь, насколько твое мнение авторитетно в этом вопросе ? Если у тебя еще сохранились какие то сомнения на сей счет, напомню, рассказывали как то на ЛОР-е что Кнут не высказывал однозначной поддержки ни каким языкам программирования, говоря, что каждой проблеме своей инструмент.

    Если исходить из твоего способа аргументации, то для тебя авторитетно все же Хакер-HOWTO. А там написанно, что без знания С никакой хакер, не тру-хакир.

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

    > А вот советские треники с оттянутыми коленками уже не модно
    >Не модно, зато куда как практичнее под брюками носить. Забугорные кальсоны - издевательство над яйцами. :)

    Да, уж.

    Андрюха, ты наверное совсем молоденьким еще женился?

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

    Не приведи господи увидеть.

    Гм. Казалось бы, причём тут гном?

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

    > Не модно, зато куда как практичнее под брюками носить.

    Эээ.. А "просто джинсы" на все случаи жизни не рулят (ну летом белые брюки)? Этой зимой я вообще в тонюсеньких "осенне-летних" джинсах проходил, ну когда зимы совсем холодные, можно потолще надевать, конечно.

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

    > А что, xmessage злобный Ктулху сожрал в дистрибутиве?

    Получается, что да. Кстати, я посмотрел скрины - ужасно выглядит. :)

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

    > Бред. С++ прикручивается не хуже С, а в некоторых случаях и лучше.

    Да ну? Возьмём к примеру Perl. Не как самоцель, а как пример другого языка. При этом Perl 5 написан на C, собирается gcc. По этому про вариант биндинга к Perl 6 (даже не столько к Perl 6, сколько к любому языку на платформе Parrot, которая вместе с Perl 6 будет самодостаточной, т.е. сама себя компилить) я вобще умалчиваю.

    И так. Ищем биндинги Gtk+ и Qt. Находим:

    http://gtk2-perl.sourceforge.net/

    http://perlqt.sourceforge.net/

    Смотрим внимательно. Поскольку Gtk+ написан на C, то здесь всё просто. gtk2-perl просто создаёт объектную обёртку вокруг вызовов Gtk+.

    Теперь смотрим на Qt. С Qt уже такой номер не проходжит. Как же он реализован? А очень просто. Народ воспользовался специальной обёрткой Smoke (http://developer.kde.org/language-bindings/smoke/index.html), которая позволила впихнуть объекты в неподдерживающий их язык. Точнее, не поддерживающий по вызовам. Потому что потом, в Perl строится объектный каркас, вокруг уже Smoke кода. Это проще? На ЛОРе это называется - костыль.

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

    > Слово "пичкали" как то режет слух. Оно явно не к месту употреблено, учитывая, что ни перла, не питона тогда не было.

    Я вот с огорчением узнал, что питон для дос уже был к оому моменту, коглда я мог бы его изучать, а для никсов еще ранее. Перл появился в 1987, Скажем Caml - в 1985. Если это тоже мало, можно всегда вспомнить просто о Лиспе ;) Sicp вот еще написали в 1984. Если вам параллельно С рассказывали что-то из более высоких материй, то слова "пичкали" я конечно зря сказал.

    > Как ты думаешь, насколько твое мнение авторитетно в этом вопросе ? Меня больше инетерсует его верность. Кстати, язык С даже лет 20 ть назад часто называли "языковом высокого низкого уровня" или как-то так. Язык высокого уровня без типа данных "массив"?

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

    Да, как известно из некотрых опытов, перемножение матриц все еще рулит на ассемблере. Это как-то меняет классификацию языков? Я предложил все писать на яве и питоне? Никак нет.

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

    (форматирование съехало при первом ответе)

    > Как ты думаешь, насколько твое мнение авторитетно в этом вопросе ?

    Меня больше инетерсует его верность. Кстати, язык С даже лет 20-ть назад часто называли "языком высокого низкого уровня" или как-то так. Язык высокого уровня без типа данных "массив"? Хмм...

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

    anonymous, inoremap: Спасибо. Буду иметь ввиду. Особенно zenity. Хотя пока и с python неплохо вышло. Благо, в FC практически обязательным (при GUI установке) является python и python-gtk. :)

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

    Есть класс людей, которые не понимают шуток. Ты из таких ? Ты всегда начинаешь грубить, встретить шутки ? Или только когда их не понимаешь ? А в случае, если ты грубишь , когда не понимаешь, бывают ли шутки, которые ты понимаешь ? И если такие шутки бывают, случайно это не твои ли шутки ?

    Как то ломает всерьез обсуждать то, что было сказанно в шутку.

    Ненавижу юмористов и зануд

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

    >Играют - в клубах. Самодеятельность нонче цветет во всех жанрах, от фолка до гринда....

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

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

    >А они если захотят, ответят.

    Я кончено не автор, но ответить могу. Каментов пустых строк, скобочек и даже обявлений интерфейсов метрика KLOC не учитывает.

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

    > Как то ломает всерьез обсуждать то, что было сказанно в шутку. Это была шутка? Хмм, извини, видимо я слишком много видел людей, которые это говорил *всерьез*.

    > Ненавижу юмористов и зануд А в от в этом я ничем почему не могу (в любом случае, не хочу).

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

    > Теперь смотрим на Qt. С Qt уже такой номер не проходжит. Как же он реализован? А очень просто. Народ воспользовался специальной обёрткой Smoke (http://developer.kde.org/language-bindings/smoke/index.html), которая позволила впихнуть объекты в неподдерживающий их язык. Точнее, не поддерживающий по вызовам. Потому что потом, в Perl строится объектный каркас, вокруг уже Smoke кода. Это проще? На ЛОРе это называется - костыль.

    А прикручивание к другим языками и не обязано быть простым делом. Библиотека в первую очередь должна быть удобной для ее основного использования, а биндиги - это уже дело десятое. Qt именно так и устроена с позиций здравого смысла, а в гтк все шиворот навыворот прикручивается удобно, а программировать без слез и костылей нельзя.

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

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

    Дело не в простоте. Дело в том, что здесь появляется лишняя прослойка. Причём, runtime. Vala - designtime.

    > Библиотека в первую очередь должна быть удобной для ее основного использования

    Я не отрицаю удобства использования Qt в C++. Но мир не ограничивается Qt. А за его пределами может остро встать вопрос о накладных расходах и сложностях дистрибьюции, т.к. программы бывают и кроссплатформенными.

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

    >> Как то ломает всерьез обсуждать то, что было сказанно в шутку. >Это была шутка? Хмм, извини, видимо я слишком много видел людей, которые это говорил *всерьез*.

    Ох ну и тяжело же с тобой ! Часть была шуткой, часть была сказанна шутливым тоном но всерьез.

    Я вполне готов предположить, что есть много ситуаций где питон может быть полезен или даже не заменим.

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

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

    >Я не отрицаю удобства использования Qt в C++. Но мир не ограничивается Qt. А за его пределами может остро встать вопрос о накладных расходах и сложностях дистрибьюции, т.к. программы бывают и кроссплатформенными.

    Хе-хе, интересно. Единственная кросплатформенная тулза на Qt, которой я пользуюсь, написана на питоне. К чему бы это? :)

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

    > Андрюха, ты наверное совсем молоденьким еще женился?

    В 29 лет. Не таким уж и молоденьким. А что, сила мужская покинула Саныча и он предпочитает резиновые плавки на меху, чтобы в тепле и песок не сыпался? :)

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

    > Этой зимой я вообще в тонюсеньких "осенне-летних" джинсах проходил

    Детей ещё планируешь? А о простате подумал? Эх, молодость, мода и всё такое... :)

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

    > Получается, что да. Кстати, я посмотрел скрины - ужасно выглядит. :)

    Для ценителей прекрасного есть kmessage. Пусть гномовцы расскажут - наврняка есть что-то подобное и у них. Если нет - то это полный провал.

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

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

    См. выше по треду. Уже рассказали. :)

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

    P.S. Я просто не упомянул, что программа, которую контролирует скрипт, которому потребовалось своё GUI написана на Gtk. Соответственно, мне казалось неоправданным привзяывать его к чему-то отличному от Gtk. Зачем лишние зависимости? Так что Gnome vs. KDE здесь непричём. :)

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

    > Хе-хе, интересно. Единственная кросплатформенная тулза на Qt, которой я пользуюсь, написана на питоне. К чему бы это? :)

    К тому, что вы не в теме. Пользуетесь вы, потому что эти биндинги сделаны. Как они сделаны под Perl. Как они были (во время существования) сделаны для Kylix. И для многих других, не совместимых по вызовам с C++ языков.

    В случае python, написанного так же на C, проблема биндингов так же актуальна. Для её решения применяются генераторы врапперов. SWIG, SIP... Рекомендую ознакомится с презентацией: http://www.python.org/pycon/dc2004/papers/63/Python-Binding-Talk.pdf

    Что, собственно, подтверждает мои слова. Беда C++ в том, что для универсального использования плодов труда на нём, народ вынужден заниматься костыле- и велисипедостроительством.

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

    > Что, собственно, подтверждает мои слова. Беда C++ в том, что для универсального использования плодов труда на нём, народ вынужден заниматься костыле- и велисипедостроительством.

    Это достаточно небольшая плата за удобства и продуктивность. Писать на голом С слишком непродуктивно.

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

    > Это достаточно небольшая плата за удобства и продуктивность. Писать на голом С слишком непродуктивно.

    Для этого вон и Vala. Прослойка остаётся на уровне исходников, не видна программисту и исчезает после компиляции.

    А более полно, так ваши слова можно на Delphi и VB экстраполировать. Но попробуйте произнести их здесь. Заклюютс... ;-)

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

    >Хе-хе, интересно. Единственная кросплатформенная тулза на Qt, которой я >пользуюсь, написана на питоне. К чему бы это? :)

    ты хакир стопудова .

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

    > Для этого вон и Vala. Прослойка остаётся на уровне исходников, не видна программисту и исчезает после компиляции.

    Имхо, сишные программеры - законченные извращенцы. Мысль один раз заюзать генератор враперов для биндинга С++ либ или написать его руками вызывает у них протест. И в то же время люди соглашаются на использование таких костылей типа vala в постоянной работе. Ужос. В моей светлой голове такая извращенная логика не укладывается.

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

    > Мысль один раз заюзать генератор враперов для биндинга С++ либ или написать его руками вызывает у них протест.

    Потому что "один раз заюзать генератор врапперов" - это вечно юзать враппер при использовании программы. С сопутствующими.

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

    > Потому что "один раз заюзать генератор врапперов" - это вечно юзать враппер при использовании программы. С сопутствующими.

    Биндинг делается только один раз при выходе новой версии. Для такого случая можно заюзать, что угодно или даже руками написать. Гномовцы же предлагают этот костыль на каждый день. Как, кстати, предлагается отлаживатся в этом чудо языке? по сгенерированным сырцам?

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

    > Биндинг делается только один раз при выходе новой версии.

    Нифига вы не поняли. Через эти биндинги вызовы будут проходить в runtime.

    > Как, кстати, предлагается отлаживатся в этом чудо языке?

    Х.З. я не смотрел. Но, вероятно, что-то да придумают.

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

    > Нифига вы не поняли. Через эти биндинги вызовы будут проходить в runtime.
    
    Копеечный оверхед. Об этом даже говорить смешно.
    
    > Х.З. я не смотрел. Но, вероятно, что-то да придумают.
    
    Ага, очередной костыль. Кстати, я посмотрел на код который вала генерит:
    
    1) все обьекты создаются функцией g_object_new
    2) в конце блока происходит вот такая вот сборка мусора на основе подсчета ссылок:
       (parser == NULL ? NULL : (parser = (g_object_unref (parser), NULL)))
    
    Работать такая схема будет однозначно медленнее чем помещение обьекта на стек, и даже медленнее сборки мусора. Спрашивается за что боролись-то? если в итоге получим костыль работающий медленнее джавы и имеющий проблемы с отладкой.
    
    

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