Linux, Windows или macOS: что выбрать программисту — отвечают эксперты
Linux, Windows или macOS: что выбрать программисту — отвечают эксперты
У каждой ОС есть свои плюсы, минусы и особенности, и как правило программисты выбирают ОС на основе своих предпочтений и представлений. Но что, если отбросить личные симпатии и попытаться взглянуть объективно: какая ОС даёт больше всего преимуществ программисту? Мы задали этот вопрос экспертам, и вот что они ответили.
Тельман Мажлумов , старший backend-разработчик .defa
Выбор ОС в первую очередь зависит от того, в какой области разработчик работает, а ещё это дело привычки и субъективных представлений об удобстве. Я веб-разработчик и успел попробовать несколько операционных систем. Вот мой личный рейтинг удобства ОС именно для разработки веб-решений.
Первое место — macOS. Практически всё идеально, могут возникать проблемы с Docker, поскольку не всегда оптимально используются ресурсы (бывает >= 70 % CPU). Но это мелочи. macOS — это практически идеальный баланс между ОС для работы и для повседневных задач.
Ещё одно первое место — Ubuntu/Mint (и другие Linux-дистрибутивы). Именно для разработки я считаю это семейство ОС лучшей. Из плюсов перед macOS — близость к production-окружению, «нативная» работа Docker. Из минусов — всё-таки иногда всплывают ошибки, которые без консоли не поправить (пример, проблемы со звуком), ну и софта гораздо меньше.
Второе место отдам Windows. Здесь можно спокойно вести разработку. При наличии такого софта как Docker или Vagrant многие проблемы можно легко обойти. Чего мне действительно не хватает в Windows, так это нормального терминала (ConEmu, Git Bash и другие не в счёт). Зато софта под эту ОС гораздо больше, чем на Ubuntu или macOS.
В качестве заключения отмечу, что всё-таки выбирать стоит ту ОС, в которой разработчику привычнее и комфортнее работать. Если всё в операционной системе устраивает, то переход на что-то другое вызовет лишний стресс и трату времени на изучение возможностей новой ОС. В конце концов, в ту же Windows потихоньку внедряется WSL.
Олег Степанов , инженер-программист компании ICL Services
На вопрос, какую операционную систему выбрать для программирования, в большинстве случае нет чёткого ответа, т. к. это больше субъективный выбор каждого человека: как по удобству взаимодействия с самой системой, так и с используемыми инструментами для разработки. Большинство популярных языков и сред разработки в основном присутствуют на всех платформах.
Конечно, есть немало случаев, когда выбор ограничен. Например язык программирования плохо адаптирован под конкретную операционную систему или требуется конкретная платформа для выполнения, тут стоило бы или даже необходимо использовать то, что есть.
Если ограничений нет, то, я считаю, самый правильный выбор — попробовать каждую из систем, для того чтобы решить, что же конкретно тебе удобнее. У каждой системы есть как плюсы, так и минусы: где-то удобнее разворачивать среду и работать с ней, где-то есть более удобные инструменты разработки и т. д., поэтому говорить, что для веб-разработки нужна обязательно macOS или для разработки на .net core нужен Windows, я считаю, неправильно.
Также для нашей страны актуален вопрос цены рабочей машины. Например, для многих, а тем более для начинающих, продукты компании Apple могут показаться дорогими при прочих равных. У компьютеров на Windows или Linux ценник более доступный.
Если подытожить, то если нет ограничений на выбор системы, советую попробовать все системы и выбрать ту конфигурацию системы и инструментов, которую удобно использовать именно вам.
Иван Овчинников , декан профессии «Программист С++» образовательного портала GeekBrains
В первую очередь нужно быть уверенным, что инструмент, с которым человек будет работать, удобен. А операционная система — это инструмент и ничто иное. Если говорить о выборе операционки, то неплохо было бы сразу знать, где ваше приложение будет в дальнейшем крутиться. Если человек предполагает разработку под операционную систему OS X (под MacBook, iOS, iPhone, iPad), то ему обязательно нужен опыт работы в macOS и собственно сама OS X, потому что все остальные операционки хоть и поддерживают языки Swift и Objective-C, но на довольно слабом уровне. Инструментарий разработки под OS X внутри OS X хорошо настроен и нативен.
Дальше у нас встает извечная борьба между Windows и Linux. Начинать холивар, я думаю, смысла нет. Если у пользователя есть привычка работать в Windows — то имеет смысл в этой операционной системе и оставаться, так как в принципе, 80 % задач разработки можно закрывать в Windows. Если хочется попробовать что-то другое — это, бесспорно, Linux. Желательно делать Linux на виртуальной машине, чтобы не потерять своё текущее окружение, но иметь возможность «пощупать». Очень много всякого софта для разработки написано под обе операционки, тут тоже стоит сразу оговориться, что если предполагается разработка на Android — то надо быть по крайней мере знакомым с операционной системой Linux. Необходимо представлять, что это за окружение, как оно работает, знать про открытые драйверы, системные настройки, потому что Android — это тоже Linux.
Есть специализированный стек разработки под Windows: это разработка под Active Directory, разработка разнообразных протоколов, разработка под Microsoft Office и прочие штуки. Понятное дело, что с Microsoft Office перейти на Linux будет нельзя, под него стопроцентно нужен Windows. Тут встает вопрос лицензирования. Если у человека всю жизнь был Linux, то ему не с руки покупать лицензию, которая условно стоит 8 000 рублей. Поэтому в большинстве случаев пользователи остаются на Linux.
Я, в свою очередь, несмотря на то, что веду свои уроки с макбука, активно пропагандирую Линуксы разного рода: это и всякие попсовые Debian и Ubuntu, разного рода Arch Linux, даже Red Hat и прочее, прочее. Соответственно, если у вас есть какие-то опасения, то стоит помнить, что инструментарий на Linux такой же, как на Windows, то есть все среды разработки (всё, что не касается Microsoft Visual Studio) портированы и работают кроссплатформенно. Для новичка будет несложно сориентироваться, главное, не надо сразу начинать лезть в консоль или жить в терминале и пугать себя.
Александр Сибречный , ведущий frontend-разработчик TalentTech
Выбор операционной системы, как правило, происходит на усмотрение самого программиста. Это дело вкуса — кому-то нравится macOS, другие считают Linux топовой системой. Одно важное условие: если ваш продукт будет иметь дело с iOS, то поле выбора ограничено — тут не обойтись без macOS. Иначе ничего не получится, если только разработка не идёт на удалённых серверах. Также эта система считается более user-friendly. То есть все мобильные разработчики, чьи продукты будут запущены в AppStore, не имеют другого выбора, кроме Mac.
Веб-разработка менее требовательна к ОС. Лишь два браузера – Explorer и Safari являются специфическими: первый будет работать только на Windows, а второй – на Mac. Когда разработчику нужно тестировать то, что он разработал, — ему понадобится соответствующий браузер.
Linux считается немного более сложным вариантом — она также бывает простой в использовании, но есть и «хардкор-версия», она скорее для тех, кто «пишет» драйверы и в целом больше работает с «железом». Преимущество этой системы в том, что можно собрать её целиком «под себя» и иметь над ней полный контроль. Это сложнее, требуются мозги и навыки, но использование в таком случае будет немного производительнее.
Разработка игр, как правило, происходит на кроссплатформенных системах. А вот приложения backend-разработчиков чаще выпускаются на Linux, соответственно будет удобно держать именно эту систему на своей машине разработки — это может быть и локальная машина, и нет. Часть разработчиков работает на удалённых серверах, а их локальная машина — это по факту просто интерфейс доступа.
Также если вы привыкли работать на macOS, то будет довольно трудно «переключиться» на Windows, и наоборот. То, чего на Mac можно добиться простыми действиями, на «винде» делается сложно.
В чем преимущества *nix, linux перед windows (для веб разработчика)?
1. вы получаете окружение близкое или идентичное к продакшену.
2. вы получаете внятную консоль/шел из коробки.
3. вы избавляетесь от массы вопросов типа «на локалке все работает, а залил на сервер и получил жопу» (или наоборот).
4. у вас появляется более лучшее понимание как на сервере все работает.
при теперешнем развитие технологий и производительности железа, нет необходимости себя ломать.
можно попробовать в виртуалке (docker/vagrant)/дуалбуте и самому для себя решить стоит или нет.
Нету никаких проблем.
Если только ваше конкретное используемое для ваших задач ПО нормально работает с Windows.
Например, в моем случае используется Ansible и Docker, который не поддерживается на Windows. Приходится использовать Vagrant. Это достаточно удобно. Но ресурсы все же кушает.
А так — даже Vim хорошо себя чуствует на Windows. Нативный. Не cygwin.
Microsoft это тоже понимает.
И вот уже они встроили подсистему Linux Ubuntu в Windows 10. Это не виртуализация, а именно полноценная подсистема.
И многие вещи, например, те же шрифты — в Windows работают лучше, чем под Linux.
Могут сказать — что лучше использовать для разработки ту же среду что и для production.
Но дело в том, что даже если вы сидите на Ubuntu Desktop, то ваша среда серьезно отличается от среды сервера FreeBSD, CentOS, Debian, Ubutntu Server. И для полноценного CI все равно умные дядьки категорически рекомендуют и на Linux даже использовать Docker для полноценной эмуляции.
Но ведь Docker-то можно использовать и на Windows. Правда, запускается он там подольше.
Где именно вести разработку, где вам удобнее — это ваше личное дело. Вопрос ваших предпочтений. Никаких объективных причин в наше время, когда существуют Docker, Vagrant и виртуальные машины, когда куча приложений изначально сделанных для *nix запускаются в native под Windows — нет никаких причин себя строить. Кроме любопытства — а как оно там на других системах живется.
У тех кто вас троллит есть еще одна причина: им приятно показать себя более умными. Как же — ведь Linux можно сконфигурить руками.
Или используют готовые десктопные дистрибутивы. Не зря Ubuntu так популярна.
Или если освоили ArchLinux — то построили себе совершенно убогое окружение по готовым мануалам.
Чтобы действительно набрать скиллы ручной настройки Linux — нужно огромное количество упроства и времени, чем ваши друзья, которые вас троллят, вряд ли обладают.
На деле 99% твердящих о гибкости Linux — далее чем ставить Apache и MySQL из пакетов — ничего сами и не умеют. Фактически работая в то же настроенной другими людьми десктопной среде. Но разве вы не умеете делать то же самое под Windows?
Другое дело, что разворачивать и тестировать нужно под аутентичным операционным окружением.
Неважно под Ubuntu ты сидишь или под Windows.
Лучшие практики советуют использовать полностью изолированный и независимый от рабочего места разработчика инструментарий — виртуальные машины, Vagrant, Docker, отдельные физические сервера.
В этом случае под твоей любимой ОС работает только текстовый да графический редактор. А все развертывание для тестирования и для продакшн проводится в совсем другой среде.
Используя Docker хоть под Windows ты будешь получать даже больше преимущество повторяемости рабочей среды чем тем кругом, кто советуют тебе просто перейти на Linux. Если на более слабом железе это и было бы существенно (Docker под Linux стартует быстрее), то на твоем — несущественно на чем работать.
Евгений:
Зачем? Я использую CI в полный рост.
Эмуляция серверного окружения развернута в Docker. И только там проходит и получение артефактов и тестирование и разворачивание.
Если ты не понял — в best practices, на которых опытнее меня и тебя ребята собаку съели: и под тоже Linux категорически не рекомендуется тестировать ПО локально на машине разработчика.
Пример из жизни, буквально вчера: имеется у нас ПО годами стабильно работающее и развивающееся под Ubuntu 14. Скомпилировать его под Ubuntu 15, 16, CentOS 6, 7, Debian 8, FreeBSD 9, 10 — невозможно.
Это не какая-то наколенная поделка. Я имею ввиду один из базовых инструментов крупной компании — Яндекс — Yandex Cocaine.
Александр Борисович: Не имеет значения, что там тормозит с PHP на Windows. Для разработки хватает. Вы же один, а не 100500 запросов шлете на сервер, как при работе PHP в production. В production, разумеется, это все запускается на *nix.
P.S.:
Тормозит только момент запуска PHP. Если вы не умеете настраивать PHP, чтобы он не запускался каждый раз, в висел сервисом — то мне вас очень жаль.
АртемЪ:
Во, первых: Jump АртемЪ @Jump
Александр Борисович: А разве веб разработчик работает на PHP?
Во вторых, это во первых. 🙂 и писать можно хоть в блокноте.
В третьих, ты не понял смысл того что я написал.
Производительность сайта особенно тяжелого да еще и на CMS, зависит от ресурсов которые получают от сервера. Узкое место процессор при большом кол-ве запросов к закешированным страницам.
Узкое место дисковая подсистема, при большом кол-ве запросов к БД.
Не говоря уже про частоту ОЗУ.
Пример из жизни. Сайт компании тормозит. Разработчик говорит, что железо не тянет, хотя оно и слабое, но админ следил за бенчами сайта и видел что раньше по бенчам сервер мог отдавать 50 страниц в секунду, сейчас отдает 10 страниц. Разработчика тыкают носом, он идет исправлять свой косяк и на следующий день все нормально работает.
Так как обьяснить разработчику, что у него руки не из того места растут? А не сервак плохой.
Увеличивать производственные мощности с индуским кодингом можно до бесконечности.
С учетом того что у разработчиков, так же как и у админов 80% люди с манией величия. ))))
В четвертых, бенчи очень важны особенно для связи админа и разработчика.
Даже простым циклом можно уменьшить производительность работы сайта. Особенно если страница не статична и получает данные из БД.
И в принципе все сайтик пошел подумать, отвалится сессия по таймауту 🙂
А если подобную хрень запустят 1000 человек или 10000 тысяч.
Производительность зависит от железа и настроек когда ты изучаешь в первый раз как настраивать всю систему в целом. Потом на новые проекты ты уже берешь свои наработки, ведь в первый раз ты доводишь до ума все. Этакая эмуляция серебрянной пули, ты в неё веришь, а её нет. Да и можно на ты, а то Вы Вам, пользователи хлебопечки не меняются, активные одни и теже 🙂
В чем преимущества *nix, linux перед windows
Не переставлял Windows на серверах с 2004 года.
Миграция на новое железо делалась 4 раза. Копированием образа диска, без переустановки.
Работает до сих пор прекрасно.
Что я делаю не так?
abcd0x00 Зависит исключительно от софта, и от настройки.
Если софт стабильный и установлен нормально — будет работать
Иначе будут проблемы.
Как на windows, так и на linux.
Хотя на windows это делается как правило проще, и не требует специальных знаний.
Хотя на windows это делается как правило проще, и не требует специальных знаний.
Есть, например, парсер сайта на питоне, который базируется на lxml. Вот с виндой ты должен будешь новый парсер писать, потому что lxml не сможешь собрать под винду. Пока ты будешь писать новый парсер, я буду передавать собранные данные дальше по цепочке даже не в БД, а другому скрипту.
Не переставлял Windows на серверах с 2004 года.
abcd0x00: Ничего не понял. С чего бы это я кому-то стал должен? И нафиг мне собирать парсер под винду? Я парсеры пайтоновские обычно под дебианом запускаю.
Не пойму что вы этим хотели сказать.
По поводу перестановки — без разницы какая система.
Если у вас есть желание переставлять каждый день систему, вы можете переставлять любую систему, хоть виндовс, хоть линукс, хоть макось.
Если такого желания нет — зачем переставлять?
abcd0x00:
«А что, надо что-то где-то когда-то переставлять? Неужели в 21-м веке существуют такие непродуманные системы?»
Милок, за 12 лет репы по 5 раз у linux отваляться
)))
АртемЪ:
> Хотя на windows это делается как правило проще, и не требует специальных знаний.
Люди уже столько лет сидят на Ubuntu, что выросло уже новое поколение, которое не умеет ручками и в Linux.
И нафиг мне собирать парсер под винду? Я парсеры пайтоновские обычно под дебианом запускаю.
Так запускай виндой, если есть что запускать, конечно. У меня, кстати, наоборот, — винда в виртуалке стоит и грузится из снимка всегда новенькая. И то это не для работы какой-то, а для проверок всяких типа запустится ли там очередная хрень или ОПЯТЬ выпадет где-нибудь.
Если такого желания нет — зачем переставлять?
А как ты откатишь винду, если она сломается?
Милок, за 12 лет репы по 5 раз у linux отваляться
abcd0x00: По поводу парсеров — зачем мне парсер на рабочей машине? На рабочей машине работаю я.
А всякие скрипты крутятся на сервере, и не мешают мне работать. Нафига мне грузить рабочую машину?
По поводу винды —
Во первых с чего она должна сломаться?
Во вторых, если она сломалась, кто мешает откатить к прежней контрольной точке?
abcd0x00:
Стабильно работать — это без обновлений ПО что ли? Или компилировать самому?
Далеко ходить не надо.
Используем Yandex.Cocaine. Штука хорошая, написана и поддерживается серьезной конторой.
Но вот незадача — живет строго с одним релизом одной ОС — Ubuntu 14.04.
И, зараза такая, не желает компилироваться ни под CentOS 6, 7, Debian 8, FreeBSD 9, 10, Ubuntu 15, 16.
abcd0x00:
> В винде же поставишь какой-нибудь софт (а необходимость в этом есть с самого начала) и из него тебе прямо в службы пролезет какая-нибудь очередная рекламная фигня, прочно там сядет и будет советовать куда-нибудь сходить из своих dll-шек.
Ты застрял в 2002 году — году выпуска Windows XP без SP.
По поводу парсеров — зачем мне парсер на рабочей машине? На рабочей машине работаю я.
А всякие скрипты крутятся на сервере, и не мешают мне работать.
Для меня «работаю я» означает, что я сижу на кухне и пью чай, а работает скрипт от моего имени, написанный мною. Так вот, чтобы их писать и запускать, нужно иметь всю инфраструктуру. Не просто так я привёл lxml, этот модуль очень удобный, а на винде он без проблем не собирается.
И про дебиан здесь вариант не прокатит, потому что ты пришёл, а там голая винда, а у тебя ни мячика, ни ракетки. Даже если у тебя живая флешка в кармане, то на ней что?
Во вторых, если она сломалась, кто мешает откатить к прежней контрольной точке?
А ты не откатывал 😉 иначе бы знал, что при этом происходит.
По поводу рекламы — ну так не ставь что попало, и ничего не будет никуда лезть.
Да это были кодеки для промотра неизвестного видеоформата. Вместе с кодеками пролезла хрень в службы. И ты это никак не пресечёшь, потому что виндовая фирма не предоставляет все эти средства. Приходится искать сторонние, которые могут содержать в себе что угодно.
Стабильно работать — это без обновлений ПО что ли? Или компилировать самому?
Приведи пример ПО, которое ты обновляешь.
Используем Yandex.Cocaine. Штука хорошая, написана и поддерживается серьезной конторой.
Ну, это ты преувеличил. Яндекс ещё не вышёл на международный уровень в разработке.
Поддержки Windows, к сожалению, нет, и не планируется, но это не значит, что пользователи, например, C# не смогут воспользоваться облачными сервисами, которые крутятся где-то в другом месте — достаточно написать подходящий фреймворк (что это такое будет рассказано далее).
Странно, да? Такую хорошую систему если и поддерживают, то в последнюю очередь.
Ты застрял в 2002 году — году выпуска Windows XP без SP.
Да это были кодеки для промотра неизвестного видеоформата. Вместе с кодеками пролезла хрень в службы. И ты это никак не пресечёшь, потому что виндовая фирма не предоставляет все эти средства. Приходится искать сторонние, которые могут содержать в себе что угодно.
1. Не бывает неизвестных форматов. По заголовку файла можно опеределить название формата. И поставить вполне конкретный кодек.
2. Не ставлю кодеки уже лет 5. Media Player HomeCinema, скачиваемый только с официального сайта, все понимает.
Приведи пример ПО, которое ты обновляешь.
blackhole library, например.
Ну, это ты преувеличил. Яндекс ещё не вышёл на международный уровень в разработке.
?
Даже ребята из угасающего Рамблера давным-давно уже там (ngnix).
А уж Яндекс с их несомненно более мощными ресурсами разработчиков — вполне.
Yandex Cocaine — вещь получше многих аналогов. Цельная и функциональная.
Странно, да? Такую хорошую систему если и поддерживают, то в последнюю очередь.
Мы обсуждаем десктопную ОСь чисто для рабочего места разработчика.
А ты приводишь в пример описание чисто серверного ПО.
Так в лине-то можно сидеть на эквивалентных релизах и всё будет работать, как часы, без всяких обновлений.
Если ты про сервер — то некотрые под Windows с 2004 года. За это время было несколько переездов на новое железо — методом копирования диска. Без переустановки. Если бы была бы проблема, давно бы все рухнуло.
На клиенте у Linux все гораздо хуже. Например, попытайся установить современный Firefox. Тебе потянет такие зависимости, что в конечном итоге приведут к несовместимости ядра (через графические библиотеки, например) или к возможности работы графики X11 только в тормознейшем режиме эмуляции VESA.
В винде же что-нибудь надо будет починить (исправить), а для этого надо будет поставить Internet Explorer, потому что без него хелп не читается к какой-нибудь вспомогательной программе. Как-то завис так с установкой одной программы, когда необходимо было поставить кучу ненужных компонентов, которые к ней вообще не относятся, иначе без них она не ставилась. И среди них был Internet Explorer, который мне вообще нафиг не нужен.
Глянул сейчас список пакетов на линуксовом сервере — из мне нужных там процентов 10. Остальное зависимости.
А на линуксовом клиенте соотношение полезного к зависимостям 1/100.
Причем зависимости просто ужасные. Ну скажите, зачем мне при установке vim к текстовой коноли чтобы автоматически тянулись cups и драйвера под матричных принтера, последний из которых я видел лет 7 назад?
1. Не бывает неизвестных форматов. По заголовку файла можно опеределить название формата. И поставить вполне конкретный кодек.
2. Не ставлю кодеки уже лет 5. Media Player HomeCinema, скачиваемый только с официального сайта, все понимает.
Это если ты только киношки смотришь в распространённых форматах. Если же это специальный формат какой-то или просто редкий или очень новый, то распространённые кодеки могут его не знать и тогда выбирать особо не из чего. А при поиске может быть найден пакет, который вместе с кодеком включает ещё какую-то нагрузку. Ну, и бывают люди, который заражают на чужих сайтах софт своими пэйлоадами; где-то даже дистрибутив линукс заразили, но быстро обнаружилось. А сколько скрытых таких?
Даже ребята из угасающего Рамблера давным-давно уже там (ngnix).
Ты всерьёз считаешь, что nginx — заслуга Рамблера? Где-то даже суд был или около того, когда они примазаться пытались. Знаешь, любят у нас люди на всё готовенькое прийти (так же и с ВКонтакте было, когда готовую соцсеть просто отобрали у владельца), почему Яндекс и не регистрируется в России — отберут на раз два совершенно левые дяденьки.
А уж Яндекс с их несомненно более мощными ресурсами разработчиков — вполне.
Да ладно, спектр их разработчиков довольно широкий, набирают всех от мала до велика. По крайней мере, лекции у них слабые. А количеством такие вещи не возьмёшь, nginx вообще разработан одним человеком — 70000 строк кода, а PostgreSQL — тоже небольшой группой товарищей. Дело не в количестве, а в том, что довольно грамотные люди работают ради самой идеи, а не за деньги.
Мы обсуждаем десктопную ОСь чисто для рабочего места разработчика.
А ты приводишь в пример описание чисто серверного ПО.
Я вообще не понимаю, как можно винду на сервере использовать, это же дырявая, медленная хрень, управляемая левой пяткой какого-то очередного индуса. Не сегодня-завтра придумают очередную маркетинговую фигню — и поплывёт твой сервер. А в плане десктопа, так винда — это для кактусопоедателей, много пыли с мизерным выхлопом. Особенно смешно, когда они на линукс переходят, и у них глаза разбегаются от того, как много программ, оказывается, бывает вокруг, и как в одной программе может быть не десять полезных и нужных фич, а сто.
За это время было несколько переездов на новое железо — методом копирования диска. Без переустановки. Если бы была бы проблема, давно бы все рухнуло.
Да тебя просто никто не ломал. Там же дос-атаки проводить — милое дело, просто что-то куда-то посылаешь и весь сервер падает. Неуловимый Джо — никто не поймал, потому что никто не ловил.
На клиенте у Linux все гораздо хуже. Например, попытайся установить современный Firefox.
А зачем? Несовременный почти не отличается от современного. Или тебе расширения нужны?
Главное, что в том старом виде его можно юзать и сегодня. А в винде так нельзя, выпадет браузер, потому что сделан по принципу костылей на костылях.
Причем зависимости просто ужасные. Ну скажите, зачем мне при установке vim к текстовой коноли чтобы автоматически тянулись cups и драйвера под матричных принтера