LINUX.ORG.RU

Vala 0.1.7

 ,


0

0

Тихо и незаметно вышла новая версия языка, похожего по синтаксису на C#, но не использующего CLR. Вместо этого компилятор генерирует код на C с использованием объектной модели GLib, который затем компилируется как обычно.

В новой версии:

  • Улучшен синтаксис свойств
  • Обнаружение отсутствующих выражений return и break, а также недоступных фрагментов кода
  • Улучшена поддержка указателей
  • Добавлена поддержка WebKit, JSON-GLib, goocanvas, hildon-fm-2, taglib, libusb, и bzip2

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

Хорош GObject, но только когда его не видно. Когда приходится склепать собственный GObject (будь то GtkWidget или ещё что-нибудь), то лучше удавиться. Пусть лучше все возможности ООП в C ограничатся, как и в старые времена, указателями на структуры. Имхо, GObject - костыль страшный...

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

>может это размер бинарника на выходе ? Тоже не понял.

<offtopic> Юзерпик зачотный! </offtopic>

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

>Когда приходится склепать собственный GObject (будь то GtkWidget или ещё что-нибудь), то лучше удавиться.

для этого ещё до Vala существовали генераторы

geek ★★★
()

> Тихо и незаметнА...

Deleted
()

вот я ж пытался <ul><li>.... использовать, так оно ругалось на некорректный html...

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

>для этого ещё до Vala существовали генераторы

А может лучше выбирать шапку по Сеньке^W^W язык по потребностям? Нет, я не агитирую ни за C++ (неприятен он мне), ни за Java с C# (языки м.б. и хорошие, а вот виртуальные машины - зло), ни за... Да не знаю я даже, что предложить... D может сгодится?

AsphyX ★★★
()

Мде...

По уровню траха с написанием exception-safe кода этот язык должен быть где-то близко к delphi и vb. Так и представляю

try{
// N times
var = new blabla();
var.d = new blablablabla();
}
finally{
// N times
var.d.free();
var.free();
}

C++ и то будет попроще в этом вопросе. Течь программы на этом языке должны куда сильнее чем pure C-шные (в силу несовершенства людей).

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

>я правильно понял,что mono жрет меньше всех памяти? O.o

Это больше похоже на размер бинарника. Они у моно действительно мелкие.

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

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


The method of memory measurement is pretty simple : 
time --format=%M

    %M :    Maximum resident set  size  of  the  process
            during its lifetime, in Kilobytes.

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

блин, форматирование на ЛОРе хуже чем в каком-нибудь phpbb :(( почему бы уже не сделать отдельного окружения для preformated text??

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

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

Displacer ★★
()

Память не меряли: due to the time command bug, these results are not available.

Size вроде размер бинарника.

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

Размер бинарника практически вообще ни о чем не говорит. Разве что о том, насколько быстро он будет скачан из интернета :)

Displacer ★★
()

на http://shootout.alioth.debian.org size - это размер исходников (не может же моно жрать памяти меньше plainC). и еще нет очень показательного теста startup.

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

>А может лучше выбирать шапку по Сеньке^W^W язык по потребностям?

А Си и выбран по потребностям.

>D может сгодится?

не сгодится.

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

>Так ли это?

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

>А зачем тогда костыли городить пришлось?

в каком месте костыли?

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

>Это чудо из нативных DLL функции вызывать умеет?

чего? O.o

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

Как в бенчмарке "nsieve" Vala выиграл у Plain C?

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

>>А может лучше выбирать шапку по Сеньке^W^W язык по потребностям?

>А Си и выбран по потребностям.

>>D может сгодится?

>не сгодится.

Тогда паскаль решит твои проблемы. Ну или оберон с модулой 2.

:)

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

>Тогда паскаль решит твои проблемы. Ну или оберон с модулой 2.

ещё один блеснул незнанием =)

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

>в каком месте костыли?

А в том, что попытка реализовать на C всё то, что ты перечислил выше, приводит к появлению совершенно нечитаемого кода, состоящего из нагромождения макросов. Одна только проверка типов в рантайме по символьным именам классов чего стоит.

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

сишный код, генерируемый Vala, читать человеку и не надо. Компилер промежуточные C-файлы по дефолту вообще не оставляет.

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

>А в том, что попытка реализовать на C всё то, что ты перечислил выше, приводит к появлению совершенно нечитаемого кода

кроме как на С это вообще никак не реализуется

>состоящего из нагромождения макросов.

"ниасилил многабукав" ?

>Одна только проверка типов в рантайме по символьным именам классов чего стоит.

проверка типов проводится по GType, который есть банальный int.

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

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

Да сто ты говорис

> "ниасилил многабукав" ? Брезгую батенька. Быдлокод писать рука не поднимается.

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

>Течь программы на этом языке должны куда сильнее чем pure C-шные (в силу несовершенства людей).

там gc с подсчетом ссылок.

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

> C++ и то будет попроще в этом вопросе.

Чем?

> Течь программы на этом языке должны куда сильнее чем pure C-шные (в силу несовершенства людей).

В Vala сборщик мусора есть

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

>сишный код, генерируемый Vala, читать человеку и не надо.

А я не Vala ругаю :)

AsphyX ★★★
()

мне одному показалось, что C# реализация Mono слишком тормозна и ребята, в тихую, пишут транслятор в C (Vala)?

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

>В Vala сборщик мусора есть

так вот куда деваются мозги gtk'шников!

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

>кроме как на С это вообще никак не реализуется

Про D я упоминал...

>"ниасилил многабукав" ?

Асилил. Но зачем?

>проверка типов проводится по GType, который есть банальный int.

Недокурил, значит. Согдасен. Тогда продолжу: не int, а gint, который всё равно всегда int. Равно как gpointer всегда void*. А это зачем?

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

>По-вашему всем создателям языков, придуманных после Си стоило просто "С серьезней покурить"?

Немного не это имел в виду. Просто считаю,что перевод одного высокоуровнего языка на другой(пусть и не столь наделенного всеми прелестями высокоуровнего программирования) несколько странен. Возможно сам язык и замечательный, мне не нравиться момент генерации кода на С, я не пойму что этим можно достичь?!

inhibitor
()

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

остаются только хитромудрые случаи, когда скорость для нас критична. тут, ИМХО, надежней сразу на C/C++ писать дабы быть увереным что если уж оно течет и тормозит, то по твоей вине, а не криворукости авторов Vala.

з.ы. для ембедед систем думаю mono тоже можно допилить. есть ведь .NET CF

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

>Про D я упоминал...

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

как альтернатива кстати, мог бы подойти ObjectiveC, но там объектная модель не подходила

>Асилил. Но зачем?

хотя бы для того, чтобы понять, что есть макросы, которые эту кучу сокращают до двух строчек, емнип

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

>В Vala сборщик мусора есть

нету там сборщика мусора =)

Автоматическое освобождение памяти есть в Glib/Gobject, основывается на подсчете референсов на экземпляр. Единственное, что Vala может делать - правильно расставлять по коду ref/unref

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

> Возможно сам язык и замечательный, мне не нравиться момент генерации кода на С, я не пойму что этим можно достичь?!

Получение библиотек с сишным интерфейсом

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

> нету там сборщика мусора =)

Да, действительно :)

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

> думаю mono тоже можно допилить.

как его не пили, а батарею он всё равно будет больше кушать.

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