Почему программисты используют linux а не windows

Время на прочтение6 мин

Количество просмотров67K

Linux — это отличная платформа для занятий программированием. На нашей стороне — логичность, высокая эффективность, лёгкость работы с исходным кодом.

В 2021 году Linux выглядит как никогда привлекательно. Я собираюсь написать материалы, в которых расскажу о 21 способе использования Linux. А в этой статье я хочу поговорить о том, почему так много программистов выбирают Linux.

Когда я начал пользоваться Linux, я работал в сфере кинопроизводства. Я выбрал Linux из-за того, что эта ОС замечательно поддерживала работу с мультимедийными данными. Мы выяснили, что обычные коммерческие приложения для редактирования видео не способны обрабатывать большинство тех записей, которые мы извлекали из практически любых устройств, оснащённых камерами. Тогда я не знал о том, что Linux имеет репутацию операционной системы, рассчитанной на серверы и на программистов. Чем больше задач я решал с помощью Linux, тем сильнее мне хотелось научиться управлять всеми свойствами этой ОС. В итоге я выяснил, что компьютер показывает всю свою мощь тогда, когда его пользователь способен «говорить» на его языке. Через несколько лет после перехода на Linux я уже писал скрипты для автоматического редактирования видео, для объединения аудиофайлов, для пакетного редактирования фотографий, и для решения любых задач, которые мне удавалось сформулировать, и для которых удавалось найти решение. Мне не потребовалось много времени на то, чтобы понять, почему программисты любят Linux. Но именно Linux научила меня любить программирование.

Оказалось, что Linux — это отличная платформа для программистов, и для начинающих, и для опытных. Нельзя сказать, что Linux необходима для того, чтобы писать программы. Успешные разработчики пользуются самыми разными платформами. Но у Linux есть много такого, что она может предложить разработчикам. Кое о чём из этого я и хочу рассказать.

1. Логичность Linux

Linux построена вокруг идеи автоматизации. Основные приложения Linux совершенно осознанно сделаны такими, чтобы их можно было бы, как минимум, запустить из терминала, указав дополнительные опции. А часто их можно и полностью использовать тоже из терминала. Эту идею иногда ошибочно считают чем-то вроде примитивной модели организации вычислений, так как существует распространённое (и неправильное) мнение о том, что писать программы, работающие из терминала, это значит — прилагать абсолютный минимума усилий к тому, чтобы получить работающее приложение. Это — печальный результат непонимания того, как работает программный код, но многие из нас периодически страдают таким вот непониманием. Мы думаем, что больше — это всегда лучше, поэтому приложение, содержащее 1000 строк кода должно быть в 100 раз лучше, чем приложение, содержащее 10 строк кода. Так? Но правда заключается в том, что, при прочих равных условиях, лучше выбрать приложение, отличающееся большей гибкостью, при этом то, из скольких строк кода оно состоит, значения не имеет.

В Linux решение некоей задачи вручную может занять, например, час. То же самое можно, воспользовавшись подходящими инструментами командной строки, сделать буквально за минуту, а возможно — и за меньшее время, если прибегнуть к GNU Parallel. Для того чтобы к этому привыкнуть, нужно определённым образом изменить взгляд на то, как именно работают компьютеры, нужно научиться мыслить не так, как прежде. Например, если задача заключается в том, чтобы добавить к 30 PDF-файлам обложки, можно решить, что приемлемая последовательность действий будет выглядеть так:

  1. Открыть PDF-файл в редакторе.
  2. Открыть файл с обложкой.
  3. Присоединить PDF-файл к файлу с обложкой.
  4. Сохранить полученный документ в виде нового PDF-файла.
  5. Повторить эти действия при обработке остальных старых файлов (а вот новые файлы, полученные из старых, обрабатывать уже не нужно).

Эта последовательность действий вполне согласуется со здравым смыслом, и хотя в ней много неприятных повторений, она позволяет достичь цели. В Linux, правда, можно организовать работу гораздо разумнее. Процесс размышлений над этой задачей, учитывающий возможности Linux, похож на процесс размышлений над «ручным» способом решения задачи. А именно, всё начинается с поиска последовательности действий, необходимых для получения нужного результата. Проведя некоторые изыскания, можно узнать о команде pdftk-java, а потом выйти на простое решение:

$ pdftk A=cover.pdf B=document_1.pdf \
 cat A B \
 output doc+cover_1.pdf

После того, как удастся убедиться в работоспособности команды при обработке одного документа, надо будет вложить некоторое время в изучение утилит для обработки наборов данных. В ходе изучения можно обнаружить команду parallel:

$ find ~/docs/ -name "*.pdf" | \
 parallel pdftk A=cover.pdf B={} \
 cat A B \
 output {.}.cover.pdf

Тут представлен подход к размышлениям над задачами, несколько отличающийся от обычного, так как «код», который мы пишем, обрабатывает данные не так, как мы привыкли. Обычно мы ограничены представлениями о последовательной ручной обработке данных. Но выход за границы старых представлений важен для того чтобы позже писать соответствующий код. А побочным полезным эффектом такого «выхода» является получение возможности писать более эффективные программы, чем раньше.

2. Возможности по управлению связями кода

Неважно, для какой платформы вы программируете, вводя в редакторе код. Всё сводится к тому, что программист плетёт сложную сеть из невидимых связей между множеством различных файлов. Практически во всех случаях, за исключением каких-то совсем уж экзотических, код, чтобы стать полноценной программой, обращается к заголовочным файлам и использует внешние библиотеки. Это происходит на всех платформах, но Linux подталкивает программиста к тому, чтобы он сам бы во всём этом разобрался, а не доверял бы заботу обо всём этом исключительно инструментам разработчика для некоей платформы.

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

Это имеет отношение не только к Linux, но и к другим платформам. В Linux можно писать код, который планируется запускать и в Linux, и в других операционных системах. Понимание того, как именно компилируется код, помогает программисту в достижении его целей.

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

3. Удобство работы с существующим кодом

Полезно знать о том, где находятся заголовочные файлы и библиотеки, но возможность видеть их код — это ещё один пример дополнительного преимущества программирования в Linux. В Linux можно посмотреть код практически всего, о чём можно подумать (за исключением приложений, работающих на Linux, но не являющихся опенсорсными). Невозможно переоценить полезность этой особенности Linux. По мере того, как некто всё лучше и лучше осваивает программирование в целом, или разбирается с чем-то новым для себя, он может многое узнать, читая существующий код в своей Linux-системе. Многие программисты научились делать своё дело, читая опенсорсный код других людей.

При работе с системами, код которых закрыт, можно найти документацию, ориентированную на разработчиков и содержащую примеры кода. Это хорошо, документация — это важно, но это не сравнить с возможностью обнаружить именно тот функционал, который планируется реализовать, и с возможностью найти исходный код, демонстрирующий то, как это сделано в приложении, которым вы пользуетесь каждый день.

4. Прямой доступ к периферии

Я, после того, как разрабатывал на Linux программы для медиакомпаний, иногда принимаю как должное возможность доступа к периферийным устройствам. Например, при подключении к Linux-компьютеру видеокамеры можно загрузить входящие данные из /dev/video0 или из подобного устройства. Всё что нужно, можно найти в /dev, и это — всегда кратчайший путь из точки A в точку B.

А вот на других платформах это не так. Подключение к системам, находящимся за пределами ОС — это всегда лабиринт, построенный из SDK, библиотек с закрытым кодом, а иногда — и из соглашений о конфиденциальности. Ситуация, конечно, не везде одинакова, она зависит от того, для какой именно платформы пишет код программист, но другим системам сложно поспорить с простотой и предсказуемостью интерфейса Linux.

5. Хорошо продуманные абстракции

Linux, в то же время, даёт нам и разумный набор слоёв абстракции, применимых в ситуациях, когда прямой доступ к чему либо или ручное написание некоего кода может вылиться в больший объём работы, чем тот, к которому готов программист. Много удобных инструментов можно найти в Qt и Java, есть целые стеки вспомогательных технологий, вроде Pulse Audio, Pipewire и gstreamer. Linux стремится к тому, чтобы её пользователи могли бы заниматься программированием, и не скрывает этого.

Итоги

Есть гораздо больше причин того, что программировать в Linux — это удовольствие. Некоторые из них представляют собой широкомасштабные концепции, некоторые — мельчайшие детали, которые избавили меня от многих часов тяжких поисков решения неких задач. Linux — это место, в котором приятно находиться, при этом неважно — на какой именно платформе будет запускаться код, который пишут в Linux. Кем бы вы ни были — человеком который только начал осваивать дело написания программ, или опытным кодером, который ищет себе новый цифровой дом, нет лучше места для программирования, чем Linux.

Какой ОС вы пользуетесь при написании программ?

Вы, наверное, уже не раз слышали, что программировать лучше на Linux и программисты используют его чаще, чем Windows. Но почему сложилась такая ситуация? Конечно операционные системы на базе ядра Linux бесплатны и имеют открытый исходный код. Это огромное преимущество, по сравнению с Windows, но какие же преимущества важны именно для программирования?

Открытый исходный код системы ничем не поможет если вы веб-программист. А что касается бесплатности. то и Windows бесплатную в России найти не проблема. А тем не менее многие программисты предпочитают Linux. В этой небольшой статье мы рассмотрим почему стоит программировать на Linux.

Содержание статьи

  • Почему стоит использовать Linux для программирования

  • Когда Windows лучше для программирования чем 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? Почему? Напишите в комментариях!

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Linux — высокопроизводительная и стабильная система, которая отлично работает на высоконагруженных серверах и предоставляет комфортное использование среды рабочего стола. Для ОС разработаны различные графические оболочки — например, KDE, LXDE и GNOME. Разработчик может выбрать понравившийся интерфейс. Также система довольно хорошо защищена от взлома и вирусов, так как имеет специфическую архитектуру. И хотя Linux устанавливается бесплатно, как и системные программы, это совершенно не говорит о низком качестве продукта. Проект постоянно поддерживается сообществом независимых программистов и энтузиастов-пользователей.

Распределённые файловые системы Linux делают совместную работу над файлами более быстрой и простой, а также обеспечивают дополнительную гибкость сети. Система имеет встроенную поддержку SSH для удобного управления серверами через терминал — это протокол удалённого управления компьютером. Кроме того, в дистрибутивах Linux есть Bash для чтения и запуска команд, выполнения скриптов, работы с файлами. Этот язык помогает пользователям создавать сценарии для автоматизации различных операций в процессе решения прикладных задач.

Дистрибутивы Linux устанавливаются быстро и просто. Во многих из них есть крупные репозитории программного обеспечения с открытым исходным кодом — например, в Debian GNU. У дистрибутива Fedora тоже есть преимущество — это девятимесячный цикл выпуска, в котором все новые функции включены в последнюю сборку. Пользователи могут обновить версию без переустановки. А Ubuntu совместим с Android Open Source Project, которым часто пользуются разработчики Android.

И это ещё только общие нюансы — дальше в статье мы рассмотрим 5 основных преимуществ Linux для программистов.

1. Понимание связей кода и управление ими

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

В целом ничего страшного нет в том, чтобы доверять системе и не вникать в эти нюансы. Но всё же разработчику лучше научиться осмысливать процессы и понимать, что вообще происходит. И Linux в этом может здорово ему помочь — в системе всё прозрачно, в любой момент программист может углубиться в недра системы, найти и прочитать соответствующий код.

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

2. Автоматизация и логичность

В Linux есть мощный терминал. С его помощью разработчик может делать всё то, что позволяет ему сделать доступ через ssh на его веб-сервер, при этом у него есть доступ к локальному. В ОС используются принципы автоматизации. Она специально сделана так, чтобы основные приложения запускались из терминала с дополнительными опциями. Есть возможность и полностью извлекать их из терминала.

Разработчики иногда неправильно воспринимают автоматизацию Linux, так как думают, что написание работающей с терминала программы означает прилагать минимум усилий для получения функционирующего приложения. Но это лишь говорит о том, что они неверно понимают принципы работы кода. Программисту кажется, что чем больше строк кода в приложении, тем лучше, в действительности же количество строк кода мало что значит.

Одну и ту же задачу можно решить вручную и затратить час, а можно использовать нужную команду терминала и потерять не более минуты своего времени. Поэтому Linux ещё и помогает значительно сократить время. Здесь главное — понять нестандартный принцип работы механизмов ОС и привыкнуть к ним.

Приведём пример. Нам нужно добавить изображение обложки к 40 файлам PDF.

Наверняка мы будем действовать по такой схеме:

  1. Запустим документ в PDF-редакторе.
  2. Откроем главный файл с обложкой.
  3. Добавим к нему документ PDF.
  4. Сохраним этот файл как новый PDF-файл.
  5. Проделаем всё это для всех старых документов PDF.

Времени выполнение такой задачи уйдёт немало, да и к тому же, процесс будет рутинным. А вот в Linux всё значительно упрощается. Требуется лишь предварительно продумать все шаги для достижения поставленной цели.

После некоторых поисков решения мы вскоре наткнёмся на команду pdftk-java и выведем простое решение:

$ pdftk A=cover.pdf B=document_1.pdf \
cat A B \
output doc+cover_1.pdf

Теперь нужно проверить, работает ли команда. Достаточно испробовать её на примере одного документа. После этого нужно будет поизучать утилиты, которые обрабатывают наборы данных.

Здесь мы обнаружим команду parallel:

$ find ~/docs/ -name "*.pdf" | \
parallel pdftk A=cover.pdf B={} \
cat A B \
output {.}.cover.pdf

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

3. Возможность читать открытый существующий код

Итак, мы уже выяснили, что программисту лучше уметь самому разбираться, где конкретно располагаются заголовочные файлы и библиотеки. Но на этом обучающие способности Linux не исчерпаны — система также помогает разработчикам читать открытой код других программистов. Это здорово помогает специалистам развиваться.

Разработчики могут посмотреть код почти всех приложений, за исключением тех, которые не открыты, но работают на Linux. Такая возможность помогает им со временем всё лучше и лучше разбираться в задачах. Программист может использовать для этого какое-нибудь приложение, которым он постоянно пользуется. Он сможет обнаружить именно тот функционал, который хочет реализовать, и найти исходный код. То есть можно видеть не только сам код, но и как он работает.

Если код закрыт, пользователь может найти документацию для разработчиков, в которой есть примеры кода.

4. Наличие набора слоёв абстракции

Пользователи Linux получают также возможность использовать слои абстракции. Это помогает уменьшить объём работы при решении некоторых задач. В операционной системе Linux три главных уровня, и слои абстракции здесь находятся в середине, между физическим уровнем аппаратного обеспечения и установленным на компьютере ПО.

Эта возможность в ОС дана для того, чтобы большую часть кода, работающую в режиме ядра, не нужно было менять при её запуске на системах с различным аппаратным обеспечением. Слои абстракции скрывают различия в аппаратном обеспечении от основной части ядра ОС.

Есть немало подходящих инструментов в Qt и Java. Также можно использовать стеки наподобие Pulse Audio, Pipewire и gstreamer.

5. Получение прямого доступа к устройствам

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

В Linux же универсальный и понятный интерфейс. Например, все камеры разработчик видит в системе в виде устройств /dev/video0, /dev/video1 и так далее. То есть управляющей программе не требуется информация об отдельных камерах — она взаимодействует с ними через стандартный интерфейс. И к единой системе наблюдения можно подключить абсолютные любые устройства.

Запомнить

1 преимущество Linux для программистов — возможность научиться понимать связи кода, управлять ими и решать нестандартные задачи.

2 преимущество — автоматизация и логичность ОС, за счёт чего на выполнение задач уходит меньше времени.

3 преимущество — возможность читать открытый существующий код других разработчиков и таким способом развиваться.

4 преимущество — наборы слоёв абстракции в Linux, с их помощью в разы уменьшается объём работы.

5 преимущество — прямой доступ к периферийным устройствам и максимально простой интерфейс платформы.

У каждой ОС есть свои плюсы, минусы и особенности, и как правило программисты выбирают ОС на основе своих предпочтений и представлений. Но что, если отбросить личные симпатии и попытаться взглянуть объективно: какая ОС даёт больше всего преимуществ программисту? Мы задали этот вопрос экспертам, и вот что они ответили.

Выбор ОС в первую очередь зависит от того, в какой области разработчик работает, а ещё это дело привычки и субъективных представлений об удобстве. Я веб-разработчик и успел попробовать несколько операционных систем. Вот мой личный рейтинг удобства ОС именно для разработки веб-решений.

Первое место — 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, мы расскажем, как это сделать.

Cover image for Linux Vs Windows - Why Linux Is Better For Programming & Web Dev (A newbie experience)

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.

Windows and Linux Logos

🧡 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

  1. Linux supports almost all of the programming languages such as Clojure, Python, Julia, Ruby, C, and C++ to name a few.
  2. 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.
  3. 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.
  4. Linux has inbuilt support for SSH. With this, you can easily manage your servers. Learn how to use SSH using this DigitalOcean guide.
  5. You can easily customize and personalize your Linux distribution.
  6. 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:

  1. 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.
  2. Install Ubuntu alongside Windows 10 dual boot
  3. 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.

  1. 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.
  2. 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. 
  3. 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

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Объединение томов жесткого диска windows 10
  • Virtual machine manager для windows
  • Как активировать windows 10 с помощью kms активатора
  • Как отключить титры в windows media
  • Эволюция ос семейства windows