LINUX.ORG.RU

Расскажите, пожалуйста, о плюсах Linux-based-OS для программирования на C++

 


0

3

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

C++ я изучил полностью (если можно так выразиться), теперь нужна практика написания собственных проектов и изучение популярных библиотек (для начала Boost, дальше пока не определился), тем и занимаюсь. Но вот в последнее время Windows 8.1 с VS2012 стали меня разочаровывать - железка у меня не самая крутая, а посему после пары тысяч строк в проекте VS начинает заметно притормаживать. Сама же Windows тоже не так шустра, как хотелось бы - она иногда начинает насиловать диск, и тогда нервам приходит северный пушной зверек и пару минут я морально страдаю.

С Linux я раньше общался, лет пять назад, но только как простой юзер и про программирование я тогда вообще не думал. Использовал Debian, но недолго - где-то через год снес в виду того, что было лень фиксить мелкие проблемки (какие уж не помню точно) и мне тогда еще не нравилось GUI - Gnome 2, тоже по мелочи.

Сейчас заинтересовался сабжем, ибо Win+VS12 уже выносят мозг и портят нервы все чаще. Поэтому спрашиваю, какие есть плюсы и минусы использования Linux в моем случае (практика программирования на C++)? Свободные аналоги (GDB, QtCreator/GnomeBuilder/Vim/Geany) конкурентноспособны проприетарным (VS Debugger, Visual Studio)? Уж очень удобная и продвинутая отладка в VS, да и умеет она много всего... есть такое в свободных аналогах?

С уважением, bobivi.


QtCteator не плох. Не могу сравнить его со студией (последний раз пользовался ещё в школе), но нареканий по быстроте и удобстве отладки не вызывал. У него есть проблемы, лично встречал баг с ребилдом проекта, но в целом удобная штука. Я бы вам советовал поставить его под Винду и какое-то время использовать, если понравится, то можно и переползать.

Weres ★★★
()

VS это хороший инструмент, вряд ли ты найдёшь лучший аналог в линуксе. Может иметь смысл перестроить свой workflow. Код писать в простом, но мощном редакторе вроде vim или Emacs. Компилировать, используя инструменты вроде make. Отладку вести, используя gdb. И т.д. Но большинство программистов слишком привыкло к мышке и подсказкам, поэтому этот метод подходит не для всех.

Одно из абсолютно гениальных изобретений линукса это valgrind. Аналога под Windows нет. Только из за него можно перейти на Linux, имхо.

Legioner ★★★★★
()

Линукс это не про скорость, если конечно речь не идет об аскетстве.

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

Спасибо, а я что-то и забыл, что Qt - кроссплатформенна :)

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

Благодарствую. Очень интересная штука, этот ваш valgrind!

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

а расскажите человеку, поверхностно знакомому с си: чем valgrind отличается от gdb? они оба ведь дебаггеры, не?

anonymous
()

VS начинает заметно притормаживать. Сама же Windows тоже не так шустра, как хотелось бы

Да, Linux это то что тебе нужно. После недели работы в нём ты поймешь, что VS не тормозит, а винда так просто летает.

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

Valgrind это профайлер, а не дебагер.

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

valgrind - это анализатор/профайлер. Лучший друг в поисках утечек памяти, коих в C++ при невнимательном программировании можно наделать массу.

EXL ★★★★★
()

Свободные аналоги (GDB, QtCreator/GnomeBuilder/Vim/Geany) конкурентноспособны проприетарным (VS Debugger, Visual Studio)? Уж очень удобная и продвинутая отладка в VS, да и умеет она много всего... есть такое в свободных аналогах?

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

Что касается преимуществ LinuxBased-OS для программирования на C++, то тут можно назвать разве что более удобное управление библиотеками (даже самый убогий пакетный менеджер это круче, чем DLL-hell) и приобретение навыков кроссплатформенной разработки. Оба этих пункта, опять же, ситуационной полезности.

А теперь что касается твоего вопроса - линукс тут вообще не при чём. Не нравится студия - не используй студию.

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

Спасибо за ответ! Как раз надо будет подумать про сферу применения, хех.

А теперь что касается твоего вопроса - линукс тут вообще не при чём. Не нравится студия - не используй студию.

Ну, я лишь спрашивал в чем плюсы - заинтересовал Linux :)

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

Ну, я лишь спрашивал в чем плюсы - заинтересовал Linux :)

Так я и говорю - вне контекста конкретной задачи нельзя вменяемо ответить на вопрос. Рассуждать о сферическом программировании на С++ в вакууме - не самое продуктивное дело.

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

Минуточку. Изучил, а не выучил наизусть :)

Разумеется, как минимум хорошо ознакомился. Не месяц же назад занялся. А, кажись, год где-то.

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

Если принять истинность сего выражения, то получается, что гейм-девелоперы (хотя бы девелоперы движка игры) «действительно» (мера) не знают C++.

bobivi
() автор топика

«C++ я изучил полностью» звучит как фраза «Я знаю Кунг-фу!» из матрицы )))

Значит вы еще не изучили C++. Кроме того - знание C++ не даёт навыков реальной разработки. А получить эти навыки проще в Windows с Visual Studio:

  1. Море документации и примеров по работе с MS SDK (в linux конечно много документации, но большинство все же читается из исходного кода)
  2. Привычное (для пользователя Win) окружение
  3. Удобный (опять же для пользователя Win) редактор исходных кодов
  4. Возможность настройки проекта через GUI
  5. Отладка гораздо удобнее, чем в gdb (для новичков)

MS даёт вам комбайн в виде редактор+компилятр+отладчик+... Этакий набор 100 в 1. В linux такого комбайна не будет (да он и не нужен).

Если вы не занимаетесь профессиональной разработкой и ваши проекты это хобби - идти в разработку на linux стоит в том случае, если вам не хватает понимания работы ОС «изнутри». У вас будет доступ к исходным кодам большинства подсистем и возможность «пощупать» их под отладкой.

Если уж хочется linux, но есть сомнения - попробуйте mingw или cygwin. Поставьте vim под windows, настройте его под себя, попробуйте написать там пару тысяч строк кода и собрать в mingw+gcc.

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

Спасибо за содержательный ответ! :)

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

Если принять истинность сего выражения, то получается, что гейм-девелоперы (хотя бы девелоперы движка игры) «действительно» (мера) не знают C++.

Так и есть. 90% веселья в графическом движке это работа с API рендеринга (считай, что чистая сишечка) и алгоритмика с оглядкой на оптимизацию под конкретную архитектуру.

В итоге обычно от плюсов остаётся только «Си с классами». Либо вообще получается сишный движок с объектной мордой.

melkor217 ★★★★★
()
Последнее исправление: melkor217 (всего исправлений: 1)

набежали виндузятники, линукс не советуют, вообще обнаглели :)

Главный плюс, который тебе даёт GNU/Linux - возможность создавать свободное программное обеспечение на свободной операционной системе свободным компилятором и прочими инструментами

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

создавать свободное программное обеспечение на свободной операционной системе свободным компилятором

Давно не слышал столько дифирамб в сторону FreeBSD :3

mix_mix ★★★★★
()

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

Если не секрет, что это? Это запрещает работать? Пару лет рабочего опыта не стоит выкидывать на свалку, да и деньги лишними не бывают.

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

Если не секрет, что это?

Сдаю квартиру во второй столице, а сам переехал поближе к любимым душою местам, да и дешевле тут намного все. На эту разницу и не работаю.

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

Не, не запрещает. Но в здешних местах немного вакансий для программистов. Да и знаю я всего лишь сам язык (не знаю как грамотнее сказать), стандартную библиотеку, Boost немного и имею столько же опыта. Маловато для трудоустройства, я думаю. Потому и решил учить самому (не завися от задач работодателя, не тратя силы на то, что по сути мне не нужно типа общения с коллегами, дороги туда-обратно и всего в таком духе), пожалуй, быстрее будет. Не хочется же вечно ничего не делать :)

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

Главный плюс, который тебе даёт GNU/Linux - возможность создавать свободное программное обеспечение на свободной операционной системе свободным компилятором и прочими инструментами

Звучит немного фанатично, если честно :-D

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

В linux такого комбайна не будет (да он и не нужен).

Обоснуй. Или только тебе не нужен?

Обосную: Попытка создать такой комбайн приводит к монстрам вроде Eclipse - прожорливая IDE по всем характеристикам уступающая Visual Studio (за исключением возможности запуска под linux, и то это заслуга java разработчиков). К тому же никто не станет писать свой gdb - так что это уже не комбайн, а набор готовых инструментов разработчика. «Готовых» - в данном случае приводит к некому усреднённому шаблонному решению, не всегда удобному для конкретных задач. С учётом того, что linux сам по себе - огромный конструктор - никто не мешает создать собственный набор, мне, например, гораздо удобнее использовать Vim с плагинами, чем запускать Eclipse и тыкать мышкой.

Я ничего не имею против IDE под linux, более того на моей рабочей машине установлены Eclipse, QtCreator и CLion - каждый хорош в чем-то конкретном (напр. Esclipse умеет работать c TFS, в QtCreator удобно отлаживать мелкие баги, а CLion даёт доступ к gdb-консоли при отладке), но сделать 1 продукт, совмещающий все хотелки - это фантастика.

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

Судя по его комментариям... не нужно :)

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

Я правильно понимаю, что комбайны не нужны, потому что в мире линукса нет ни одного нормального комбайна?

melkor217 ★★★★★
()

Попробуй GNU Emacs

ados ★★★★★
()

Их нет.

Ты бы еще на PL/I программировать учился.

LongLiveUbuntu ★★★★★
()

C++ я изучил полностью
теперь нужна практика написания собственных проектов и изучение популярных библиотек
Windows 8.1 с VS2012 стали меня разочаровывать

LOL

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

Кроме того - знание C++ не даёт навыков реальной разработки.

true

А получить эти навыки проще в Windows с Visual Studio:

false

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

Разумеется, как минимум хорошо ознакомился. Не месяц же назад занялся. А, кажись, год где-то.

год где-то

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

unt1tled ★★★★
()

Уж очень удобная и продвинутая отладка в VS, да и умеет она много всего... есть такое в свободных аналогах?

Есть, но не в таком виде, как в VS. Больше подобно WinDbg, т.е. мощно, но требует освоения.

Deleted
()

Изучи лучше С. Поставь vim или emacs.

Hertz ★★★★★
()

Если ты пишешь под венду в первую очередь, то тебе придётся писать под вендой.

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

Нет - не меньшую. GNU/Linux имеет гораздо большую производительность при прочих равных условиях. Вот только производительность в сабжевом случае определяется даже не самой ОС как таковой в данном случае, а приложениями.

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

EXL> В плане GUI, как бы печально это не звучало, но да, меньшую.

И почему я не удивлён такому бредовому комментарию?..

Ах да!

EXL ★★ (24.03.2015 16:06:56) X11-хейтер

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

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

Геймдевелоперы современные зачастую C++ и не знают - у них есть готовый движок, который они берут.

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