LINUX.ORG.RU

IDE для GTK 3. ЯП C/C++/C#

 , ,


0

2

Следующая проблема: хочу научиться программировать в Linux (у самого стоит Debian, так что кодить в виртуалке не особо хочется).Встала вопрос: какую IDE лучше выбрать?
Однозначно GTK 3. Сам смотрю в сторону Anjuta + Glade. Emacs не предлагать!
И еще вопрос, как осуществить поддержку С++? Скорее всего прийдется возиться с классами.
Также прошу ссылки на подходящую литературу. Желательно на русском. Если у кого есть элементарные программы, прошу скинуть для примера.

Раньше программиравал в Delphi, разумеется под винду (ну что поделать... сегодня в универах тока винде и учат). Так что в программировании в Linux я чайник(

★★★

Последнее исправление: Ignatov (всего исправлений: 1)
Ответ на: комментарий от Ignatov

вообще хочется gtk!!! но не очень хотелось майкрософта... а наскока я знаю c# - их рук дело

угу.. и библиотек придется тянуть еще больше, чем для qt. с использованием gtk лучше всего писать на голом C без ++. к тому же на gtkmm пишет оч мало народу, помощи не найдешь. еще можно писать на C++, и использовать сишный GTK API. т.е. в своем коде городить сколько угодно классов и шаблонов, а функции GTK использовать сишные. тоже нормальный вариант для любителей C++.

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

ну а классы вроде есть! показать умение работы с ними можно будет! синтаксис внешне сишный! вот только опять же как к объектам обращаться?

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

О, ты же шаришь хорошо в gtk-мире. Скажи, как тама vala поживает?

я уже давно отвечал про это на лоре.. как она именно щас поживает не знаю, а когда я от ее использования отказался — было все плоховато. но для меня главное было в невозможности/сложности поддержки обоих версий GTK, и в постоянных изменениях компилятора без поддержки совместимости (синтаксис языка меняли). как результат, свежими valac нельзя собрать старую версию софта, и наоборот. это очень усложняет поиск багов (git bisect). еще там были баги в vapi файлах, некоторые API gtk криво были прописаны, приходилось патчить. короче, для меня получился лишний геморрой только. бонусов никаких.

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

Ты генераторами кода пользуешься? Или сам копипастишь эту кучу кода для gobject'ов? Я, кстати, на плюсах делал себе простенькие обертки для gobject'ов(для unref'ов и пр. такого), а в остальном просто юзал сишное API. Ибо gtkmm вещь неудобная. ИМХО. Но и чистый си тоже.

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

ну а классы вроде есть! показать умение работы с ними можно будет! синтаксис внешне сишный! вот только опять же как к объектам обращаться?

синтаксис vala ближе всего к C#. от сей там маловато. короче, это урезанный C#, который компилится в нативщину (не использует mono).

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

еще можно писать на C++, и использовать сишный GTK API. т.е. в своем коде городить сколько угодно классов и шаблонов, а функции GTK использовать сишные. тоже нормальный вариант для любителей C++.

вот с этого и надо было начинать!

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

Спасибо за ответ... Жаль, вроде задумка неплохая эта vala. Ну может потихоньку выйдут на стабильный и годный вариант...

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

мне не особо часто надо gobjectы наследовать, но да, часть кода была через vala сгенерирована. а часть вручную. для новых классов просто копипаста + find&replace. и да, я тож на C++ под gtk писал.

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

поначалу старайся обходится без отладчика ( как правило gdb)
т.е пиши простейшии программы для уяснения нюансов.

С отладчиком в разы проще разобраться в нюансах.

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

Жаль, вроде задумка неплохая эта vala.

ну вот мне тож так казалось :)

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

все равно без препроцессора мрак.

зы: ушел спать, если что завтро отвечу на последующие посты :D

waker ★★★★★
()
Последнее исправление: waker (всего исправлений: 1)
Ответ на: комментарий от Ignatov

Ой не хорошо будет начинать изучения С и С++ с дикой их смеси... На первом этапе(ИМХО) желательно отдельно изучить С, потом потихоньку приходить к возможностям С++. Иначе есть риск пойти не в ту сторону... Или получить психологическую травму и уйти на чистый Си, критикую С++ в интернетах.

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

Или получить психологическую травму и уйти на чистый Си

хехе.. так вот что со мной случилось :D

waker ★★★★★
()

Anjuta хороша. Мне очень нравилась. Писал на ней Gtk+2/3 на Си. Особенно радовала интеграция с devhelp. К сожалению, в ней есть одно большое «НО». Она падает с завидной регулярностью. При чем независимо от версии IDE и дистрибутива. Вдобавок к этому, при клепании формочек в Builder'е иногда начинает адово тормозить, нагружая проц. Хз может это только у меня так.

В-общем, я пожелал этому индусу быть сожранным стаей коров и перешел на vim+плагины.

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

в принципе эт скорее продолжение изучения;-)

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

а может кто подсказать как написать процедуру смены текста на label1 при нажатии на button1? создал форму, на ней эти два объекта. Сколько маюсь, нифига. Чисто прога для старта, чтоб было от чего оттолкнуться
си/Anjuta/Glade

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

В формачках в button1 на сигнал clicked прописываешь название своей функции обработчика сигналов. Данные пользователя передаешь label1. Далее в *.с файле добавляешь примерно такую функцию: void func_name(GtkButton *btn, GtkWidget *lbl). И уже ее теле меняешь текст метки.

Примерно так

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

если использовать отладчик как ограниченый repl

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

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

и есть альтернатива вообще исполнению ( чистому или под отладчиком)

смотреть во что(как строки C отображаются в машкод и коменты асма - поэтому и привёл хинт со стековерфлоу) транслируется код

помогает для понимания очень

qulinxao ★★☆
()

какую IDE лучше выбрать?

Однозначно GTK 3

это как?

jtootf ★★★★★
()

хочу научиться программировать в Linux.

Встала вопрос: какую IDE лучше выбрать?

«UNIX - универсальная среда программирования» (с) Керниган, Пайк

/thread

anonymous
()

если хочется gtk3 - плюсую vala. гномеры ее официально рекоммендуют. для начинающих в том числе.

ps: тред не читал

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

Не расскажете ли мне про взрослое программирование, уважаемый анонимус?

Как минимум не путать теплое с мягким. ТС смешал все в кучу и ждет помощи.

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

религия его ставить на дэбу не позволяет...

Религиозным тут не место.

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

Может ты мне объяснишь, как к компании великих примазался Пайк и почему его часто относят к основателям Unix, не смотря на то, что это не очень похоже на правду, хотя бы в силу возраста.

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

Я думаю, что рано или поздно vala станет умолчанием для gtk. Ибо писать GUI на чистом С врагу не пожелаешь... А vala(если косяков не будет) даже плюсистов заткнет(по части разработки десктопа).

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

С подходом: «Си люблю - Паскаль не люблю, а С# - бяка, и Qt - бука» шансов стать хорошим программистом не мало, а очень мало. Я где-то слышал, что куда более правильный подход должен был бы выглядеть как-то так: «OOD люблю - OOP не люблю, ФП - хорошо, MP - тоже хорошо, но мало людей его сейчас понимает. Алгоритмы - очень люблю.»

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

Однозначно GTK 3

может кто нить пример кинуть? вроде элементарной формы с баттоном и лэйбелом со сменой текста по нажатию на баттон?!!!

ты сам себе ссзб

#include <QApplication>
#include <QPushButton>
     
int main(int ac, char *av[])
{
    QApplication a(ac, av);
    QPushButton b(tr("Μου αρέσει πίτσα"));
    QObject::connect(&b, SIGNAL(clicked()), &a, SLOT(quit()));
    b.show();
    return a.exec();
}

С гтк тебе потребуется ровно в два раза больше кода, в котором походу написания твоих формочек будет ровно в два раза больше сегфолтов и всё это будет прилинковано к ровно в два раза большему количесту всяких libxmlbonobodbuswrapper. Инфа 146%.

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

на юзеров пофиг! они этого не увидят!!! проги чисто по учебе! сдал и забыл)))

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

Пример менюшек на питоне GTK+

Пример кнопки на питоне GTK+

justAmoment ★★★★★
()
Последнее исправление: justAmoment (всего исправлений: 1)
Ответ на: комментарий от d_Artagnan

иногда на ЛОРе таки проскакивают вполне адекватные коменты.

Мог бы - передал бы звезду

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

Гм, это какое-то поветрие. Кутешники даже задание прочитать правильно не могут. Очень надеюсь, что ты просто школоло.

baverman ★★★
()

Можно попробовать язык программирования Vala, компилируется в С-код, reference count & garbage collection(во время генерации С-кода).
Есть в наличии API для Gtk2, Gtk3, posix. Ручное управление выделением памяти тоже есть (в отличии от C#, на который Vala очень похож).
IDE: qtcreator.

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

Странное IDE для vala. Это IDE хорошо для Qt-проектов и приемлемо для проектов без GUI. Но использовать QtCreator для разработки под GTK+ - странная идея.

GC там вообще нет полноценного, там только RC(gobject'овское). Циклы разруливают руками через weak.

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