- Linux, Windows или macOS: что выбрать программисту — отвечают эксперты
- Linux, Windows или macOS: что выбрать программисту — отвечают эксперты
- Тельман Мажлумов
- старший backend-разработчик .defa
- Олег Степанов
- инженер-программист компании ICL Services
- Иван Овчинников
- декан профессии «Программист С++» образовательного портала GeekBrains
- Александр Сибречный
- ведущий frontend-разработчик TalentTech
- Александр Пантелеев
- разработчик в Kodix Auto
- Итак, кому какой системой стоит пользоваться?
- Настройка Data Science окружения на вашем компьютере
- Python
- Преимущества Anaconda
- Как установить Anaconda?
- Язык программирования R
- Преимущества RStudio
- Как установить R и RStudio?
- Unix Shell
- Интеграция с другими технологиями
- Unix Shell на Mac
- Команды Unix Shell в Windows
- Интеграция с другими технологиями
- Инструкции по установке Git
- Заключение
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 можно добиться простыми действиями, на «винде» делается сложно.
Александр Пантелеев
разработчик в Kodix Auto
На такой вопрос сложно дать однозначный ответ. Скорее, это больше зависит от предпочтений разработчика. Но очевидно следующее:
- Если пишете программы для какой-то определённой платформы, то её и нужно выбирать.
- Если это веб-разработка, то вероятность того, что сервер будет крутиться на Unix — 80 %, а значит, стоит выбирать Linux или Mac.
Прежде всего следует разобраться, в чём отличие Unix от Windows, и выбрать то, что нравится и больше подходит. Писать хороший код можно везде. В этом вопросе нет серебряной пули, и это самое главное, что нужно понимать начинающему разработчику.
Итак, кому какой системой стоит пользоваться?
Всё зависит от двух вещей: что вам удобно и чем вы занимаетесь. Например, если вы разрабатываете iOS-приложения, то вам придётся пользоваться macOS; если вы пишете бэкенд и сервер крутится на Linux, то, скорее всего, на нём вам и удобней будет работать. Если не принимать во внимание завязанные на конкретной платформе стеки разработки, то всё зависит от ваших предпочтений, ведь очень много софта работает на всех основных системах. Нравится работать в Windows/Linux/BolgenOS? Работайте дальше, если это не ограничивает ваши возможности. К тому же при необходимости в простых случаях можно воспользоваться виртуальной машиной. А переучиваться работать на другой системе просто «потому что» — пустая трата сил и времени.
Настройка Data Science окружения на вашем компьютере
После прохождения различных курсов и обучения на различных образовательных платформах, вроде Datacamp, вашим следующим шагом станет использование полученных знаний о Python, R, Git или Unix Shell на персональном компьютере. Однако, многие из нас затрудняются с тем, какие пакеты и программное обеспечение нужно установить, чтобы начать работу с различными технологиями. Поэтому в этой статье мы рассмотрим:
- Преимущества Python-дистрибутива — Anaconda, а также процесс его установки.
- Преимущества совместного использования R и RStudio, а также процесс их установки.
- Преимущества Unix Shell, а также способы его использования на вашем персональном компьютере.
- Преимущества использования Git, а также процесс его установки.
Ну что же, давайте начнем!
Python
Как вы понимаете, для того, чтобы начать использовать Python — сначала его необходимо установить. Для Python существует огромное количество различных дистрибутивов, но для Data Science — дистрибутив Anaconda является наиболее предпочтительным.
Преимущества Anaconda
Anaconda — это пакетный менеджер, менеджер окружения, а также Python-дистрибутив, содержащий в себе более 400 основных библиотек (с открытым исходным кодом) для научных и инженерных расчетов. Из предустановленных библиотек можно отметить numpy, scikit-learn, scipy, pandas, а также Jupyter Notebooks. На рисунке ниже вы увидите Jupyter Notebook в действии. Это крайне удобный инструмент для создания красивых аналитических отчетов, так как он позволяет хранить вместе код, изображения, комментарии, формулы и графики. Здесь вы можете подробнее узнать о Jupyter Notebooks.
Также у Anaconda есть несколько других преимуществ:
- Если вам потребуются дополнительные пакеты после установки, вы можете использовать менеджер пакетов conda или pip для установки этих пакетов. Это очень удобно, так как вам не нужно будет беспокоиться из-за совместимости одних пакетов с другими. Всю работу за вас сделают conda или pip. Также Conda упрощает переход между Python 2 и 3 (З десь вы сможете подробнее об этом узнать).
- Anaconda поставляется совместно со Spyder — интерактивной IDE для научных расчетов на языке Python. Данная IDE позволяет писать, редактировать и тестировать код. Spyder предлагает просмотр и редактирование переменных с помощью GUI, динамическую интроспекцию кода, нахождение ошибок на лету и многое другое. Также, по необходимости, можно интегрировать Anaconda с другими Python IDE, включая PyCharm и Atom. Здесь вы сможете узнать об этом поподробнее.
Как установить Anaconda?
Ниже приведены ссылки на руководства по установке Anaconda на вашу ОС.
Язык программирования R
Большинство людей устанавливают RStudio в паре с языком программирования R. Интегрированная среда разработки RStudio считается самым простым и удобным способом работы с языком R.
Преимущества RStudio
При работе с языком R, вам доступен простенький встроенный интерпретатор, в котором можно запускать написанные команды. Но с точки зрения комфорта — он вам точно не подойдет. Поэтому и придумали IDE RStudio, который, по мнению некоторых пользователей, упрощает работу с R. Кое-что из его функций вам точно понравится, а именно: цветовая подсветка синтаксиса, автоматическое завершение кода, удобная навигация по скрипту и т.д
При запуске RStudio появляется экран, схожий с тем, что показан сверху. RStudio разделен на 4 экрана: (A) Текстовый редактор. (B) Панель управления для рабочей среды. © Интерпретатор R (D) Справочное окно и менеджер управления пакетами. Вы должны понять, что RStudio — единственная нужная вам вещь при работе с R. Люди очень часто задают вопрос о том, как установить пакеты в R. На видео ниже вам подробно ответят на этот вопрос на примере пакета tidyverse.
Если вам будет интересно углубиться в данную тему, у Datacamp есть серия из двух курсов, посвященных IDE RStudio (Часть 1, Часть 2).
Как установить R и RStudio?
Ниже приведены ссылки на руководства по установке R и RStudio на вашу ОС.
Unix Shell
Навигация по директориям, копирование файлов, использование виртуальных машин и многое другое — являются неотъемлемой частью работы data scientist. Для выполнения этих задач часто используется Unix Shell.
Способы применения Unix Shell:
- Большинство платформ облачных вычислений основаны на Linux. Например, если вы захотите настроить Data Science окружение в Google Cloud или провести глубокое обучение (Deep Learning) с помощью Jupyter Notebooks в облачных веб-сервисах, типа Amazon Web Services и Amazon EC2, для этого вам потребуются знания и навыки работы с Unix Shell. Конечно, вы можете использовать виртуальную машину и на Windows, но подобный метод не так распространен.
- Unix Shell предоставляет ряд полезных команд, таких как: команда «wc», которая подсчитывает количество строк или слов в файле; команда «cat», которая позволяет вывести содержимое файла; команды head и tail, которые выводят начало (head) и конец (tail) файла. О многих других командах вы можете узнать из статьи «8 Useful Shell Commands for Data Science».
- Unix Shell часто интегрируется с другими технологиями, об этом и пойдет речь далее.
Интеграция с другими технологиями
К примеру, зачастую можно увидеть Unix Shell команды вместе с кодом на Python в Jupyter Notebook. В Jupyter Notebook, вы можете получить доступ к Unix командам, обращаясь к Unix Shell с помощью «!». В приведенном ниже коде, результат Unix команды «ls» (которая перечисляет все файлы в текущей директории) присваивается Python переменной myfiles.
На скриншоте ниже изображен код Python, интегрированный в рабочий процесс для объединения нескольких датасетов. Обратите внимание на Unix Shell команду (в красном прямоугольнике), интегрированную в Jupyter Notebooks
Имейте в виду, что код на скриншоте выше — не какой-то уникальный способ решения проблемы, а всего лишь небольшой пример того, как вы можете использовать Unix команды. Если вы захотите научиться использовать Unix в Data Science, у Datacamp есть бесплатный курс, под названием «Introduction to Shell for Data Science», который я крайне рекомендую. Это тот навык, о котором забывают многие начинающие data scientist, но в дальнейшей работе он может очень пригодится.
Unix Shell на Mac
MacOS поставляется с Unix Shell по умолчанию, поэтому вам не придется ничего устанавливать. Но нужно знать, что существует множество Unix-систем, каждая из которых имеет разные команды. Случается, что у вас нет Unix команды (например, wget), которая до этого была в другой Unix системе. Подобно Anaconda и RStudio, у MacOS тоже есть менеджер пакетов под названием Homebrew. Ниже приведена ссылка о том, как установить и использовать Homebrew.
Команды Unix Shell в Windows
В операционной системе Windows команды Unix Shell по умолчанию не предустановлены. Не забывайте — эти команды будут очень полезны для аналитиков и специалистов в сфере Data Science. Существует множество различных способов, с помощью которых вы сможете установить оболочку Unix в Windows. Например, вы можете установить Git в свой Windows, в который уже входят Unix команды, которые будут доступны для работы из командной строки. Кроме того, вы можете установить GNU на Windows с помощью GOW (около 10мб) или с помощью Unix- подобной среды Cygwin(около 100мб).
Git — на сегодняшний день — это самая широко используемая система контроля версий. Система управления версиями записывает все изменения, которые вы вносите в файл или целый набор файлов и сохраняет их как отдельные версии. Это очень удобно, когда, например, вы пишите код на протяжении нескольких недель и понимаете, что в последние три дня писали не то что нужно и просто откатываетесь к нужной вам версии. Git — важная технология, так как, помимо всего прочего, она позволяет одновременно трудиться над одним проектом/кодом разработчикам по всему миру. Большинство современных компаний, занимающихся разработкой, используют Git в своей профессиональной деятельности. Система контроля версий Git имеет следующие преимущества:
- Ни одна из версий, которую вы закоммитили, не будет потеряна, поэтому вы всегда сможете вернуться к предыдущим версиям своего кода.
- Git уведомит вас, если вы будете работать над участком кода, над которым уже кто-то работает. Таким образом, Git предотвращает потерю или перезапись версии (однако и такое возможно).
- Git синхронизирует работу, выполняемую разными людьми на разных компьютерах, поэтому система масштабируется по мере объемов выполненной работы.
- Научившись работать с Git, вы сможете вносить свой вклад в развитие проектов с открытым исходным кодом.
Интеграция с другими технологиями
Самое крутое в системе Git это то, что она интегрируется с другими технологиями. Ранее я уже упоминал, что интегрированная среда разработки RStudio (IDE) — это один из лучших вариантов для работы с языком R. RStudio предлагает поддержку управления версиями, и большинство интегрированных сред разработки Python (узнать об этом поподробнее можно здесь).
Если вы хотите узнать больше о том, как использовать Git в сфере Data Science, на сайте DataCamp есть бесплатный курс на эту тему, который я очень рекомендую к изучению.
Инструкции по установке Git
Ниже приведены ссылки на руководства по установке Git в вашей операционной системе.
Заключение
В данной статье, мы разобрали различные способы настройки Data Science окружения на вашем персональном компьютере. Важно подчеркнуть, что эти технологии часто используются совместно.