Видео ролики бесплатно онлайн

Смотреть зрелые видео

Официальный сайт jhealth 24/7/365

Смотреть видео бесплатно

23.01.10 12:24 guineapig

CodingО языке Vala

Данный блог я завожу для того чтобы заинтересованные люди в языке программирования Vala (Его опишу чуть ниже) могли учиться на моём, пусть даже не обширном пока что, опыте.
О языке Vala я узнал случайно, натолкнувшись на ссылку: http://live.gnome.org/Vala. В чём же заключается на мой взгляд "прелесть" данного языке?!
Этот язык привлёк меня сразу несколькими особенностями:
1) Это язык программирования для Линукса - разработанный специально для Линукса (Ну это не исключает возможность его использования на других платформах)
2) Этот язык можно отнести к разряду "Высочайшие" языки программирования, как я их иногда называю. Под "Высочайшими языками программирования" я подразумеваю языки который обладают всем потенциалом ООП. То есть Java, C# и т.д.
3) Синтаксис этого языка практически полностью идентичен синтаксису C#.
4) Программа написанная на этом языке не компилируется в промежуточный код, который требует своей собственной виртуальной машины, код написанный на этом языке транслируется в C++ и тут же собирается в Исполняемый код.
5) Язык ориентирован на работу с GTK+, GDK и т.д. библиотеками.

Имеется пару минусов конечно. Например нет пока ещё продуманной удобной IDE, хотя она уже разрабатывается, и находится на стадии "текстовый редактор с кнопочками компилировать/выполнить". Когда имеется какая-то ошибка - отладка идёт чуть более сложным образом, потому как если вы допустили совсем глупую ошибку, он может начать лезть в C-шный код, и выдавать вам ошибки сборки C-шного кода. Это чуточку неудобно.
Однако, благодаря этому языку, строить теперь - простые, быстрые, удобные программы с графикой стало неимоверно просто. Правда нужно понимать что если ты проектируешь на java используя классы которые идут в комплекте с JDK, то в Vala при установке этого языка ставятся только основные классы работы с графикой, и скорее всего для работы с какими-то специфическими библиотеками типа Alsa, libnotify и т.д. вам будет необходимо поставить их исходные коды (Но всё это не создаёт сложностей, ибо все они имеются в стандартных репозиториях).

Теперь о IDE
На данный момент я знаю о нескольких видах IDE для Vala.
1) Val(a)IDE (valide). - Этим пользуюсь Я.
2) Дополнение к Eclipse.
3) Дополнение для Gedit.
4) Дополнение для Anjuta.
5) И привязка Vala к MonoDevelop.

Я пользуюсь Valide, потому что он выглядит симпатично + ничего лишнего, удобные кнопки Compile и Выполнить.
Но у него есть неприятная вещь, нету автоподстановки, то есть когда я хочу посмотреть какие методы и свойства имеются у того или иного объекта, мне приходится лезть на, кстати весьма полезный, ресурс http://www.valadoc.org/.

Полезные ссылки
Официальная страничка разработчиков: http://live.gnome.org/Vala
Примеры: http://live.gnome.org/Vala/GTKSample
Очень полезная документация: http://www.valadoc.org/
Кому это нужно, разработка на Vala под Windows: http://live.gnome.org/Vala/ValaOnWindows
Крупное описание для профессионалов: http://rodney.id.au/dev/vala/hackers.html

И под конец этого сообщения хотел бы сказать что помимо того что можно разрабатывать под Linux Desktop, с помощью Vala можно разрабатывать и для Linux Mobile (Maemo). Специально для этого там имеются необходимые библиотеки (например Hildon).


Теги:

commonD 23.01.10 13:48 # +0
6) emacs http://live.gnome.org/Vala/Emacs
7) vim http://live.gnome.org/Vala/Vim.
guineapig 23.01.10 15:03 # +0
Да, верно, спасибо.
divius 23.01.10 16:49 # +0
А ещё его, вроде, Geany переваривает
digiwhite 23.01.10 13:58 # +1
Не поленился сходить на официяльный сайт гнома. Итак:
Программа написанная на этом языке не компилируется в промежуточный код, который требует своей собственной виртуальной машины, код написанный на этом языке транслируется в C++ и тут же собирается в Исполняемый код.

Транслируется он все же в язык C.
http://live.gnome.org/Vala#Why_Vala.3F
valac produces C source and header files from Vala source files as if you've written your library or application directly in C.

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

Т.е. я хочу сказать, что про язык C++ здесь речи не идет вообще.
cyrus 23.01.10 14:29 # +0
вообще непонятно. Как они код, использующий классы и все плюшки ОО, переписывают в С. Тогда надо уточнить либу, которая всё это организовывает - я так понимаю это GObject какой-то.
guineapig 23.01.10 15:05 # +0
Основным прородителем всего в Vala является по моему как раз именно GObject.
guineapig 23.01.10 14:42 # +-2
Ну, если тут все умнее меня, то я могу забить на описание написания программ с помощью Vala.
А теперь я вас просвещу по поводу языка "C" !
Язык "C++" - является языком "C", дополненным структурами и Объектами!

И иногда вместо того чтобы говорить C++ говорят либо C, либо C/C++.
Я надеюсь я доступно разъяснил что ошибки по данному вопросу у меня в статье нет!
digiwhite 23.01.10 15:06 # +6
Ой :) Что же вы так реагируете то. Я указал вам на явные расхождения с оригиналом и даже привел цитату, где об этом написано.

А теперь я вас просвещу по поводу языка "C" !
Язык "C++" - является языком "C", дополненным структурами и Объектами!

Спасибо, но я на языке С пишу достаточно давно, так что ко что все же знаю.
Язык С++ хоть и является подмножеством языка С, тем не менее, он другой и требует абсолютного другого подхода (отличия синтаксические, что не так важно, но отличия в подходе к самой разработке ПО на данном языке, что гораздо важнее). Что касается структур - структуры есть и в C.


И иногда вместо того чтобы говорить C++ говорят либо C, либо C/C++.

А вы ведь думаете своей головой, а не за вас думают другие?
lockie 23.01.10 19:03 # +0
> Язык С++ хоть и является подмножеством языка С
Вообще, если подумать, наоборот. Сишный код плюсовый компилятор поймёт, а сишный компилятор плюсовый код - почти никогда.
digiwhite 23.01.10 19:31 # +0
Никаких наоборот. В принципе Совместимость C++ с C это только задумка Страуструпа, чтобы перетащить разработчиков с С в тот момент. А то, что там понимает компилятор - это совсем другая тема, т.к. это инструмент. А при желании компилятор можно написать какой угодно.
cyrus 23.01.10 19:49 # +1
"Язык программирования С++"(специальное издание) Бьерн Страуструп, 2007 г. страница 43
С++ создан на основе языка программирования С, и, за небольшим исключением, С остаётся подмножеством С++

ЧЯДНТ?
digiwhite 23.01.10 19:53 # +2
Да я ошибся. Конечно же надмножеством.
booley 24.01.10 23:45 # +0
Надмозгом?
digiwhite 24.01.10 23:55 # +0
Надмозгом?

Толсто.
digiwhite 23.01.10 15:07 # +3
Ну, если тут все умнее меня, то я могу забить на описание написания программ с помощью Vala.

Ни в коем случае, хотелось чтобы вы как раз продолжили. Лично мне интересно. Просто воспринимайте критику более адекватно.
roolebo 23.01.10 14:09 # +0
Так вот же она - замена Mono :-)

А сложно ли сделать биндинги к другим библиотекам?
digiwhite 23.01.10 14:19 # +0
Не совсем конечно. Моно (а вернее .NET) - это скорее мощный набор готовых классов, упрощающих, ускоряющих и т.п. разработку. Тут этого вроде как не особо. Хотя можно использовать готовые либы на C.
digiwhite 23.01.10 14:21 # +0
Этот язык можно отнести к разряду "Высочайшие" языки программирования, как я их иногда называю. Под "Высочайшими языками программирования" я подразумеваю языки который обладают всем потенциалом ООП. То есть Java, C# и т.д.


Я бы туда скорее отнес какой-нибудь Ruby (Ruby on Rails-узко-заточен, но ИМХО настолько высок, что мозг себе сломаешь, если до этого n лет писал только на C или C++) или Python. Ну а вообще смысл в том, что все зависит от задачи ;).
cyrus 23.01.10 14:28 # +0
они в том числе и скриптовые и вообще много чего поддерживают. Просто канонически, именно главными представителями ООП считаются Java и C#
digiwhite 23.01.10 14:23 # +0
Вы могли бы рассказать дополнительно о специфике языка? Какие-то его фишки. Да например хотя бы о том, есть ли у него сборка мусора автоматическая? (Т.е. я понимаю что в низу все равно будет C, но наверняка там генерится куча "вспомогательного" кода - типа как Q_OBJECT в Qt со всеми вытекающими).
guineapig 23.01.10 15:02 # +0
Про сборку мусора - пока сказать не могу, я недавно начал его изучать.
Думаю там нет автоматической сборки мусора.
Хотя, я посмотрел на получаемый сишный код, и мне показалось что всётаки сборка мусора происходит!
digiwhite 23.01.10 15:09 # +0
Воот :) Раз изучаете, то уточните и этот вопрос. Буду благодарен за это :). Но гадание - это не лучший метод познания.
m0nhawk 23.01.10 14:29 # +0
Я так понял тут
транслируется в C++ и

имеется ввиду всё-таки Си?
digiwhite 23.01.10 14:30 # +-1
Да. Нету никакого С++. Отсюда в конце все собирает gcc :).
guineapig 23.01.10 14:44 # +-1
У вас у всех плохое представление о C языке! ПМСМ
chemikadze 23.01.10 14:57 # +3
Всетаки не стоит смешивать C и C++. Выхлопом valac является программа на _чистом_ Си. Да, языки имеют много общего, но развивались разными путями что привело к расхождениям в тонкостях.
Чуть конкрутнее тут.
digiwhite 23.01.10 15:08 # +0
Лично у меня о нем хорошее представление. Так же как и о С++.
guineapig 23.01.10 14:55 # +-1
Так же вполне очевидно что код:
static void value_main_init (GValue* value) {
value->data[0].v_pointer = NULL;
}

Присущ именно C++
Потому как в нём используется Объектная модель.
chemikadze 23.01.10 15:07 # +3
Какие в GValue объекты?
1
2
typedef struct {
} GValue;
Все костыли GLib типа GObject - попытка притянуть за уши ООП в Си через структуры и прочие танцы с бубном. Поддержкой основных парадигм ООП средствами языка там и не пахнет.
digiwhite 23.01.10 15:10 # +1
GValue - обычная структура, к объектам не имеющая никакого отношения.

Хотя конечно если говорить в контексте С++, то да. Это объект, все члены которого видимы для всех.
guineapig 23.01.10 14:59 # +0
# man gcc

"gcc - GNU project C and C++ compiler"

Вполне очевидно что C++ так же с помощью GCC собирается!

roolebo 23.01.10 15:20 # +0
C++ собирается с помощью g++
cyrus 23.01.10 19:32 # +1
хватит минусовать его. Эксперты.
Вот почитайте лучше - http://linuxforum.ru/index.php?showtopic=62619&st=60 .
commonD 23.01.10 15:33 # +0
1
2
3
4
5
6
7
8
9
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
  cout << "HELLO" << endl;
  return 0;
}


$ gcc test.cpp
/tmp/ccOV90RM.o: In function `main':
test.cpp:(.text+0x1a): undefined reference to `std::cout'
test.cpp:(.text+0x1f): undefined reference to `std::basic_ostream >& std::operator<< >(std::basic_ostream >&, char const*)'
test.cpp:(.text+0x2a): undefined reference to `std::basic_ostream >& std::endl >(std::basic_ostream >&)'
test.cpp:(.text+0x30): undefined reference to `std::basic_ostream >::operator<<(std::basic_ostream >& (*)(std::basic_ostream >&))'
/tmp/ccOV90RM.o: In function `__static_initialization_and_destruction_0(int, int)':
test.cpp:(.text+0x62): undefined reference to `std::ios_base::Init::Init()'
test.cpp:(.text+0x6a): undefined reference to `std::ios_base::Init::~Init()'
/tmp/ccOV90RM.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: выполнение ld завершилось с кодом возврата 1
$ g++ test.cpp
$ ./a.out
HELLO
cyrus 23.01.10 19:33 # +2
"Если я чего-то не знаю, то это ещё не значит, что этого не существует". Откройте для себя ключи компиляции и посмотрите ссылку чуть выше.
commonD 23.01.10 22:51 # +0
Уважаемый, про ключи компиляции я в курсе. Лучше покажите мне хотя бы 1 проект (или даж кусочек кода) C++ который компилится с помощью gcc + ключи компиляции для совместимости с C++. Да кстати, в мане к gcc сказано, However, the use of gcc does not add the C++ library, то есть объектники получить мы сможет, а вот собрать все уже не получится.

PS: а ну и да предоставь строчку которая скомпилит этот C++ код, разумеется используя gcc.
PSS: я не минусовал, во первых не вижу за что, а во вторых кармы нету.
cyrus 23.01.10 23:36 # +1
1
2
$ vim test.cpp
$ cat test.cpp

1
2
3
4
5
6
7
8
9
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
     cout << "HELLO" << endl;
     return 0;
}

1
2
3
4
$ gcc test.cpp -o cpp -lstdc++
$ ./cpp
HELLO
 
commonD 24.01.10 00:08 # +0
ок, согласен, тут я не прав.

Но все таки gcc предназначен для С кода, g++ для С++ кода.
booley 25.01.10 00:00 # +0
Плюсовать/минусовать карма не нужна. Мы не хабра, по крайней мере, в этом аспекте.
m039 23.01.10 15:07 # +0
Крайне интересно, что оно выдаст на выход, т.е. что будет в конечных С исходниках. Если в них можно будет спокойно разбираться, то получится что-то интересное.
digiwhite 23.01.10 15:11 # +0
А это имеет смысл? :) Если и имеет, то наверное в таких дремучих случаях, о которых лучше даже не думать :).
m039 23.01.10 15:23 # +0
Прочитав Why Vala подумал, что его создали потому что надоело писать на простом С, следовательно если всё таки какие-то наработки по С были, которые удачно получаются в виде выходного листинга, то почему бы и нет. Но все таки очень сильно сомневаюсь что на выходе будет не дремучий лес, который тяжело отлаживать.
А вдруг нет?:)
digiwhite 23.01.10 15:27 # +0
Я надеюсь, что автор не ушел совсем :) И все же будет выкладывать свои результаты здесь. Тогда можно будет посмотреть :). Хотя наверное вы правы. Если предположить что на выходе С, то и отладка отчасти будет и через gdb. Так что наверняка позаботились :).
divius 23.01.10 16:54 # +0
Получится обыкновенный код на Gtk/Gdk, коего полно в гноме. В том, собственно, и задумка.
guineapig 23.01.10 15:09 # +1
ХХМММ, ну значит вы правы, а я значит ни хрена не разбираюсь в C и C++.
Прошу прощения, за свои ошибочные высказывания.
Учитывая новые данные, ни хрена писать мне уже не хочется!
Пойду подрасту чуток!
digiwhite 23.01.10 15:13 # +3
Чего-то не знать - это нормально. Ошибаться может каждый - это тоже нормально. Так что давайте ка лучше писать и совершенствоваться :). А мы вместе с вами :).
chemikadze 23.01.10 15:14 # +0
Да ладно тебе, не уходи, мы добрые =)
По крайней мере ты первый кто здесь заинтересовался этой странной штуковиной и привнес чуток нового в наше покрывшееся пылью сообщество.
digiwhite 23.01.10 15:16 # +0
Почти согласен. Было бы хуже, если бы топик проигнорировали и было 0 комментариев :). А так - резонанс, значит интересно.
cyrus 23.01.10 19:35 # +0
Не слушай никого. А то тут что-то наехали.. можно было и по-корректнее на ошибки указать. Но мы ж не фанатично-настроенные =)
Расскажи лучше о преимуществах языка.
digiwhite 23.01.10 19:39 # +0
Никто ни на кого не наехал. Были неточности, на них указали.
chemikadze 23.01.10 15:16 # +0
Странно, что ни в статье, ни в обсуждении ни разу не прозвучало слово метапрограммирование.
digiwhite 23.01.10 15:19 # +0
Я как-то не задумывался об этом :). Насколько оно мета, надо глянуть на то, насколько "просто" пишутся программы на Vala :).
chemikadze 23.01.10 15:28 # +0
Но под определение тем не менее подпадает.
<offtopic class="вброс">
Вопрос к GTK-кунам: в чем прелесть писать на чистом Си GUI-приложения? Судя по тенденциям Gnome разработчики отказываются от него в сторону более высокоуровневых языков. Что это: движение связанное с логикой или деградация сообщества?
</offtopic>
digiwhite 23.01.10 15:36 # +0
Вероятно все же сложность сопровождения программ на языке С.
divius 23.01.10 16:53 # +0
Тупо C быстрее (говорю как прогер на Qt=)). А эта штука вроде и C, а вроде и высокоуровневая
chemikadze 23.01.10 17:00 # +0
Как прогер на Qt почти соглашусь, но что-то не замечал большой разницы в скорости гномоприложений и родного KDE (о перегруженных свистелками-перделками и прочей плазме речь не идет).
divius 24.01.10 00:16 # +0
Это, полагаю, потому, что гномовские либы не через то место писаны. А вы посмотрите, например, на pcmanfm.
chemikadze 24.01.10 00:24 # +0
Ну, сравнивать сверхлегкие FM с жирными DE библиотеками немного некорректно. Да, helloworld на GTK запускается быстрее, чем helloworld на Qt, но когда очередь доходит до чего-то достаточно жирного, скорость либ играет меньшую роль.
divius 24.01.10 00:30 # +1
Я это к тому, что Gtk _позволяет_ писать легче. И да, если либы плохо написаны, их скорость может играть роль. Кроме того, у Qt есть тенденция иметь очень глубокие уровни вложенности кода. Например, грохнулся у меня недавно KDevelop, показал stack dump, так там было пунктов 60. За мощность приходится расплачиваться, да...

Но мы изначально говорили о скорости чистого C. Тут, я так думаю, фокус в том, что прогер на C контролирует _все_ аспекты кода, прогер на C++ пользуется готовой ООП-моделью. Эту разницу можно использовать во благо, можно во вред.
digiwhite 23.01.10 17:18 # +0
Если тупо, то да. А дальше зависит от того как писать.
divius 24.01.10 00:17 # +0
Ну да, см. ответ выше.
digiwhite 23.01.10 15:24 # +0
Кстати, возможно ИМХО, если только начинаете осваивать, то стоит использовать не IDE, а скажем vim+запуск руками "калькулятора" ну или makefil`ы на простом уровне.
digiwhite 23.01.10 15:36 # +0
Бля, я сошел с умаКонечно же запуск компилятора :).
booley 25.01.10 00:02 # +0
makefil

Делай любовь, спаси мир!

Или вы про Makefile? :)
digiwhite 25.01.10 05:55 # +0
Про makefile.

Лучшие блоги (все 158)
Топ пользователей Топ блогов
Топ пользователей Топ блогов
Элита (все 3245 из 234 городов)
Топ пользователей Топ блогов
В сети: shidoh, knicefire

Новенькие: neqste, ktulhy-kun, iMihael, palsanich, Brodyaga
welinux.ru

Смотреть онлайн бесплатно

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн