DimkaS
написал 5 января 2006 года в 02:55 (1335 просмотров)
Ведет себя
как мужчина; открыл 84 темы в форуме, оставил 922 комментария на сайте.
У меня есть небольшой опыт программирования на VB и С/С++ (Borland C++ Builder) под Windows. Посоветуйте, пожалуйста, источники информации первой необходимости для освоения этих языков в Линукс. Меня интересуют:
1) Среда разработки
Я знаю про Gambas, Anjuta и Eclipse. Как сравнить, что выбрать?
2) Графический интерфейс
В винде он один, а тут вам и qt и gtk и черт знает что еще… Как разобраться, где доки искать?
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
На самом деле, к программированию под UNIX ни один из твоих вопросов отношения не имеет.
1. Я пользуюсь VIM+pluigns+GCC+pmake.
2. Вообще не использую, потому что не надо.
1) vim/gvim
2) Выбор огромный, решать тебе
Я пользую xfce
http://www.xfce.org/
xfce, емнип, на gtk сварен.
vim/gvim это гатишна, сам использовал, но его возможности как ide уже далеко в попе. И гемора с настройкой очень много (ох да, уже слышу вопли красноглазых защитников вима :) ).
В общем я бы порекомендовал eclipse третий (см. соседний топик), или C++BuilderX, или действительно gvim.
Есть еще Kdevelop и Anjuta, но последняя произвела впечатление совсем уж сырой вещи, а Kdevelop я щупал пару лет назад, жутко не понравилось, может быть сейчас все изменилось, не знаю :)
Ясно. Про IDE, вроде, понял. А вот про GUI не очень. Можно сделать такой интерфейс, чтоб он одинаково выглядел и в KDE и в Gnome и в др десктопах?
И еще. Как создавать gui без ide? В винде это как-то замороченно делалось… Может кто-нить ссылки кинуть на подходящие доки или ключевые слова подсказать?
что бы одинакого в kde/gnome нету. что бы нормально на разных платформах — wxWindows/Qt.
Если писать гуй на C или Python — GTK.
Если на c++ — Qt или wxWindows.
Если есть опыт MFC — wxWindows.
KDevelop вообщем ничего так… нормально…. тока msvs все равно лучше…
Anjuta сильно на GTK/Gnome завязана,
Eclipse спасет если много памяти, много времени, ну все то, что хочет большая java app.
Gvim без\с плагинов, подцветка синтаксиса и руками писанный Makefile — стандартный путь линуксойда…
Есть еще пачка каких-то штуковин.
Но ИМХО правильный путь если надо кросс-платформенно пишешь в ms studio код, отлажываешь, а потом просто пишешь makefile, чинишь мелкие ляпы которые простил компилятор от ms, и готово.
builder выкинь на помойку истории, с портированием кода гимора в разы больше чем с каким либо другим…
Некорректно заданный вопрос порождает мистические ответы. Что значит «сделать такой интерфейс, чтоб он одинаково выглядел и в KDE и в Gnome и в др десктопах"?
Если напишешь гуй с привязкой к QT, то он будет запускаться на машине, снабженной соответствующими библиотеками, под любым десктопом, буде это GNOME, fluxbox или twm, и везде будет выглядеть одинаково. То же верно для GTK и хЕровой тучи других тулкитов. Можно пользовать более примитивные наборы виджетов, например Motiff/Lesstiff или вообще, Athena’вые виджеты, которые в Икса встроены, аппликуха вообще никаких дополнительных библиотек просить не будет. А то можно писать на чистом Иксе (чем я иной раз развлекаюсь) — экономит память и в несколько раз быстрее (возни до хера, это таки да). Еще раз повторю, во всех вышеописанных случаях, если гуй запустится, выглядеть он будет независимо он конкретного десктопа, под которым он бегает.
Смысл такой. GTK, QT и прочие прибамбасы придуманы для облегчения написания гуя и для того, чтобы внешний вид (стиль) сразу всех гуев, написанных с использованием данного тулкита, можно было изменить параметрами настройки соответствующего десктопа. Если ты напишешь гуй под QT, он будет выглядить в соответствии с текущими настройками KDE.
Компилятор в MS прощает «ляпы» типа
int array[5];
array[8]=25;
или
int *array = new int;
for(int i=0;i<5;i++) array=i;
и еще столько всего, что в ms studio пусть бабушка твоя код пишет. Я еле-еле отучил студентов пользоваться этим монстром. Для кросс-платформенности, как и для изучения программирования — только gcc. А в Винде исправишь мелкие параноидальные заскоки MS’овского компилятора, как например, отсутствие понятия области действия переменной-счетчика цикла.
Good Luck,
UT
ну да…. и такое прощает… тока почему он должен бить тут по рукам?
пользуйте std::vector и всего делов…
это включается и выключается опциями компиляции…
обоснуй? а что icc уже низя?
взять например ту же eclipse + icc и вперед… будет крутая ide с крутым компилятором :)
Ха! Клюнул-таки, а? :-)
Компилятор — ладно. Но прога с такими ошибками еще и работать будет под Виндой, а это уже плохо с точки зрения отладки.
А оно не должно включаться и выключаться, это синтаксис языка. Кросс-платформенности несоблюдение стандартов несколько вредит, ты не находишь? :-)
Я же сказал — для обучения. Для изучения надо что-нибудь а) бесплатное; б) строго соблюдающее стандарты; в) неглючное. Всем трем требованиям удовлетворяет только gcc.
Good Luck,
UT
блин. а в чем проблема-то? ну не сказал тебе компилятор что ты дурак. ну линкер тоже решил, раз ты дурак не дам твоему коду обрушиться. то что ты привел — это глупость, а защита от дурака не самая плохая весчь:)
Не соблюдение стандартов — это когда код, отвечающий станадрту не_компилируеться. Я что-то ни разу не слышал, что бы такое было в ms cl…
a)studio tools и ms cl 7.1 бесплатны.
б)«стандартный» код работает
в)мне известен всего один существующий глюк, но до него ни один студент не добереться…
а про-девелопер знает как эту ситуацию обходить…
ЗЫ
область видимости чего-либо — это ниразу не синтаксис :)
Не согласен. Это еще и когда компилируется код, не отвечающий стандарту.
Сделать синтаксисом? Откомпилируй
в gcc.
Good Luck,
UT
не вопрос…
вот что сделала студия c выключеной опцией «Force Confirmance In for Loop Scope ( /Zc:forScope- )»
по умолчанию опция вклчена, и код не собираеться, сообщая что i в втором «for» не определена.
думаю что gcc скажет ровно тоже самое, тока вот незнаю какой ключик у нее это включает\отключает…
Какое поведение считаеться «правильным» по стандарту?
Я считаю, что такой код не должен собираться…
скрин где не собралось
а здесь собралось
Я просил скомпилить это под gcc и получить синтаксическую ошибку. То, что это собирается в студии я знаю. Сей факт есть грубое нарушение стандарта С++, о чем можно почитать в CD2 и FCD:
for(for-init-statement; condition; expression) statement
«If the for-init-statement is a declaration, the scope of the name(s) declared extends to the end of the for-statement»
То же самое, другими словами — в сноске 124 к параграфу 6.8.5.3 Финального Драфта (FCD)
http://home.att.net/~jackklein/c/standards.html
Для кросс-платформенности оба вида нарушения стандартов — некомпилирование стандартного кода и компилирование заведомо нестандартного — одинаково плохи, поскольку являются двумя сторонами одной медали.
Good Luck,
UT
Дык ведь не собираеться! :)
Именно синтаксическая ошибка.
НО
Есть возможность заставить собраться расширив область видимости.
Может твои студенты подкрутили свою студию прежде чем тебе что-то сдавать? ;)
У меня собиралось на совершенно девственной инсталляции студии (не помню версии, 6.0, кажется). Как, например, и работали векторы, которые забыли ресайзить, и много еще чего. В конце концов, мы добились того, что код моими студентами писаный стал действительно портабельным, когда для переноса программы на Юникс стало достаточно изменить один хедер (мы OpenGL’ные аппликухи писали). MS’ные глюки очень мешали процессу, тогда как код написанный изначально для gcc переходил на Виндозу гладко и чисто.
Мы несколько отвлеклись, ты не находишь? :-)
Good Luck,
UT
нахожу…. тока по делу имхо сказать уже особо нечего…
:)
ха-ха-ха….год выпуска сказать или сам посмотришь?
интересно умел ли тогда gcc например c99(edit: а его тогда и не было, не знаю какой стандарт c тогда быд) не говоря уж о final draft :)
UT, ну ешкин кот, ты оказываеться пользовал кашки мамонта от мелософта и свежак от gnu, и расстоился что ms в те времена налабала такой кривой компилятор?
А я то думал…
Лана забили… UT если есть время возьми где-нить винду и посмотри на современные студии от микрософта, скачай express версии чего-нить….
А то как-то голословно получается…
это в смысле? это ты для чего принудительно ресайзишь векторы?
Хорошо, я сейчас гляну точно, что это было.
Good Luck,
UT
Нашел!
Visual Studio 6.0 и Visual Studio .NET
Последняя была выпущена в 2002 году. Да и вообще, если MS выпускает програмы раз в четыре года, ей следовало бы заботиться о вылавливании багов и выпуске патчей.
Good Luck,
UT
а 2002 вела себя точно так же? Я это перепроверить не могу, так как 2002 мне нигде не доступна.
у меня дома есть тока 2005, она не собрала, что и ожидалось.
на работе есть 2003 — так что могу в понедельник посмотреть как она компилит это. Точно знаю, что у нее есть такой ключ, но включен он или выключен по умолчанию не знаю.
PS
По скоку циклы я пользую :) и for(int i…. часто бывает внутри одного метода, то подозреваю, что включено, т.е. твой пример не соберется с синтаксической ошибой.
Спасибо Uncle Theodore за внятное объяснение:
Последний (надеюсь) вопрос: где искать доки и по каким словам?
В Гугле, вестимо.
Слова --
qt programming
gtk programming
xlib programming
athena widgets
linux gui programming
хватит для начала.
Good Luck,
UT
умный да? вот достучался тут до меня студент, чего-то у него там не работало… компилировал он есесссно в vc++. Дык я, чтоб это скомпилировать компилятором соответствующим стандарту, задолбался править программу. а студентик даже и не подозревает где кончается стандарт и начинается vc++. И когда я попытался ему объяснить, на будущее что объявление main, должно начинаться со слова `int’, а не `void' он по-моему так и не понял зачем…
да. очень.
повезло. был бы borland — познал бы страсть в избытке
компилятор виноват что студент — дурак? тока ответь на свой собственный первый вопрос.
а ты в следующий раз не объясняй больше чем спросили -будешь спокойней спать :)
PS
Если проболжим обсуждать на скока g++ соблюдает стандарты, разворачивает template-ты, и особенно хорошо расскажу как быстро он это делает…
а может он умеет базу edit & continue отлаживания? а давно ли он научися precompiled headers, да так что бы совместимо с остальными?
Причем возьму версию за 1998 год :) ну или за 2002 :)
Ок, а я возьму шестую студию и раскрою тему ее соответствия стандартам :)
Короче holywar пора ацтавить :) Или сделать ветку «g++ vs vc++».
Спасибо! Может, в топку эту ветку? А то тут лишь пара постов по теме…
Нет, просто переименовать ее в vs vs gcc :)
На сколько знаю я, VC++7.1 — единственный в мире компилятор, который поддерживает C++ стандарт на 100%.
во-во… :)