Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Для новичков > Каким компилятором С++ вы пользуетесь? |
Автор: Bester 22.12.2007, 12:29 |
Думаю, этот опрос поможет определиться некоторым пользователям с выбором компилятора, в том числе и мне ![]() |
Автор: GrayCardinal 22.12.2007, 12:38 |
Bester, gcc ![]() |
Автор: Vasay 22.12.2007, 13:01 |
Сейчас, юзаю gcc - мне так удобно, но говорят, по скорости он худший. Не знаю насколько объективно, но может будет интересно: http://www.cyberguru.ru/programming/cpp/cpp-compilers-analysis.html |
Автор: chipset 22.12.2007, 13:09 |
А если сразу несколькими? Я как минимум MinGW и VC8. |
Автор: Mayk 22.12.2007, 13:27 | ||||
хмм. afaik dev-c++ это лишь ide, которая работает над mingw'ом. Добавлено через 2 минуты и 56 секунд
вязанка 6? гнус 3.2? такие старые компилеры сравнивать? вообщем дальше имхо можно было и не читать. |
Автор: Vasay 22.12.2007, 14:14 | ||||
А я и не слушаю ![]() gcc удобней - так как этот проект - демон для *nix, а в *nix - gcc как-то уже стандартом считается. Вообще последнее время на JAVA пишу.
Да, старье откопал. Я хотел другую статью найти (там gcc тоже не в лидерах был, а первое место intel занял). Но не нашел, а наткнулся на эту :-( . |
Автор: DragoonFighter 22.12.2007, 18:11 |
Маленькая заметка: Dev C++ это не компилятор и IDE для компилятора MinGW т.е. в опросе Dev C++ и MinGW это одно и тоже. Так для инфы. |
Автор: bsa 22.12.2007, 19:22 |
DragoonFighter, это не одно и тоже. Компилятор и IDE - это разные вещи. |
Автор: Bester 22.12.2007, 19:38 | ||
Извините, не знал. |
Автор: DragoonFighter 22.12.2007, 23:11 | ||
Да но просто поскольку тут два варианта... если выбрать Dev C++ то поскольку это IDE для MinGW это автоматически голос для MinGW т.е. В этом случае это одно и тоже. (Я знаю что Компилятор и IDE это разные вещи. ) Да нече ![]() |
Автор: JackYF 23.12.2007, 01:09 |
Вывел gcc на первое место ![]() |
Автор: bsa 23.12.2007, 12:43 | ||
А что его выводить? Если просуммировать голоса за mingw (который по сути есть gcc для windows), gcc и dev-c++, то он и так делает все остальные вместе взятые ![]() |
Автор: jhonyxakep 11.6.2009, 03:59 | ||
А вообще все компиляторы почти по одной архитектуре посторены, как старые, а старые написанны на ASM то выигрывает MASM? |
Автор: andrew_121 11.6.2009, 05:14 | ||||
Идиоты! По времени компиляции - ДА! Но только в винде. Ваще странно что тут хоть что-то работает. А когда я узнал что микрософт после выхода висты, все еще остался на рынке, то ваще подумал что мир сошел с ума. Добавлено через 2 минуты и 5 секунд
Подумай, и перефразируй... Добавлено через 4 минуты и 42 секунды jhonyxakep, Слушай. Установи http://www.digitalmars.com/. У него название крутое! |
Автор: СтадоБаранов 11.6.2009, 06:11 |
andrew_121, тише, православный... В висте игры работают, я чего пользователям ещё надо?... Сам пользую gcc... Нравится то, что он не отходит от стандарта ISO... Чего не скажешь о M$ и Borland... И ещё... иногда в GCC попадаются такие небольшие неприятные ошибки(или особенности?...)... Например тело виртуального деструктора не может быть пустым(недопустимо "virtual ~myclass() = 0;"), а ещё не так давно я наткнулся на проблему организации класса Singleton... он просто не компилировался, когда в полях класса присутствовал статический указатель на экземпляр этого класса, пришлось изворачиваться с глобальной переменной... А по оптимизации gcc действительно может проигрывать, но зато gcc работает на множестве платформ и ОС... А вообще, оптимизация - это дело программиста... Хороший код всё равно мало оптимизируется, а плохой и с оптимизацией работает медленней... |
Автор: andrew_121 11.6.2009, 06:27 |
Чё за гон?! |
Автор: Andrey44 11.6.2009, 07:17 | ||
К концу года выйдет Seven и я собираюсь переходить на новую ось. Если кому нравятся линухи, маки - это дело их. Но зачем говорить то чего не знаешь? |
Автор: azesmcar 11.6.2009, 09:20 | ||||||||
так что ли? очень сомнительно. Можно конкретный пример того что не работает? Я использую и gcc и Visual Studio. Для тех кто только начитает изучать язык, на мой взгляд лучше gcc, так как микрософт учит плохому. Студийный компилятор позволяет писать то, что не соответствует стандарту, а это приучает начинающих к неправильным конструкциям. |
Автор: mes 11.6.2009, 10:29 | ||||||
ну если статическая переменная снаружи не определена, то компилироваться и не будет.
Описанные причины, это поведение соответствующее стандарту. А вот другие компиляторы, которые допускают подобное, идут на встречу пользователю, только вот поведение их кода от этого становится непредсказуемым. Непредсказуемым в том смысле, что этот код на другом компиляторе будет обладать другим поведением (в лучшем случае не откомпилируется, в противном будете долго искать ошибку). А также в том, что (насколько я знаю) стандарт обсуждаемого компилятора(или его отличия от оригинального) как таковой не имеется, что делает из программиста слепого мышонка, программирующего на ощупь со всеми вытекающими последствиями. ![]()
![]() |
Автор: azesmcar 11.6.2009, 10:36 | ||||
![]()
это даже студия не проглотит. Вообще уличить gcc в несоответствии стандарту пока что у меня не удавалось. ![]() |
Автор: zim22 11.6.2009, 10:43 | ||||
у MSVC ошибки понятней.
MSVC : error C2784: 'std::complex<_Other> std::operator *(const _Ty &,const std::complex<_Other> &)' : could not deduce template argument for 'const std::complex<_Other> &' from 'int' 1> c:\program files\microsoft visual studio 9.0\vc\include\xcomplex(79) : see declaration of 'std::operator *' error C2782: 'std::complex<_Other> std::operator *(const std::complex<_Other> &,const _Ty &)' : template parameter '_Ty' is ambiguous 1> c:\program files\microsoft visual studio 9.0\vc\include\xcomplex(69) : see declaration of 'std::operator *' 1> could be 'int' 1> or 'double' gcc выдаёт это: main.cpp|10|error: no match for 'operator*' in 'cd * 20' |
Автор: azesmcar 11.6.2009, 10:56 |
пусть привыкают.. а кому сейчас легко? ![]() |
Автор: Lazin 11.6.2009, 11:33 | ||
оправдываешь свой ник ![]() ага, в отличии от gcc |
Автор: andrew_121 11.6.2009, 11:43 |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Автор: ДокторТуамОсес 11.6.2009, 15:40 |
ММмм....Да ![]() А Борланд сдаёт позиции. Сходит на нет постепенно |
Автор: СтадоБаранов 11.6.2009, 15:57 |
как говорится... кушайте тролли дорогие... ну к примеру я хочу определить абстрактный класс, где тупо будет только интерфейс... набор методов, пустых. и нахрена ему деструктор?... Экземпляры этого класса никогда не будут созданы, а следовательно и уничтожены.... Класс может являться только родителем... на то он и абстрактный... Ну да это логические выводы, я весь ИСО наизусть не помню... Сейчас взглянул, про унаследованные классы тоже написано... Хме... и указатель на эксемпляр класса в статичном поле класса вне закона?... Это ошибка в gcc... Даже на линуксорге на эту тему срач был... кажется решение было найдено, нужно было пересобрать gcc с какими-то хитрыми параметрами... %) православный... это про дебиан... XD |
Автор: azesmcar 11.6.2009, 16:03 | ||||||
Почему это так сделано - другой вопрос. Вы упрекаете ГЦЦ в том что он не соответствует стандарту. Я вам стандарт процитировал. Упрек - ни к месту. Дальше, что касается того -
Ошибаетесь
создан экземпляр класса B, который в свою очередь создает экземпляр класса A. Вызывается его конструктор (можете проверить, следовательно должен вызыватся и деструктор). Это не сишарп и тут не понятия интерфейс, абстрактный класс вполне может содержать переменные-члены которые нужно инициализировать, выделять для них память (следовательно и удалять тоже). |
Автор: andrew_121 11.6.2009, 16:04 | ||
Знаешь что хреновому танцору мешает?...да да да я**а. Что общего? |
Автор: mes 11.6.2009, 16:05 |
претензии к стандарту, нужную цитату из которого привел несколькими постами выше azesmcar, a gcc всего лишь следует правилам. И если Вам не понятно для чего необходимо физическое определение деструктора, то создайте для этого тему, а не флеймите. ![]() |
Автор: azesmcar 11.6.2009, 16:05 | ||
Конкретнее...хочу видеть пример. Я множество раз использовал статические поля и не замечал никаких проблем. |
Автор: andrew_121 11.6.2009, 16:05 |
Ни к чему проверять. Это естественно! |
Автор: azesmcar 11.6.2009, 16:07 |
ну кому как ![]() |
Автор: СтадоБаранов 11.6.2009, 16:31 |
Ёма-на... эт не притензии к стандарту, а мои размышления... каждый видит что хочет... azesmcar, меня деструктор = 0 ассоциировался с деструктором по умолчанию... попутал.. =0 - это неопределённость... т.е. вызывая деструктор такой он попадёт в никуда... чем повергает вселенную в ужас... XD нужно заглушку так сказать определить... ... Яйца мне совсем не мешают, я решил проблему заменив поле класса на глобальную переменную... некрасиво, но что поделаешь?... |
Автор: Lazin 11.6.2009, 16:36 | ||||
|
Автор: azesmcar 11.6.2009, 16:36 | ||||||||
Я комментировал это
я только хочу сказать что это не ошибки GCC и даже не особенности, это требование стандарта С++ и эта ошибка будет в любом нормальном компиляторе.
![]() Добавлено через 1 минуту и 29 секунд
а может эта проблема имеет другое решение? Все таки не хотите показать пример того что не работает? |
Автор: andrew_121 11.6.2009, 16:54 | ||
А их может быть несколько? ![]() |
Автор: zim22 11.6.2009, 17:51 |
да, один на завтрак, один на обед. один в крапинку и не забываем про рыженький с рюшечкой. ЛОЛ. |
Автор: andrew_121 11.6.2009, 17:54 |
zim22, ![]() ![]() ![]() ![]() Наверное в некоторых языках такое возможно. Наверное, возможно, у деструкторов еще и параметры есть. ![]() |
Автор: zim22 11.6.2009, 18:01 |
причём здесь некоторые языки? мы обсуждаем С++. |
Автор: andrew_121 11.6.2009, 18:09 |
zim22, Похоже у чела ассоциация) |
Автор: jhonyxakep 12.6.2009, 14:03 | ||
Буду устанавливать всё с крутыми названиями! |
Автор: andrew_121 12.6.2009, 14:22 |
jhonyxakep, Это шутка была ![]() А если серьезно, то DJGPP, это лучший компилятор для DOS. Сам когда пользовал. Доволен! Добавлено через 8 минут и 20 секунд При том, для него есть http://alleg.sourceforge.net/ |
Автор: UnrealMan 14.6.2009, 18:12 | ||||||||||||||||||||||||||
А как насчёт тех, кто хочет изучать C++ под виндой? Покажи хоть одну нормальную готовую сборку компилятор + стандартная библиотека + отладчик + IDE под win, которая по возможностям и удобству дотягивала бы до Visual Studio.
О, можно подумать, gcc не позволяет? Вот те раз:
Вот те два:
Вот те три:
Вот те четыре:
Вот те пять:
gcc 4.1.2 всё это компилирует (проверялось http://codepad.org/).
Гы-гы-гы ![]() ![]() Вот те раз:
Вот те два:
Вот те три:
Вот те четыре:
Вот те пять:
Первые три примера не компилируются, четвёртый не линкуется, пятый валится во время выполнения (проверялось там же, где и раньше). С точки зрения стандарта все примеры из этой пятёрки well-formed и без undefined behavior. |
Автор: azesmcar 14.6.2009, 18:42 | ||||||
У Visual Studio лучший IDE на мой взгляд - (хотя признаю что это дело вкуса). Я знаю людей которым больше нравится SlickEdit. Но мне студийный IDE + VisualAssistX нравится больше всего. Просто тут речь не о редакторе а о компиляторе, к студийному IDE можно подцепить GCC, если от этого тебе будет легче, новичкам начинающим изучать язык возможности студии не нужны, им нужен компилятор и более менее приличный IDE. CodeBlocks полностью соответствует этому требованию.
Знаю достаточно чтобы понять что скрывает твой сарказм. Гы-гы-гы, как много ты знаешь обо мне, почитай повнимательней. Я сказал что мне не удавалось, я не говорил что gcc идеален и я не говорил что тестировал его от начала до конца. К счастью таких извращений я никогда не писал и не замечал что они работают на GCC. И не встречал подобных извращений в кодах других людей. У меня есть занятия поинтересней чем сидеть и тестировать компиляторы, я говорю о том что я встречал на практике а не копировал из стандарта все по очереди. Мне кажется это не сложно понять.
как же я жить то буду? ![]() кстати если ты на GCC 5 всего нарыл, на студию можно нарыть гораздо больше..но поскольку я так чувствую что ты поклонник студии, тебе этим заниматся невыгодно, а мне - неохота. Желаю удачи. п.с. По поводу компилятора я высказал свое мнение, оно неизменно..у тебя есть полное право высказать свое. На то и в заголовке виднеется слово форум. |
Автор: andrew_121 14.6.2009, 18:58 |
Модератор: Сообщение скрыто. |
Автор: andrew_121 14.6.2009, 19:17 |
Модератор: Сообщение скрыто. |
Автор: Lazin 14.6.2009, 22:11 |
!!???? ![]() Добавлено через 1 минуту голословное и неуместное утверждение, средства разработки у них более чем на уровне ![]() |
Автор: azesmcar 14.6.2009, 23:08 | ||||||
речь не о версии шла
вообще-то у них все на уровне, просто от microsoft по вполне логичным причинам народ ожиает уровня повыше. А так, в последние годы они значительно повысили качество продуктов. п.с. только не надо войну разводить, я против студии ничего не имею, но gcc на мой взгляд строже в плане стандарта. Это мое мнение, и оно вряд ли изменится по отношению к текущим версиям обсуждаемых компиляторов. А баги есть везде, никто ничего не идеализирует. Если в программе не нашли ошибок, значит их плохо искали..народная мудрость. |
Автор: UnrealMan 15.6.2009, 12:21 | ||||
Ценность компилятора как средства разработки складывается не только из его собственных технических характеристик, а ещё и характеристик совместимого с ним инструментария.
Это чисто теоретически или для этого есть какой-то реальный плагин? И даже если есть плагин, то чья стандартная либа и чей отладчик тогда используются? Отладчик нужен всем: и новичкам и не новичкам. В студии он изначально интегрированный и очень удобный. Например, чтобы посмотреть значение выражения, достаточно выделить его мышкой в редакторе. Содержимое контейнеров STL можно просматривать, как обычные массивы данных. Что-то я не видел ничего подобного в поделках, совместно работающих с MinGW (Eclipse+CDT+GDB, CodeBlocks+GDB). Или взять хотя бы typeid(x).name() - тоже бывает полезно при отладке, только вот в VC++ сразу получается нормальное имя типа, а в gcc это непонятная кучка символов, которую нужно расшифровывать. А как насчёт стандартной библиотеки? MinGW-шная либа уже имеет работать с std::wcout, std::wstring и т.д.? И локалями, кроме C? Или новичок ещё должен поплясать с бубном, устанавливая STLport из-за недоделанности нативной стандартной библиотеки? ![]() Был у меня один веселый случай на практике, когда я тестировал свою либу на предмет переносимости. Где-то часа два убил на поиск несуществующей ошибки в коде - в итоге оказалось, что баг не в коде, а в MinGW, который пытается выводить шаблонные аргументы из nondeduced contexts. Этот пример
как раз демонстрирует данный баг. Нарыл? Да это только то, что мне сразу вспомнилось ![]() Я и так знаю, что у VC++ много багов ![]() |
Автор: azesmcar 15.6.2009, 13:23 | ||||||||||
Ну для новичка это не средство разработки, а скорее средство для изучения языка. Я как уже сказал очень люблю VisualAssistX, но не рекоммендую его знакомым новичкам, чтобы руку набили. Тяжело в учении, легко в бою.
о практике ничего не могу сказать, знаю только что это реально. Не пробовал ![]()
Повторюсь, я не выступаю против студии, я даже написал что сам ею пользуюсь (правда не только ей).
А вот тут есть разница. d.~B() ты знаешь хоть одного новичка который такой код напишет? ![]() а вот я знаю полно не новичков которые пишут throw std::exception("error") а потом меняй после них на хрен знает что, ради того чтобы под gcc скомпилировать код. Эти люди на студии учились. У тех кто писал на линукс всю жизнь код легче портируется, мое личное наблюдение.
Ну это уже дело вкуса. По мне так оба важны, моя рекоммендация касалось только для новичков, говорить об этом вообще значило бы призывать к религиозной войне, а мне неохота, бессмысленное занятие на мой взгляд. Кстати последние два ill-formed студия тоже скомпилировала. |
Автор: UnrealMan 15.6.2009, 21:34 | ||
Оказывается, сборка Eclipse+CDT+GDB тоже так умеет. А раньше вроде не умела. Прогресс ![]() |
Автор: Lazin 15.6.2009, 22:18 | ||
можно еще писать визуализаторы для своих типов данных ![]() я раньше думал, что связка eclipse + Mingw + gdb глючит в windows, но вот в linux оно должно здорово работать.. боже мой, как я ошибался ![]() теперь я понимаю, почему так много людей, программируя под linux используют только %favorite_text_editor_name% + gdb в терминале (ну и что-нибудь для сбокри проектов) Добавлено через 2 минуты и 30 секунд CodeBlocks, это вообще отдельная тема, впервые я его увидел 2 гда назад, за эти два года там практически никаких изменений (хотя серьезно я его не использовал, просто немного поюзал и снес, может что-то упустил) ![]() |
Автор: azesmcar 15.6.2009, 22:30 | ||||
а что еще надо кроме vim? ![]() vim+gcc+makefile+valgrind, мне этого вполне достаточно под линукс. Кстати если долго сидеть на vim, потом даже в студии как-то неудобно, клавиатурой не все можно сделать. Так что это даже дело привычки. Но помнится в одной из компаний в которых я работал был очень популярен SlickEdit. Он правда не бесплатен, но штука хорошая. Народ бы доволен.
А они там нужны? я вообще CodeBlocks за профессиональную среду разработки не принимаю, по моему ее и создали как раз для студентов. |
Автор: kamre 16.6.2009, 08:50 | ||
Нет, для С++ уж лучше Emacs+XRefactory+CMake+GCC+Valgring. Ну а с отладкой все гораздо хуже, все обертки вокруг GDB полный отстой по сравнению с отладкой в MSVC. |
Автор: azesmcar 16.6.2009, 08:56 |
Серьезно? спасибо, не знал что для меня лучше. ![]() |
Автор: kamre 16.6.2009, 09:06 | ||
Ну в любом случае стоит попробовать такую связку и сравнить. Мне показалось, что значительно лучше ![]() |
Автор: W4FhLF 16.6.2009, 09:27 |
Ещё QtCreator есть ![]() |
Автор: azesmcar 16.6.2009, 09:46 | ||
Вспоминлся Скотт Мейeрс.
|