- Почему программисты используют Linux?
- Требовательность к ресурсам в ОС Linux
- Открытый исходный код
- Безопасность
- Подходит для программистов
- Почему Linux лучше подходит для программирования?
- 1. Безопасность
- 2. Менеджер пакетов
- 3. Нет надобности в перезагрузки
- 4. Программы из коробки
- 5. Производительность
- 6. Кастомизация
- Заключение
- Расскажите все про Linux программисту C++
Почему программисты используют Linux?
Требовательность к ресурсам в ОС Linux
Используется она из-за того, что имеет очень гибкие и обширные настройки, а также из-за своей стабильной работы. Кстати не только программисты используют Linux. Ос Android основана именно на ядре этой системы. Так что, можно сказать, все кто используют аппараты на Android используют Linux. Linux очень надежная и стабильная система. Не зря ее используют на высоконагруженных серверах. Linux очень сложно «подвесить», если какое-то приложение зависло, то достаточно убить процесс данного приложения, система же при этом продолжает стабильно работать. Linux не требует постоянных перезагрузок компьютера, даже после обновлений системы (кроме обновления ядра [в будущем и это не потребует перезагрузки]). Установка и удаление программ, драйверов также не требует перезагрузки системы. Linux не «кушает» память. Я много раз замечал, что если Windows оставить без перезагрузки на неделю, то рано или поздно он начинает сильно тормозить. Linux же прекрасно работал у меня и месяц и полтора без перезагрузки. Конечно, много в данном случае зависит от того, какие программы «отъедают» память, но факт остается фактом. Советую так же почитать 5 заблуждений о Linux.
Открытый исходный код
Представьте, вы покупаете автомобиль, но вы не можете увидеть, что находится под капотом? Аналогично обстоит дело с тем, когда вы используете систему под управлением Windows. Тем не менее, в отличие от Windows, Linux имеет полностью открытый исходный код. Вы можете посмотреть исходный код Linux, что является огромным плюсом. Я знаю, что большинство пользователей вовсе не обращают внимание на то, имеет ли система открытый код или это проприетарное ПО с закрытым кодом, для меня открытый код в Linux, это самая важная особенность при использовании GNU / Linux.
Доступность исходных текстов Linux дает возможность использовать и модифицировать код по своему желанию. Можно в любой момент исправить какие-нибудь ошибки или недочёты системы, а также расширить её функциональность, путём написания дополнений или программ, работающих под ее управлением. На данный момент вокруг Linux сформировалось огромное сообщество программистов, которые постоянно усовершенствуют систему. Они разрабатывают новые версии и разновидности данной ОС, пишут самые разнообразные программы, работающие под Linux.
На начальном этапе Linux бесплатно разрабатывался только энтузиастами-добровольцами, но с успехом Linux и его массовым коммерческим использованием дорабатывать ОС и вносить свой вклад стали и компании, со временем став значительной силой. Подавляющее большинство ПО в современных дистрибутивах по-прежнему доступно по свободным лицензиям, как правило, за исключением небольшого количества проприетарных компонентов. В 2008 году расчёты показывали, что для того, чтобы «с нуля» разработать систему, аналогичную Fedora 9, потребовалось бы затратить 10,8 млрд долл. Совокупная себестоимость ядра Linux оценена в более чем 1 млрд евро (около 1,4 млрд долл.). Только за 2008 год себестоимость ядра Linux увеличилась на 225 млн евро. В системе Linux воплощён труд в эквиваленте 73 тыс. человеко-лет.
Безопасность
В Linux практически нет вирусов. В отличие от MS Windows, имеющей множество «бэкдоров», само построение операционной системы исключает работу вредоносных программ. И по этому вы можете обойтись без антивирусных программ, тормозящих компьютер и мешающих работать. Не нужно все время обновлять антивирусные базы и проверять жесткий диск на вирусы, теряя бесценное время. Это именно так, Linux так устроен, что делает его безопасной операционной системой. В целом, процесс управления пакетами, работа с репозиториями, и много других функций позволяют использовать более широкие возможности, что придает Linux больше безопасности, чем Windows.
После установки ОС Windows, вам необходимо скачать / купить программу защиты от вирусов, чтобы сохранить ваш компьютер в безопасности от хакеров и вредоносных программ. Однако, Linux не требует использования антивирусных программ. Конечно, существуют программные средства, например фаерволы, которые помогут вашей системе быть защищенной от угроз, но в большей степени в этом нет необходимости если вы используете компьютер лишь для работы, игр, просмотра фильмов и серфинга по сети.
Подходит для программистов
Linux поддерживает практически все основные языки программирования (Python, C / C ++, Java, Perl, Ruby и т.д .). Кроме того, он предлагает широкий спектр приложений, используемых для программирования. Терминал Linux превосходит в возможностях командную строку. Вы можете найти много библиотек, разработанных изначально для Linux. Кроме того, многие программисты отмечают, что менеджер пакетов в Linux, помогает им установить большинство программ легко и просто. Тут можно почитать о аналогах программ Windows для Linux. Интересно, что возможности сценариев BASH также является одной из наиболее убедительных причин, почему программисты предпочитают использовать ОС Linux. Linux имеет встроенную поддержку SSH, который поможет вам легко управлять вашими серверами.
Источник
Почему Linux лучше подходит для программирования?
Многие задавали мне вопрос почему же программисты предпочитают Linux и почему он очень популярен среди программистов. На самом деле на то существует много причин и читая отзывы в интернете (особенно в зарубежных странах) я лишний раз убедился в этом.
Однако я постарался упростить статью и собрал наиболее общепринятые причины, почему Linux популярен среди программистов. Поэтому в этой статье я приведу топ 6 причин почему многие программисты так ценят операционную систему Linux.
1. Безопасность
Первая причина — это конечно же безопасность. Linux имеет тенденцию быть более безопасной системой и это факт, так что вам не понадобится устанавливать дополнительное антивирусное ПО и вообще в связи с тем, что Linux менее популярен среди общего количества пользователей компьютеров, соответственно он менее подвержен вирусным атакам.
Отсутствие необходимости установки антивируса значительно упрощает жизнь разработчикам. Вам не нужно платить за лицензию и антивирус не съедает системные ресурсы компьютера.
Причина безопасности Linux — это то что данная операционная система с открытым исходным кодом. Это означает, что любой желающий может посмотрите исходный код системы. Те кто не хорошо знаком с этой концепцией может подумать что, ну если исходный код системы доступен всем, то любой желающий сможет просмотреть его и найти уязвимости или баги которые приводит к уязвимостям и создадут для этого вирус. Это логично и отчасти они будут правы, однако на самом деле все происходит чуть иначе.
Поскольку Linux популярная открытая операционная система и наверное является одним из основоположников современной философии open source, то есть открытости, многие скажем «добрые» разработчики найдя уязвимость, обязательно дадут инициативу по его исправлению или как минимум сообщат разработчикам системы об этом. В итоги если определенно количество «плохих» людей ищут уязвимости из исходного кода Linux и захотят сделать вирус, найдутся ещё больше «хороших» людей которые захотят исправить данную уязвимость и помочь всем пользователям данной системы.
Из этого всего можно сделать вывод, что Linux действительно безопасная операционная система.
2. Менеджер пакетов
Вторая причина в том, что Linux намного улучшает рабочий процесс для программистов с помощью менеджера пакетов встроенный в почти каждый дистрибутив. Это полезно для программистов с точки зрения эффективность, то есть если вы хотите установить новую программу или обновить уже имеющуюся, просто введите sudo apt (если у вас например ubuntu или linux mint) и напишите соответствующую команду. И всё это происходит буквально за пару минут.
Например на Windows данный процесс является относительно кропотливым, так-как все это вам нужно будет делать вручную.
Допустим, что вы хотите установить программу VLC media player. Для этого вам сначала надо будет открыть браузер, затем в поиске набрать скачать vlc, найти официальный сайт (так-как в пиратках часто бывают вирусы), далее нажать на кнопку скачать, после это открыть скачанный .exe файл и выбрать место для установки программы. После установки многие программы потребуют перезагрузки, чтобы изменения вступили в силу. И уже после ожидания перезагрузки вы полноценно сможете воспользоваться программой.
Конечно можно будет установить менеджер пакетов chocolatey, однако новичку данный процесс покажется сложным.
С дистрибутивами Linux вы получаете менеджер пакетов прямо из коробки, то есть после установки менеджер пакетов уже установлен и настроен.
Теперь допустим, что ты хотите сделать то же самое, но в Linux. Все, что вам нужно сделать, это открыть окно терминала и ввести sudo apt-get install vlc и нажать на Enter. И все после ожидания установки вы можете полноценно ей пользоваться. При этом вы уверены что скачали программу из надежного источника.
Данный фактор очень важен для программиста, так-как сегодня разработка лишь одного проекта требует скачивания нескольких программ.
3. Нет надобности в перезагрузки
Отсутствие перезагрузки, это то, о чем я говорил в предыдущей главе, когда я объяснял, как устанавливаются программы на Windows. То есть в большинстве программ, после установки требуется перезагрузка для полноценной работы с программой.
Данный неудобный процесс не относится к операционной системе Linux и это я думаю действительно важно для разработчика из-за того, что программисты обычно устанавливают много разных программы во время процесса разработки. Перезагрузка системы сбрасывает оперативную память, поэтому все процессы и программы соответственно закрываются.
Думаю это одна из многих причин почему Linux популярен и среди операционных систем используемых на серверах. Linux для серверов построены для стабильной и надежной работы и имеют тенденцию работать годами без сбоев или даже перезагрузок.
4. Программы из коробки
Четвертого причина это то, что большинство Linux дистрибутивов поставляются со множеством действительно мощных и нужных программ, предустановленными инструментами, как например grip, wget, cron и многими другими.
Плюс ко всему, большинство из них это cli утилиты или программы для командной строки, которые весят относительно мало и не нагружают систему.
Конечно данный фактор является отчасти индивидуальным, так-как какие программы нужным именно вам, зависит от ваших предпочтений и не факт оно будет уже предустановлено. Однако думаю наличие стандартного набора пакетов программ, является универсальным решением для всех.
Kali Linux, например поставляется с большим набором хакерских утилит, которые нужны системный специалистам для тестирования программ, сети и т.д.
5. Производительность
Пятая причина — это производительность. Под этим не имеется ввиду, что linux обязательно работает быстрее, чем любая другая операционная система, однако во многих случаях он очень легкий и совместим практически с любой железой, поэтому очень часто вы можно взять свой старый и медленный ноутбук и установите на него какой-нибудь легковесный Linux дистрибутив. Поэтому думаю любой ноутбук под управлением Linux может прослужит намного дольше, чем работающая на Mac OS или Windows.
6. Кастомизация
Думаю эта причина, по которому многим пользователям нравится Linux. Само ядро Linux позволяет создавать отдельные дистрибутивы, что в определенной степени тоже является кастомизацией, так-как многие дистрибутивы создавались для определенных задач.
Также есть возможность менять среду рабочего стола. Самой популярной скорее является среда GNOME, которая установлена по умолчанию во многих дистрибутивах. Среда KDE Plasma, благодаря своему внешнему ввиду и простоте, набирает обороты и многие пользователи Linux устанавливают данную среду.
Кастомизация также проявляется в системных настройках дистрибутивов и во внешнем виде интерфейса, таких как цветов, иконок и т.д.
Заключение
Данный список я составил из личных наблюдений, поэтому эти причины являются сугубо субъективным мнением. Конечно в большинстве случаев выбор операционной системы является личным предпочтением любого программиста или обычного пользователя.
Источник
Расскажите все про Linux программисту C++
Какое-то время назад я работал с Red Hat Linux. И вот после большого перерыва мне требуется снова вернутся в пингвиний мир, но столько воды утекло! Может соберем все вместе здесь эдакий FAQ для программиста C++, но чайника в Линуксах?
1. В чем различие между основными популярными дистрибутивами Linux?
> Основная разница это система пакетов. (deb, rpm и т.д.) Также под какие архитектуры выпускается дистрибутив. (sl_bug)
> Основные отличия: Менеджер пакетов, набор ПО, настройки по умолчанию. (Evgeny_Shiryaev)
> (в дополнение к Evgeny_Shiryaev) еще иногда отличаются способом конфигурации сервисов, стартуемых при загрузке. Пример — /etc/conf.d/net в Gentoo и /etc/network/interfaces в Ubuntu. Также для каждого дистрибутива характерен свой способ задания списка стартуемых при загрузке сервисов. Иногда различаются способом организации самих конфигурационных файлов (один файл или кучка файлов и макрос, их собирающий). (xtreme)
> В пакетной системе, в инсталляторе, в системных скриптах. В версиях ПО и наборе ПО по умолчанию. (Arceny)
2. Почему следует предпочитать системы BSD перед системами Linux?
> Кто вам это сказал? Выбирать нужно по потребностям. (sl_bug)
> Лично я не вижу весомых преимуществ BSD-систем перед Linux-системами. (Evgeny_Shiryaev)
> Холиварный вопрос. Выбор системы зависит от поставленной задачи. Однако, в BSD более продуман сетевой стек и присутствуют такие полезные шняжки, как accf_http и accf_data. В Линукс я пока не видел замены кроме TCP_DEFER, которая работает несколько иначе. (xtreme)
3. Существуют ли полностью бесплатные дистрибутивы Linux?
> Да, причем их большинство. (Evgeny_Shiryaev)
> Я бы сказал, что бесплатно-доступных дистрибутивов — абсолютное большинство. (xtreme)
> Да, большенство. Debian или Ubuntu. Или Fedora. Или Gentoo. (Arceny)
4. Почему вообще дистрибутив Linux является платным, ведь он построен на базе open-source программного обеспечения и бесплатного ядра Linux?
> Обычно платной является поддержка а не дистрибутив (sl_bug)
> Плата идет не за сам дистрибутив, а за поддержку его (обновления, техсаппорт, и т.д.). (Evgeny_Shiryaev)
> Весьма существенный момент для разработчика:
В платном дистрибутиве SUSE SLES без подписки недоступны также и пакеты с исходными кодами (src.rpm = мэйнстрим исходники + дистрибутивные апдейты, патчи, спеки, конфиги).
Пересобрать пакет можно только из исходного (мэйнстрим) tar.gz (в лучшем случае — из src.rpm opensuse, с перерисовыванием зависимостей и прочими прелестями).
При этом, естественно, рушится вся система апдейтов.
И, возможно, совместимость с остальными пакетами системы,
в том числе с темже самым пакетом, поставленным из бинарников.
Скорее всего, аналогичная ситуация с RedHat и другими платными дистрибами. (qmax)
> (опять же в дополнение к Evgeny_Shiryaev) Тут надо помнить, что «открытые исходные тексты» и «бесплатно» — это все-таки разные понятия. Обычно OpenSource-лицензии не запрещают продавать продукты, выпущенные под ними или с их использованием. (xtreme)
> Техподдержка, коробка, полиграфия… Либо включенные проприентарные компоненты, удалив которые получим полностью лицензионно чистую версию. (Arceny)
> Вы имеете возможность платить за поддержку. Если хотите RHEL без поддержки — используйте CentOS. В остальном — есть Ubuntu (которая бесплатна, но появилась возможность поддержки), OpenSUSE, Fedora (здесь вообще только бесплатный вариант)). (kost_bebix)
5. Если мне требуется установить много машин с Linux есть ли лицензия, которая позволит мне один раз купить дистрибутив и ставить его на сколько угодно машин? Или опять-таки есть ли полностью бесплатный Linux?
> Можно даже не купить, а свободно скачать и поставить на любое количество машин. Но если Вы заинтересованы в поддержке, то тогда, действительно, лучше купить. (xtreme)
> По условиям лицензий Debian и Ubuntu — вы можете ставить их на неограниченное количество PC. Но в России вам придётся купить коробочную версию. По идее — достаточно одной коробки на одну компанию. (inkvizitor68sl)
> Да все они (из популярных): Fedora, Ubuntu, Linux Mint, OpenSUSE, Mandriva, CentOS, Debian, Slackware, Arch, Gentoo являются бесплатными. (kost_bebix)
6. Есть ли достойные дистрибутивы «от отечественного производителя»?
> ALT Linux возможно (sl_bug)
> На этот вопрос нельзя ответить объективно. Лично на мой взгляд нет. Однако если будете смотреть на «наши» дистрибутивы, смотрите на ALT Linux. (Evgeny_Shiryaev)
> есть. InfraLinux например. Но в большинстве случаев они платные. (именно достойный) (inkvizitor68sl)
7. Являются ли дистрибутивы Линукс совместимыми на уровне бинарных исполняемых файлов? Можно ли взять файл из Ubuntu и запустить его на Fedora, на FreeBSD?
> можно из Ubuntu 32bit на Fedora 32bit (sl_bug)
> Дистрибутивы Linux да. На FreeBSD можно запустить бинарники Linux, однако не напрямую. (Evgeny_Shiryaev)
> Обычно — да. Трудности возникают, когда бинарник использует некоторые подключаемые библиотеки, а исходная система (от которой бинарник) и целевая (где запускается бинарник) имеют разные версии данных библиотек, в которых разные функции могут, к примеру, называться по-разному, либо вообще отсутствовать. Но, статически собранные бинарники вполне себе переносимы. Примеры — Opera, Adobe-Flash-плагин для браузеров, Skype и т.д.
В FreeBSD же совместимость с линуксовыми бинарниками достигается за счет эмуляции для них линуксового окружения, для чего, как я помню, используются обычные линуксовые библиотеки от Fedora, плюс спец-модуль в ядре, позволяющий это дело. (xtreme)
> Линукс — да, если есть нужные shared-libraries. Бинарная совместимость Linux >> BSD существует. Но тупо взять пакет и запустить в большенстве случаев не получится, подробностей не знаю. (Arceny)
> большинство бинарников запустятся в любом дистрибутиве. Некоторые программы распространяются именно в таком виде (firefox с сайта например). Или basket. (inkvizitor68sl)
> Редко. Смотря какой файл. Есть утилита Alien, которая из .deb-пакетов делает .rpm, но это костыль. Если пишешь на C++ — почитай про «Opensuse Build Service» — это типа место, где ты свой проект будешь удобно собирать сразу под все системы какие необходимо. (kost_bebix)
8. Каким образом при написании C++ программ обеспечить максимальную совместимость между Линукс-дистрибутивами на уровне исходных кодов? Какие библиотеки следует использовать?
> Широко распространённые, например Qt. OpenSource. Включенные в основные репозитории. (Arceny)
> Практически любые, но я лично тепло отношусь к Qt, которая есть и в Виндоус и МакОС. А так — гугл всегда найдет что-то абстрактное от дистрибутива для каждой конкретной задачи. (kost_bebix)
> Ах да. И, собственно, о главном — об отличии написания под виндоус. Все просто — под виндоус ты писал программу, которая использовала некоторые библиотеки — ты эти библиотеки пихал прямо в сборку программы и собирал один большой кусок. В линуксе же принято иначе, — ты пишешь программу, а затем создаешь .deb/.rpm, где описываются библиотеки и их версии.
Профит:
— в линуксе если у меня уже установлена эта библиотека — не нужно ничего качать
— если в библиотеках находятся уязвимости — они обновляются и все, кто их использовал защищены
Проблемы:
— если дистрибутив решит использовать новую версию (ветку) библиотеки — все может сломаться. Поэтому надо пилить (если нужна максимальная кросс-дистрибутивность) (kost_bebix)
9. Допустим требуется какое-то нестандартное решение, например, какой-то специальный вызов ядра. Каким образом можно узнать, что данная система поддерживает этот вызов?
> Экспериментальным путём или спросив в списках рассылки, форумах, у разрабов, _почитав документацию_. (Arceny)
> Если есть ядро — значит есть и функция. Дальше надо смотреть на конкретику. (kost_bebix)
10. Есть ли хорошие альтернативы gcc для разработчика на C++? Всегда ли gcc входит в состав дистрибутива?
> 10. icc, всегда (sl_bug)
> Нет, не всегда. Свободных альтернатив не знаю. (Arceny)
11. Какие IDE и под какими оконными менеджерами (или как это называется?) вы используете для программирования на C++? Какой отладчик?
> IDE — Eclipse вроде бы популярен (со слов друга-программиста на C++ и Java, на истину в последней инстанции не претендует); отладчик — gdb. (xtreme)
> gdb — отладчик. к нему много разных обёрток.
Например для программирования с использованием GUI тулкита Qt использую QtCreator.
А вообще разных IDE много. Google. (Arceny)
> Если человек задаёт к вопросу об IDE отдельно вопрос про отладчик, он вряд ли получит что-либо кроме vim+gdb. Под IDE обычно подразумевают среду, в которой уже настроены трассировки с помощью горячих клавиш, просмотр отладочной информации и пр. В этом случае я бы порекомендовал Qt Creator, KDevelop, Code::Blocks, Eclipse или NetBeans. (Lockal)
> В Eclipse не очень удобно делать отладку, да и подтормаживает. NetBeans тормозит. KDevelop — фигня. Qt Creator более-менее (юзать можно).
Достойной Linux-альтернативы VS нет 🙁 Особенно что касается удобства отладки. (GooRoo)
> KDE4.3.1 + QtCreator — хорошее решение. Я использую Emacs, на C++ пишу нечасто. (kost_bebix)
12. Какие еще инструменты для C++ используются. Слышал про valgrind как хороший memory-leak детектор.
> ИДЕ — KDevelop, Eclipse, есть отладчик gdb. Дальше надо тоже конкретно смотреть «что надо». (kost_bebix)
13. Какая русская кодировка используется в Линукс системах «по умолчанию»? Поддерживает ли ядро Линукс UNICODE? На каком уровне?
> UTF-8 сегодня — это умолчальная. Сделать умолчальной практически без труда можно любую кодировку, хоть CP866. (xtreme)
14. Какое наиболее доступное решение, чтобы запустить Linux на машине с Windows? Как насчет portable Ubuntu? Кто-нибудь пользуется, можно ли вести полноценную разработку?
> Самое лучшее решение — запустить Linux внутри виртуальной машины. Я рекомендую для этого использовать VirtualBox.
> Вам уже посоветовали VMWare и VirtualBox. Последний бесплатен (xtreme)
> LiveCD ) а вообще — virtualbox. Wubi\portable Ubuntu portable — не лучший вариант. (inkvizitor68sl)
> Что значит запустить Линукс? Самое простое решение — удалить Виндоус и установить Убунту (kost_bebix)
Вопросы пользователям-программистам C++.
a1. Каким дистрибутивом лично Вы пользуетесь и почему выбрали именно его?
> Debian, привычка. Очень давное начал им пользоваться и менять не хочется. Пробовал gentoo (прикольно, но все из исходников это долго), centos/fedora (не люблю rpm) (sl_bug)
> Ubuntu. Меньше всего проблем с настройкой дистрибутива, хороший менеджер пакетов, часто обновляется. Еще неплохи (для пользователя) Fedora, OpenSUSE и большинство производных Ubuntu. (Evgeny_Shiryaev)
> Debian, Ubuntu. Последний работает из коробки почти со всем железом, первый — просто хороший неперегруженный дистрибутив, который я ставлю на сервера и на котором развёртываю только необходимый набор пакетов. (Arceny)
> Mandriva Linux. Так сложилось исторически 🙂 Некоторые считают его дистрибутивом для домохозяек, и в чем-то они правы 🙂 (GooRoo)
> Убунту. Просто из-за популярности все разрабатывается (и так и должно быть) и пилится в первую очередь под него. (kost_bebix)
a2. С помощью каких инструментов ведет разработку (если ведете)?
> vim, gcc, gdb (sl_bug)
> Qt + Qt Creator, ибо лучше ничего нет, а до vim c emacs еще не дорос. (GooRoo)
> Наверное вел бы с помощью QtCreator, если бы не подсел на Емакс. (kost_bebix)
a3. Что устраивает и что не устраивает в вашем Линуксе как программиста С++?
> Не нравится: модель межпроцедурной оптимизации в gcc (не ускоряет), стандартные оптимизации -O2 (приходится свои дописывать, либо -O3), каскадные сообщения об ошибках в boost и подобных библиотеках. (Lockal)
> Linux — лучшая операционная система в которой я работал, но для разработки на С++ по сравнению с виндой совсем непригодна. Хотя при желании… 😉 (GooRoo)
Если нетрудно — перед ответом ставьте номер вопроса, на который отвечаете. И не холиварьте чрезмерно (я знаю что хочу невозможного :).
Источник