Появилась масса вопросов на которые надо получить ответ, в поиске почитал похожие проблемы, но не нашел нужных ответов.
Собираюсь в ближайшем будущем переходить на Linux, Windows уже надоедает, чувствую что являюсь потребителем и никаким образом не могу повлиять на работу своего компьютера, являюсь так сказать наблюдателем.
Вопросов масса, хотелось бы более развернутые ответы получить, если конечно вам не трудно.
Я изучаю C/C++ в основном конечно C++, есть некоторые вопросы связанные с ними. Так как я хочу переходить с Windows на Linux, не знаю точно что могу потерять, есть IDE Visual Studio, она мне не очень нравится. WinAPI я не изучаю и прочие вещи, да есть C# и так далее, а там же и разработка на Unity и прочее. Я допускаю такую вероятность что мне придется работать с C#, но я пока точно не уверен для чего, как я знаю хорошей IDE под него пока нет, да есть наработки, но это все не важно, так как моя главная цель это C++.
Так как я нацелен на переход в ОС Linux, интересуют такие вещи как подбор IDE, компиляторы и т.д. Я смотрю сейчас в сторону CLion, но не понимаю некоторых вещей, например CMakeLists(если можете объясните что это для чего и как), MinGW и Cygwin и другие такие вещи. Про MinGW, я более менее понял что то вроде сборщика который работает и под винду и под линукс, с Cygwin пока никак. Так же не очень понятно как разрабатывать программы с интерфейсом в данной IDE, консольные то понятно, но вот оболочка? По факту вопросы с IDE как для CLion так и для Qt будут одинаковыми, правда в Qt все понятно, как с конструирование там и со всем остальным. Понятное дело что если я буду разрабатывать на Linux, это не будут только какие то программы, но и игры и прочие вещи. Могу ли я что то потерять при разработке на Linux для Windows или наоборот на Windows для Linux? Точно не знаю работает ли DirectX под Linux. С компилятором вроде тоже, вроде как GCC бесспорно.
Теперь про сам Linux, на что стоит обратить внимание и как выбрать для себя систему, в игрульки особо играть не собираюсь, а даже если во что то буду то есть Steam, сильно ли потеряю в производительности по сравнению с Windows? Даже если так то есть Wine. Опять же ничего не мешает поставить рядом винду, но это вряд ли.
1) GUI под линукс можно делать, например, на Qt. Соответственно IDE - QtCreator. Еще вариант - wxWidgets.
2) Возможные IDE - QtCreator, Code::Blocks, Eclipse, CLion. Ну на самом деле их больше, но эти - более friendly при переходе с винды.
3) Забудьте о Unity и C# под линуксом. По крайней мере пока что. Сейчас c# - в полном смысле работает только на винде. IDE для c# - VisualStudio :-)
4) По производительности настроеный линукс лучше ненастроенного виндовс. Это 100%. Но первое время вы потеряете в удобстве. Я лично так и не смог перейти с VisualStudio на линуксовые IDE и не нашел для себя удобного аналога TotalCommander. Плюс сразу забывайте о фотошопе, если вам это важно. Есть конечно gimp, но он полностью не заменит фотошоп.
5) Игры под линуксом можно разрабатывать скорее только на всяких SDL и прочих низкоуровневых openGL движках. Никаких Unity, Marmalade и прочего. Разрабатывать под web - можно спокойно под линуксом. Standalone-приложения - тоже, на Qt.
А, ну разработка под Android на линуксах более чем возможна, забыл. Но вот по поводу игр под дроид - опять таки не на популярных двиглах - их просто нет под линукс.
Быстро не получится.
Сначала почитать пару-тройку книжек про то, как вообще в линуксе работать. Еще неплохо бы Advanced Bash Scripting почитать. Получается, минимум полгода уйдет на литературу.
Далее обкладываемся гентушными хэндбуками, гуголом и т.п. и ставим генту.
Помаленьку настраиваем и через год-два уже на мастдайку вообще не потянет! Главное — понять суть UNIX-way, тогда станет ясно, что мастдайка — это даже не гнилая операционная система, а некачественная прошивка для игровых приставок!
Чистый winAPI сейчас мало кто использует. Его знать конечно надо, чтобы понимать процессы, происходящие в windows-приложениях. Но уже дааавно есть замены чистому winAPI. Начиная от древнего MFC, и заканчивая .NET, Qt и т.д.
GavriKos: А потом начинается "Мое приложение не работает", "никаким образом не могу повлиять на работу своего компьютера", и "Hello World требует 4 гига библиотек". Документация по деплою Qtшных софтин многие вопросы не освещает. Формат .NET-исполняемых файлов - лютый гвоздец из-за экономии пары килобайт. Скорость работы "чистого" кода выше. У всего свои плюсы и минусы.
Я же сразу написал - знать winApi - надо. Писать на нем - не стоит. Да, таковы современные тенденции. Разработка софта на winApi увы будет неконкурентноспособна. А это важно, если конечно пишутся не лабы в ВУЗ и не самоделки для 100 человек.
Артем Бирюков: количество функций в WinAPI - тысячи, никаких книг не хватит. При наличии MSDN книги, в общем-то, и не нужны: базовые "направления" описаны более чем хорошо.
GavriKos: "...дааавно есть замены чистому winAPI. Начиная от древнего MFC...". Зачем вводить в заблуждение словами "замена"? ТС и так плывет по полной... Может таки "обертка" над WinAPI? И как он будет знать WinAPI, если не будет его использовать?
Артем Бирюков: На самом деле книги по MSDN есть, но они уже давно не в продаже и не на русском. Обычно освещаются какие-то конкретные направления: системное программирование, gui... Все что я встречал на русском это либо перевод, либо перепечатка MSDN. Раньше можно было поставить MSDN локально и он летал... сейчас же, в VS2013, он окончательно стал тормозным и особой разницы с online, по скорости доступа, практически не видно. Так что msdn.microsoft.com наше все.
Я думаю что задача не совсем правильно поставлена. Нужно определиться с целью. Целью является изучение С, или переход на линукс?
Я так понимаю что вы сейчас всё ещё на winOS. Предлагаю самый безболезненный подход к переходу. Установите виртуальную машину, на ней создайте с десяток разделов, и поставте туда популярные варианты Линукс. В паритете можно графику Gnome и KDE. Разница среди систем будет в репозитарии (что-то вроде Андроид маркета, но где в основном всё бесплатно). Попробуйте установить любимый видеопроигрыватель, походите по вэб страницам, выполните просто привычную вам работу но в новой ОС. И посмотрите с которой вам будет удобнее, менее геморнее и где будет больше документации.
Точно так же выбирайте и IDE, зачастую в репозитарии есть таких штук 3-5 рекомендуемых. Установите их, погоняйте их, соберите в конце концов "Привет Мир". Так вы столкнётесь с первыми зависимостями и камнями. И там где будет проще решать - ту систему и ИДЕ и выбирайте.
Для азов программирования на С, обычного Vim и make хватит. Большие проекты тяжелее уже писать со всеми зависимостями.
Меня настораживает другое. Если вы хотите изучать С#, соответсвенно будете ориентироваться на платформы Windows и .NET. То есть вам всё равно нужно будет по них собирать и тестировать. А значит иметь виндоус где то на виртуальной машине. Отладка будет сложнее, когда малейшую сборку, нужно будет таскать с раздела на раздел.
Спасибо за совет, да я уже использую сейчас виртуалку для поиска своей системы. С IDE скорей всего я либо буду использовать Vim либо Emacs, но вроде как Vim проще насколько мне говорят. Графика опять же не самое главное для меня, так как уже пользовался некоторыми системами Ubuntu, Debian, SteamOS. Сейчас смотрю в сторону Fedora, Gentoo, может быть Mint, и может быть Ubuntu, но мне там не нравиться интерфейс, еще есть неплохой elementaryOS. Не подскажите где можно глянуть репозитории под каждую ОС?
Короче я пока читал, потерял пару раз идею вопроса, поэтому скажу следующее. Если вы собирали под виндой свои программы с помощью MinGW, то особых проблем со сборкой под линуксом не будет, так как это и есть GCC портированный под винду. Что касается IDE - выбор есть всегда. Можно, наверно, и Eclipse с плагином под C++ настроить, можно и QtCreator использовать или Netbeans. Я рекомендую QtCreator. По поводу C# - есть MonoDevelop, сам не пробовал, но вроде как норм. По поводу DirectX - скорее всего придется переходить на OpenGL, если хотите кроссплатформенности.
Мысли в голову сейчас пришли просто не успел их обработать грамотно. Смысл такой, что я хочу свалить с винды и понять как это повлияет на то, чем я хочу заниматься.
Нашел удобным msys2 + Clion под Windows, и Arch Linux + Clion. gcc 5 есть в и там и там. pacman/pacaur оказались для меня очень удобными (pacman используется как в Arch так и в msys2). Поиск и установка пакетов как assimp, sdl2, opencl, итд очень удобна, и все (отмечу, что в msys2 пакетов меньше, но для разработки достаточно) работает без проблем. msys2 это форк cygwin, но более демократичный (на мой взгляд, со стороны лицензирования), хотя и урезанный. Clion, хотя и не бесплатный, но для новичка, как я, хороший выход кросс платформенной IDE. cmake очень нравиться, сборка моей программы без проблем работают и под windows и linux. Прошел vimtutor и этого хватило для git submit . . Конечно DirectX поменять на OpenGL и OpenCL и посмотреть на ОpenMP. Удачи.