У каждой ОС есть свои плюсы, минусы и особенности, и как правило программисты выбирают ОС на основе своих предпочтений и представлений. Но что, если отбросить личные симпатии и попытаться взглянуть объективно: какая ОС даёт больше всего преимуществ программисту? Мы задали этот вопрос экспертам, и вот что они ответили.
Выбор ОС в первую очередь зависит от того, в какой области разработчик работает, а ещё это дело привычки и субъективных представлений об удобстве. Я веб-разработчик и успел попробовать несколько операционных систем. Вот мой личный рейтинг удобства ОС именно для разработки веб-решений.
Первое место — 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 можно добиться простыми действиями, на «винде» делается сложно.
Александр Пантелеев
разработчик в Kodix Auto
На такой вопрос сложно дать однозначный ответ. Скорее, это больше зависит от предпочтений разработчика. Но очевидно следующее:
- Если пишете программы для какой-то определённой платформы, то её и нужно выбирать.
- Если это веб-разработка, то вероятность того, что сервер будет крутиться на Unix — 80 %, а значит, стоит выбирать Linux или Mac.
Прежде всего следует разобраться, в чём отличие Unix от Windows, и выбрать то, что нравится и больше подходит. Писать хороший код можно везде. В этом вопросе нет серебряной пули, и это самое главное, что нужно понимать начинающему разработчику.
Итак, кому какой системой стоит пользоваться?
Всё зависит от двух вещей: что вам удобно и чем вы занимаетесь. Например, если вы разрабатываете iOS-приложения, то вам придётся пользоваться macOS; если вы пишете бэкенд и сервер крутится на Linux, то, скорее всего, на нём вам и удобней будет работать. Если не принимать во внимание завязанные на конкретной платформе стеки разработки, то всё зависит от ваших предпочтений, ведь очень много софта работает на всех основных системах. Нравится работать в Windows/Linux/BolgenOS? Работайте дальше, если это не ограничивает ваши возможности. К тому же при необходимости в простых случаях можно воспользоваться виртуальной машиной. А переучиваться работать на другой системе просто «потому что» — пустая трата сил и времени.
Напоминаем, что вы можете задать свой вопрос экспертам, а мы соберём на него ответы, если он окажется интересным. Вопросы, которые уже задавались, можно найти в списке выпусков рубрики. Если вы хотите присоединиться к числу экспертов и прислать ответ от вашей компании или лично от вас, то пишите на experts@tproger.ru, мы расскажем, как это сделать.
Нету никаких проблем.
Если только ваше конкретное используемое для ваших задач ПО нормально работает с 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 стартует быстрее), то на твоем — несущественно на чем работать.
#Подкаст
-
0
Подкаст «Люди и код», выпуск №125: Константин Шибков.
Иллюстрация: Polina Vari / Skillbox Media
Пишет об истории IT, разработке и советской кибернетике. Знает Python, JavaScript и немного C++, но предпочитает писать на русском.
Гость
Senior Java-разработчик в «СДЭК». Эксперт Skillbox, работает над программой курса по Java, был его программным директором. Автор телеграм-канала «Три монитора».
- Почему важно правильно выбрать ОС
- По каким критериям выбирать ОС, и как выбор ОС зависит от технических параметров железа
- В каких случаях выбор ОС может быть продиктован особенностями технологического стека и другими внешними факторами
- Виртуальная машина, WSL и другие компромиссные решения для тех, кто не хочет полностью переходить на другую ОС
- Стоит ли ставить отдельную ОС или покупать компьютер только для разработки
- Полезные особенности Windows и существенные недостатки с точки зрения разработчика
- Начинающим программистам часто рекомендуют отвыкать от Windows и переходить на Linux. Почему?
- Общая характеристика Linux-систем. Краткий экскурс в мир дистрибутивов
- С какого дистрибутива начать, если никогда не имел дела с Linux. Какие трудности ждут начинающего пользователя
- Общая характеристика macOS. Правда ли, что это идеальная ОС для разработки
- Какие ещё ОС существуют, и стоит ли начинающему разработчику обращать на них внимание
- «Лучшие дистрибутивы Linux: какую версию операционной системы выбрать»
- distrowatch.com — всё о Linux-дистрибутивах
- «PowerShell для чайников: что это и как с ним работать»
- mave
- Castbox
- «Яндекс Музыка»
- YouTube
- VK
- Apple Podcasts
Научитесь: Профессия Java-разработчик
Узнать больше
Originally published on my blogging site ajeet.dev
Disclaimer:
I am new to the blogging world. This is my first post at Dev.to platform.
Please feel free to suggest how can I improve my tech blogging skills.
At Dev.to, I aim to share my tech-learning, and my writings will be dedicated to the absolute beginners who are new to the tech world. I don’t have a Tech degree, but always wanted to get into tech domain. I started teaching myself, I learnt Excel and mySQL by myself, then data visualization software Tableau.
This post will help the newbies choose the right OS to start their journey in programming or web dev. Let’s start.
In this article, I will quickly compare some key features of both the Linux and Windows Operating Systems. We will see the advantages of Linux over Windows, which will help you choose the right OS for programming or web development purposes.
I am a big fan of Windows OS, and have been using it for years. It is super user-friendly, well-designed, and convenient. However, if you are thinking of getting into programming or web development, a Linux distro (such as Ubuntu, CentOS, and Debian) is the best Operating System to start with.
Since this article is mostly focused on using a Linux distro, I will share with you lots of free learning resources related to Linux. This will help newbie coders to get comfortable with a Linux distro.
Linux is a kind-of-descendent of Unix, which means it is similar to other Unix-based system.
Linux Vs Windows ⚔️ Feature Comparison
Let’s compare the features of Linux and Windows Os.
🧡 Open Source
Unlike Windows OS which is commercial, Linux is an open source software that is freely available to download. There are hundreds of Linux distributions available out of which almost five-hundred distro are in active development. One of the most popular desktop Linux distributions is Ubuntu. I am currently using it.
🛡️ Secure
Linux is considered to be more secure than Windows. No antivirus is needed. Since it is open source, several developers are working on it and everyone can contribute code. It is likely that someone will find a vulnerability long before hackers can target a Linux distro.
🚀 Faster Software Updates
You will get faster software updates. If the bugs are found by someone, the users get updates immediately, they don’t have to wait for long. Development tools and libraries are available for free.
⚡ Performance
Linux is more powerful and versatile than Windows. It is light-weight, which makes Linux faster than Windows. You will notice a significant improvement in speed on a Linux distro when you start working on this OS.
👨💻 Programming Friendly
As I said in the beginning of this article, a Linux distro is the best OS for a budding programmer to start with. Developers ❤ Linux. Let’s see some key features of Linux
- Linux supports almost all of the programming languages such as Clojure, Python, Julia, Ruby, C, and C++ to name a few.
- The Linux terminal is better than Window’s command line. If you want to learn command line basics quick and super fast, you will find this course helpful. Here is a comprehensive guide to learn Linux command line for beginners. You can also use this guide to learn command line for iOS and Linux.
- Bash scripting — Bash is extremely useful for developers and it is available by default on Linux. Learn how to create and use bash scripts. Here is a cheat sheet on bash scripting.
- Linux has inbuilt support for SSH. With this, you can easily manage your servers. Learn how to use SSH using this DigitalOcean guide.
- You can easily customize and personalize your Linux distribution.
- It also supports several efficient tools for developers that makes the life of developers a lot easier.
💯 Great Community Support
Since hundreds of Linux distros are in active development and they are open source, the community is big. All newcomers can find help on any of the Linux forums. If you are stuck somewhere in your development process or need help in your coding process, just Google it. You can find several Linux based helpful resources.
⏳ How to install and use a Linux distro
There are many ways to install and use. A few ways to install Ubuntu (a popular Linux distro) are mentioned below:
- You can download Ubuntu and freshly install on your system. Also, google it and you will find several free resources on how to install this OS.
- Install Ubuntu alongside Windows 10 dual boot
- Install Ubuntu on Windows 10 using Virtualbox
🤔 Downside of using Linux (for the absolute beginners)
Is there really a problem switching to Linux ? I think, yes but for the absolute beginners, and it should be considered on a case-by-case basis. While there is absolutely no downside of switching to Linux, some absolute beginners might find Linux a bit uncomfortable while using it.
Image Credit: https://bit.ly/2qpYluK
Consider a case where your computer is only running Linux (using installation approach 1 and 2 mentioned above). You have been using Windows since the beginning. You have never used a Linux distro before (similar to my case). Here are a few problems I had faced.
- A computer with only a Linux distro installed means newbies might end up googling several commands to do simple tasks. Even you are not familiar with Start Menu. The same task could have done with a few clicks of buttons in Windows.
- Running Microsoft products (such as Excel, Word, and PowerPoint) in Linux is not an easy task. That was a big disappointment to me. I was an Excel-person, and even now I use it everyday. Though you can use open source alternatives to Excel, but they are not advanced and mature enough.
- I am a big fan of Tableau — a data visualisation software, and I use it create charts and running some quick analysis. The problem is Tableau Desktop is not available for Linux, but only for Windows and Mac.
The problem could be fixed by using installation approach 3 (install Ubuntu on Windows 10 using Virtualbox). You can use Windows and Linux side by side. However, the biggest problem with this approach is the performance of the Linux machines inside Windows. Virtual Machines take a lot of resources and you will have a disconnected experience when using VMs with Windows.
If you have good amount of RAM, video graphics and a good processor, you can optimize the Linux machine. However, that might be costly, time taking and overwhelming for newbies. So, what now.
💡 What’s Next
One of the best solutions of the problem I explained in the previous section is to use Windows Subsystem for Linux (WSL). I have written a step by step guide on WSL on my blogging site ajeet.dev
Part 1: How to Install Windows Subsystem for Linux
Part 2: A Beginner’s Guide to Use Windows Subsystem For Linux
Do read it. Thank you for your time. Feedback welcome
Edited on 25 Jan 2020: Based on several comments and a little research, I find this sentence «While there is absolutely no downside of switching to Linux..» too extreme. That’s why the strikethrough
Don’t forget to subscribe to my weekly Newsletter 📧
Credits 🙏:
*Image Credit: ManyPixels
*Image Edit with BlogCover
*Windows and Linux logos taken from SimpleIcons
*Emojis taken from Emojipedia
Linux, Windows или macOS: что выбрать программисту — отвечают эксперты
У каждой ОС есть свои плюсы, минусы и особенности, и как правило программисты выбирают ОС на основе своих предпочтений и представлений. Но что, если отбросить личные симпатии и попытаться взглянуть объективно: какая ОС даёт больше всего преимуществ программисту? Мы задали этот вопрос экспертам, и вот что они ответили.
Выбор ОС в первую очередь зависит от того, в какой области разработчик работает, а ещё это дело привычки и субъективных представлений об удобстве. Я веб-разработчик и успел попробовать несколько операционных систем. Вот мой личный рейтинг удобства ОС именно для разработки веб-решений.
Первое место — macOS. Практически всё идеально, могут возникать проблемы с Docker, поскольку не всегда оптимально используются ресурсы (бывает >= 70 % CPU). Но это мелочи. macOS — это практически идеальный баланс между ОС для работы и для повседневных задач.
Ещё одно первое место — Ubuntu/Mint (и другие Linux-дистрибутивы). Именно для разработки я считаю это семейство ОС лучшей. Из плюсов перед macOS — близость к production-окружению, «нативная» работа Docker. Из минусов — всё-таки иногда всплывают ошибки, которые без консоли не поправить (пример, проблемы со звуком), ну и софта гораздо меньше.
Второе место отдам Windows. Здесь можно спокойно вести разработку. При наличии такого софта как Docker или Vagrant многие проблемы можно легко обойти. Чего мне действительно не хватает в Windows, так это нормального терминала (ConEmu, Git Bash и другие не в счёт). Зато софта под эту ОС гораздо больше, чем на Ubuntu или macOS.
В качестве заключения отмечу, что всё-таки выбирать стоит ту ОС, в которой разработчику привычнее и комфортнее работать. Если всё в операционной системе устраивает, то переход на что-то другое вызовет лишний стресс и трату времени на изучение возможностей новой ОС. В конце концов, в ту же Windows потихоньку внедряется WSL.
На вопрос, какую операционную систему выбрать для программирования, в большинстве случае нет чёткого ответа, т. к. это больше субъективный выбор каждого человека: как по удобству взаимодействия с самой системой, так и с используемыми инструментами для разработки. Большинство популярных языков и сред разработки в основном присутствуют на всех платформах.
Конечно, есть немало случаев, когда выбор ограничен. Например язык программирования плохо адаптирован под конкретную операционную систему или требуется конкретная платформа для выполнения, тут стоило бы или даже необходимо использовать то, что есть.
Если ограничений нет, то, я считаю, самый правильный выбор — попробовать каждую из систем, для того чтобы решить, что же конкретно тебе удобнее. У каждой системы есть как плюсы, так и минусы: где-то удобнее разворачивать среду и работать с ней, где-то есть более удобные инструменты разработки и т. д., поэтому говорить, что для веб-разработки нужна обязательно macOS или для разработки на .net core нужен Windows, я считаю, неправильно.
Также для нашей страны актуален вопрос цены рабочей машины. Например, для многих, а тем более для начинающих, продукты компании Apple могут показаться дорогими при прочих равных. У компьютеров на Windows или Linux ценник более доступный.
Если подытожить, то если нет ограничений на выбор системы, советую попробовать все системы и выбрать ту конфигурацию системы и инструментов, которую удобно использовать именно вам.
В первую очередь нужно быть уверенным, что инструмент, с которым человек будет работать, удобен. А операционная система — это инструмент и ничто иное. Если говорить о выборе операционки, то неплохо было бы сразу знать, где ваше приложение будет в дальнейшем крутиться. Если человек предполагает разработку под операционную систему 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) портированы и работают кроссплатформенно. Для новичка будет несложно сориентироваться, главное, не надо сразу начинать лезть в консоль или жить в терминале и пугать себя.
Выбор операционной системы, как правило, происходит на усмотрение самого программиста. Это дело вкуса — кому-то нравится macOS, другие считают Linux топовой системой. Одно важное условие: если ваш продукт будет иметь дело с iOS, то поле выбора ограничено — тут не обойтись без macOS. Иначе ничего не получится, если только разработка не идёт на удалённых серверах. Также эта система считается более user-friendly. То есть все мобильные разработчики, чьи продукты будут запущены в AppStore, не имеют другого выбора, кроме Mac.
Веб-разработка менее требовательна к ОС. Лишь два браузера – Explorer и Safari являются специфическими: первый будет работать только на Windows, а второй – на Mac. Когда разработчику нужно тестировать то, что он разработал, — ему понадобится соответствующий браузер.
Linux считается немного более сложным вариантом — она также бывает простой в использовании, но есть и «хардкор-версия», она скорее для тех, кто «пишет» драйверы и в целом больше работает с «железом». Преимущество этой системы в том, что можно собрать её целиком «под себя» и иметь над ней полный контроль. Это сложнее, требуются мозги и навыки, но использование в таком случае будет немного производительнее.
Разработка игр, как правило, происходит на кроссплатформенных системах. А вот приложения backend-разработчиков чаще выпускаются на Linux, соответственно будет удобно держать именно эту систему на своей машине разработки — это может быть и локальная машина, и нет. Часть разработчиков работает на удалённых серверах, а их локальная машина — это по факту просто интерфейс доступа.
Также если вы привыкли работать на macOS, то будет довольно трудно «переключиться» на Windows, и наоборот. То, чего на Mac можно добиться простыми действиями, на «винде» делается сложно.
На такой вопрос сложно дать однозначный ответ. Скорее, это больше зависит от предпочтений разработчика. Но очевидно следующее:
- Если пишете программы для какой-то определённой платформы, то её и нужно выбирать.
- Если это веб-разработка, то вероятность того, что сервер будет крутиться на Unix — 80 %, а значит, стоит выбирать Linux или Mac.
Прежде всего следует разобраться, в чём отличие Unix от Windows, и выбрать то, что нравится и больше подходит. Писать хороший код можно везде. В этом вопросе нет серебряной пули, и это самое главное, что нужно понимать начинающему разработчику.
Итак, кому какой системой стоит пользоваться?
Всё зависит от двух вещей: что вам удобно и чем вы занимаетесь. Например, если вы разрабатываете iOS-приложения, то вам придётся пользоваться macOS; если вы пишете бэкенд и сервер крутится на Linux, то, скорее всего, на нём вам и удобней будет работать. Если не принимать во внимание завязанные на конкретной платформе стеки разработки, то всё зависит от ваших предпочтений, ведь очень много софта работает на всех основных системах. Нравится работать в Windows/Linux/BolgenOS? Работайте дальше, если это не ограничивает ваши возможности. К тому же при необходимости в простых случаях можно воспользоваться виртуальной машиной. А переучиваться работать на другой системе просто «потому что» — пустая трата сил и времени.
Источник
Почему лучше программировать на Linux
Вы, наверное, уже не раз слышали, что программировать лучше на Linux и программисты используют его чаще, чем Windows. Но почему сложилась такая ситуация? Конечно операционные системы на базе ядра Linux бесплатны и имеют открытый исходный код. Это огромное преимущество, по сравнению с Windows, на какие же преимущества важны именно для программирования?
Открытый исходный код системы ничем не поможет если вы веб-программист. А что касается бесплатности. то и Windows бесплатную в России найти не проблема. А тем не менее многие программисты предпочитают Linux. В этой небольшой статье мы рассмотрим почему стоит программировать на Linux.
Почему стоит использовать Linux для программирования
1. Простота настройки среды
Благодаря архитектуре Linux рабочую среду для программирования здесь настроить намного проще. Конечно, в последние годы появился Docker и WSL, упрощающие настройку среды для программирования и проверки работы программ в Windows, но в Linux это по прежнему проще сделать. Например, если вы хотите программировать на C/C++, то установить все необходимые инструменты можно с помощью одной команды и после этого больше ничего настраивать не нужно. В Windows же придётся потратить некоторое время на то чтобы найти и установить инструменты компиляции, а затем ещё и заставить операционную систему их видеть.
Для веб-программирования намного проще будет установить и настроить веб-сервер и интерпретатор PHP в Linux с помощью пакетного менеджера дистрибутива. Расположение конфигурационных файлов в файловой системе стандартизировано и вы можете без труда их найти и настроить всё, что вам нужно. В Windows придется скачивать и настраивать всё вручную или использовать готовый комбайн вроде XAMPP, что тоже не плохо, но не так удобно.
2. Полноценный терминал
Терминал — огромное преимущество Linux. Ещё во времена операционной системы Unix был разработан набор консольных утилит и способы взаимодействия между ними, вроде построения туннелей или перенаправления вывода, с помощью которых можно делать многие полезные вещи. Например, с помощью grep можно выполнять поиск по большому количеству файлов, утилита find позволяет искать по имени, правам и дате изменения. Это всё может быть очень полезно если надо разобраться в чужом проекте и найти какой-нибудь метод не используя интегрированную среду разработки.
Кроме того, в Linux все программы делятся на сервисы и программы, привязанные к терминалу. Сервисы сообщают о своих ошибках системе инициализации, программы, привязанные к терминалу — прямо в терминал. Это удобно. Если в графическом приложении возникает ошибка, вы можете запустить его из терминала и посмотреть какая именно ошибка возникла.
3. Среда близкая к производственной
Если вы не занимаетесь разработкой приложений для рабочего стола, а пишите веб-приложения или Enterprice решения на Java, то скорее всего, они в будущем будут работать на серверах под Linux. Windows и Linux достаточно сильно отличаются и то, что работает у вас в Windows может не заработать или заработать не правильно на сервере с Linux. Поэтому среда близкая к производственной это тоже важно и удобно.
4. Контроль над именами файлов
Если вы пользовались Windows, то знаете, что для этой операционной системы файл FILE и file, это одно и то же. В файловой системе Ext4 в Linux это будут разные файлы. Кроме того, Windows по умолчанию скрывает расширения файлов и вы не можете их менять прямо без дополнительных настроек. В большинстве файловых менеджеров Linux раcширения файлов отображаются по умолчанию.
5. Так сложилось исторически
Изначально операционные системы Windows по умолчанию использовали кодировку CP-1251, в то время как в дистрибутивах Linux использовалась кодировка UTF-8. А поскольку на веб-серверах чаще всего был установлен Linux, то было нужно чтобы все исходники программ были в UTF-8. При работе с ними в Windows их приходилось вручную конвертировать или же использовать специальные среды разработки, в которых всё это было предусмотрено.
До недавних пор в Windows не было нативного SSH клиента. Конечно, всегда можно было пользоваться Putty или другими сторонними программами, однако встроенного клиента для SSH не было и это было неудобно. Встроенный клиент на основе SSH появился только в Windows 10. А в Linux SSH клиент всегда был легко доступен в терминале.
Поскольку раньше не существовало WSL и Docker, то любые специфичные для Linux вещи требовали либо установки Linux рядом/на виртуальную машину либо установки и настройки программ для кросскомпиляции что не всегда было просто. В Linux же большинство программ было установлено уже по умолчанию либо же ставились в несколько команд с помощью пакетного менеджера и не требовали никаких настроек.
Когда Windows лучше для программирования чем Linux
Всё выше перечисленные аргументы больше актуальны для веб-программирования и разработки на C/C++. Однако Microsoft разработала и поддерживает свою экосистему для создания программных решений. Это язык программирования C# и платформа .NET. Долгое время .NET в Linux поддерживалась только силами энтузиастов. Несмотря на то, что недавно у .NET официально появилась поддержка Linux в виде NET Core, экосистема, разрабатываемая годами для Windows там всё ещё лучше чем в Linux. Например, хотя компания Microsoft выпустила VS Code для Linux всё ещё нет и, скорее всего, не будет интегрированной среды разработки Visual Studio.
Выводы
Как видите, причин программировать на Linux вполне достаточно чтобы попробовать. Конечно, всё зависит от конкретного человека и ситуации. Если вы всю жизнь программировали в Windows и знаете всё тонкости настройки, то возможно, вам и не будет хотеться переходить на Linux, так как там всё новое и надо разбираться заново. Но если вы ещё не разобрались с программированием в Windows, то в Linux будет удобнее. А вы программируете в Linux? Почему? Напишите в комментариях!
Оцените статью:
Об авторе
Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.
16 комментариев
У меня ubuntu. Что первое мне понравилось это не тупи и не надо переустановливать каждый год ОС(у меня была windows 7, других не было) из-за синиго экрана или ещё из-за чего нибудь. Нравится терминал очень удобная штука, когда сел на Винду было очень не удобно что не авто дополнение. Из минусов нет Фотошопа а так вообще нет желания обратно пересодится на виду. А ещё чуть не забыл там прикольный тачпауд, удобный.
Кроме того, Windows скрывает расширения файлов и вы не можете их менять прямо в проводнике без дополнительных программ.
Это ещё почему я не могу создавать файлы .htaccess или .env? И какие такие программы нужны для изменения расширения файла?
ько используется Линукс на 2% компьютеров, а на домашних их используют странные люди, для которых одной из важнейших вещей в жизни является покричать в интернете какой Линукс прекрасный по сравнению с виндоуз, а обычные пользователи, которые хотят поиграть совсем без проблем, подредактировать видео или написать музыку как-то туда не стремятся. Энтузиасты опять начнут кричать что аналоги есть, только там где на виндоуз 7 аналогичных программ на Линукс одна и та не совсем доработанная.
Лично я ни разу не программер, и то знаю, что «Windows скрывает расширения файлов» есть просто настройка отображения, и то звучит как «скрывать зарегистрированные расширения файлов». То же самое и по вопросу .htaccess или .env В декстопном Linux, к слову, .htaccess или .env по умолчанию тоже в менеджере файлов отображаться не будут пока не тиснешь включение отображения скрытых файлов.
в п.3 слово Enterprice — прям отлично 🙂
Вот есть в инете одна нехорошая штука: если один напишет ерунду, то все ее прочитают и кто- то решит, что это истина 🙂
Сколько лет этим статьям? Windows давно использует кодировку UTF по умолчанию. В Windows давно есть WSL как раз для разработчиков, нуждающихся в каких-то Linux-специфичных штуках иногда. В Windows есть цивилизованные VisualStudio и OpenServer для разработчиков. OpenServer для удобной веб разработки как раз таки и в Linux нет ничего такого простого и работоспособного, чтоб без возни скачал, запустил и пользуешься. Даже без установки. В Windows по любому лучше всего кодить на C#, а на нем нынче много всего делается. Программы, игры, сайты, приложения для Андроида и прочее. А разные имена файлов в зависимости от регистров букв — это скорее минус, чем плюс.
Конкретно ваши примеры консольных команд из статьи это вообще не аргумент. В винде можно использовать find вместо gpep. Например, для поиска файла по названию (или части названия), так: dir /s /q c:\ выведет вообще все имена файлов на диске C. Вообще из всех папок, все файлы какие есть. Можно ещё другие ключи добавить. А вместо gpep использовать find для выборки, что показать. Имя или часть имени файла, который надо найти. Так:
dir /s /q c:\ | find «какашка»
Так зачем писать то, о чем вы не знаете?
А по поводу серверов, всему свое место. Во многих корпорациях плотненько сидят на инфрастуктуре Майкрософта. На Windows Server, Active Directory, Microsoft SQl Server, Microsoft Exchange Server, Microsoft Teams и всё у них нормально. Кто-то юзает FreeBSD на серверах и оно имеет место быть в некоторых случаях. Например, Netflix хорошо заточили фряху под нужные им функции, WhatsApp работает на FreeBSD, да много кто. Кто-то даже проприетарную Solaris гоняет на фирменном San-овском железе. То, что на серверах везде Линух и все делается там для Линух — это очень толстая ложь.
Поправил немного статью. В статье сделан акцент на веб-разработку. Естественно, что программировать на C# лучшие в Windows, потому что эта платформа была разработана специально для Windows. Но касательно веб-разработки в Windows приходится использовать много компонентов Linux. Тот же WSL или Docker, использующие код или дистрибутивы Linux целиком. А если использовать эти компоненты, то можно уже установить Linux. Хотя это, конечно, дело привычки.
>> то все ее прочитают и кто- то решит, что это истина
Это и расстраивает. Но думаю этот бред несут осознано.
А вот это, для ДМИТРИЯ. Действительно, не надо каждый год windows7 переустанавливать. Если что, не фотошоп, моя рабочая система.
https://i116.fastpic.org/big/2021/1102/44/da3c2e7f3f527e5e0f40d2ddeec97944.png
Автор(ADMIN), ну пожалуйста имейте совесть. Весь пункт 4, начиная с третьего предложения и далее чушь. Вдруг и взаправду люди будут читать и верить. Некрасиво же, право слово. Вот Win7.
https://i116.fastpic.org/big/2021/1102/cd/cc520c0134c86d0d6efb219c324814cd.gif
P.S.
Про клавишу «F2» в файловом менеджере windows (explorer) тоже надо показывать?
Поправил статью. Надеюсь теперь она больше соответствует действительности.
С автором согласен на все 100%. Я знаю, что у Windows есть свои поклонники и с ними спорить невозможно, они принимают критику программы как личную атаку. Это я понимаю и с этим не спорю. Каждому своё.
С Windows я работал очень долго. Около 15 лет назад попробовал Linux. С тех пор поработал на 10-15 разных дистрибутивах, сейчас остановился на Mint. Около 3-х лет назад перестал пользоваться Windows совсем, хотя она есть на диске в dual boot. Поясню, это касается Windows desktop, я всё ещё пользуюсь MS Hyper V, так как нужно поддерживать контролер Active Directory.
Это вступление, теперь мои 5 копеек о преимуществах Linux.
— Бесплатное. Нет ни регистраций, ни авторизаций, ни пиратства. Полностью бесплатно, без исключений. И не говорите что Windows можно добыть тем или иным способом. Воровство — есть воровство и кроме моральных протестов есть ещё обязательные и подтверждённые опастности, что в самый не подходящий момент эти трюки подведут. Кстати скоро без Microsoft account никуда и ничего. Браво Наделла, даже Гейтс до такого не доходил.
— Вся разработка Linux нацелена на удобство и надёжность. Как сложно добавить в Windows историю командной строки? Или сделать просмотры и мониторинг system logs удобным? А сравните Windows Registry и файлы конфигурации в Линуксе! И это только из незначительных замечаний. Все не перечислить, их 100-ни.
— Backup and Restore. Полная трагедия. В Линуксе rsync скопирует всю систему за 3-5 минут. И ГАРАНТИРОВАННО восстановит систему на любом другом носителе с которого вы без проблем загрузите систему. B Windows нет никакой уверенности, что после часовых процессов со стандартными средствами вы сможете загрузить то, что смогли восстановить из копии. И забудьте про удобные способы сохранить свои личные файлы и, упаси бог, программные установки. Системные обновления Линукса занимают около . минуты! Нет часов ожидания завершения апдейтов Окон и бесконечных перезагрузок. Do not turn off your computer ушло в далёкое прошлое для Линукса, туда и дорога.
— Наличие пользовательских программ. Прошли времена когда неыозможно было найти замену Windows программе. Теперь на каждую есть несколько вариантов в Линуксе. Процесс инсталяции, это небо и земля. Не хочешь из репозитория — установи Snap или Flatpak. И это не нравится — возьми исходники и скомпилируй самую новую версию. Легко. 3 команды. сonfigure/make/install и у тебя новая программа. Процесс удаления ненужного тоже до смешного прост и эффективен.
— Система безопастности. В Окнах это насмешка. Количество вирусов превышает количество полезных программ. Авторизация доступа в Линуксе проста и надёжна. NTFS ни в какое сравнение с ext4 или XFS не идёт. Ни по производительности ни по удобству ни по надёжности.
— В статье упоминаются средства програмирования. И здесь у Линукса больший выбор. Есть на любой вкус. Работа с медийными файлами? Линукс отвечает — нет проблем. И не ограничен только одним разработчиком. Есть разнообразные уровни сложности.
Я не претендую на всесторонний анализ этих ОС-ов. И совсем не сторонник того чтобы выбросить Окна на свалку, но их история сильно напоминает времена начала 90-х и войну MS Windows и IBM OS-2. Тогда динозавр пал в бою с молодым и инновационным конкурентом. Теперь этот динозавр — Microsoft Windows.
Под винду неодобно программировать, потому что очень много специфики. Тебе надо знать, как система поведет себя в том или ином случае. На ровном месте может быть затык.
Раздражает, когда файлы или каталоги блокируются каким-то приложением — не просто так понаплодили всяких анлокеров.
В LInux при программировании такого не чувствуется. Сложность настройки компенсируется стабильностью при использовании. С Ubuntu можно без особых проблем пересесть на RHEL, а с RHEL — вообще на какую-нибудь из BSD-систем.
Web разработка на windows сегодня тоже удобнее чем на Линукс. Для проверки под линуксом есть vmware. Я занимаюсь web разработкой больше 15 лет и меня вполне устраивает windows. Кроме того у меня есть один проект на с++ для embedded системы. Сейчас все наши российские заказчики переводят серверные части на российские линуксы, также отказываются от sql сервер (как СУБД, так и олап), однако я все равно остаюсь на windows, просто использую wmware. Для пробы установил на одном из рабочих ноутбуков убунту и настроил всё рабочее окружение, как на windows. Убунту порадовала тем, что все железо запустились из коробки, включая все функциональные клавиши и тачпад-дисплей, который стал вторым дисплеем (функции тачпада при этом тоже работают). Практически всё, чем я пользуюсь на windows есть за мелкими исключениями, но есть аналоги (правда к ним надо ещё привыкать). Сказать, что на убунте более удобно не могу. Практически также, чуть хуже из-за привычек. По скорости и отзывчивости интерфейса разницы не заметил (но у меня все ноутбуки мощные core i7, i9, rizen 9, память 16-32гб, диски nvme).
То что вы не используете windows 15 лет заметно по вашему комментарию (windows вы не знаете). Я программирую под разные ОС, в том числе под мак ос, iOS, (теперь это в прошлом), андроид (одно кооперативное приложение), Линукс (сейчас 80% работы) и для встраиваемых систем (управление оборудованием в реальном времени). Примерно 60% времени за последние 15 лет заняла web разработка. И всё это время я остаюсь под windows (хотя с линуксом познакомился в 1995 г.). Единственное пришлось купить МакБук, хотя конечно и без него можно было обойтись при разработке под яблочные ос, но неудобно (и соответственно не выгодно). Все так называемые проблемы, которые вы перечислили прекрасно решаются под windows, с гораздо большими удобствами, чем под Линукс, но за это надо платить деньги. Но т.к. это повышает производительность разработки, то в целом это выгодно. Просто я рассматриваю виндуос, Линукс и т.д., как инструменты для зарабатывания денег и с этой точки зрения windows меня вполне устраивает. Правда в сегодняшних условиях мы решили наладить тестовое рабочее окружение на линуксе (включая сервер бэкапов и аналог активной директории), но это из-за текущей ситуации.
Источник