Как начать разрабатывать в Windows

Подготовка окружения для современной разработки.

Содержание
  1. Командная строка
  2. Основная (общая) конфигурация
    1. Chocolatey
    2. Терминалы
      1. Cmder (базируется на ConEmu)
      2. MobaXterm
      3. Hyper.js
  3. Ubuntu for Windows
  4. Vagrant
  5. Babun (Cygwin)

В руководстве приводится пример базовой настройки Windows, приближающей её по возможностям к другим операционным системам.

Среда Windows не очень хорошо подходит для разработки, если вы не пишете под .net. Выражается это во многих аспектах: система не POSIX-совместимая (а большинство библиотек пишется именно для таких систем, например linux или mac), в Windows нет примитивных средств, которые необходимы любому разработчику для комфортной работы.

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

Командная строка

Первое, к чему сразу нужно привыкать — командная строка. Работа на удаленных серверах, git, пакетные менеджеры и многое другое, все это делается, в первую очередь, в командной строке. Хотя такой способ и непривычен для обычного пользователя, он имеет множество преимуществ перед использованием мыши. К ним относятся:

  • Скорость работы значительно возрастает и намного опережает оконные интерфейсы
  • Легкая возможность автоматизации действий за счет скриптования. Другими словами, любые команды можно записать в файл и использовать его. Никаких специальных средств не требуется
  • Гораздо более лучшее понимание происходящих процессов
  • На серверах оконного интерфейса не бывает в принципе, так что тут без вариантов

Если вы пользуетесь IDE, то, скорее всего, знаете, что они интегрируют внутри себя множество инструментов. И хотя местами такая интеграция удобна (не для всех), не стоит ей злоупотреблять в самом начале пути. Гораздо лучше научиться пользоваться чистыми инструментами для лучшего понимания происходящего. К тому же, вы не будете зависеть от среды и всегда будете ориентироваться на местности.

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

Командная оболочка (shell, командный интерпретатор) — программа, позволяющая с помощью текстовых команд выполнять функции операционной системы и управлять другими программами. Например с помощью shell можно перемещаться по файловой системе и выполнять операции по созданию и удалению файлов. Сам по себе shell представляет из себя REPL (Read Eval Print Loop). Другими словами после запуска оболочки, появляется строка ввода в которую вводятся команды. После того как команда отработает, shell снова входит в режим ожидания ввода команд. Кстати у многих языков программирования есть свой собственный REPL, позволяющий в таком же стиле запускать код.

В Windows по умолчанию используется command.com, а в Linux — Bash. Кроме них существует множество других оболочек, но Bash —стандарт де-факто, и его нужно знать.

Чтобы запустить shell нужна еще одна программа — терминал (term, Terminal Emulator). Терминал — это и есть то самое окно, внутри которого запускается оболочка. Этот термин изначально использовался для отдельно стоящих монитора и клавиатуры, посредством которых можно было подключиться к мейнфрейму (большим многопользовательским компьютерам древности). Терминалы популярны и сейчас: те же банкоматы и устройства для пополнения денег на счетах всевозможных сервисов. Поэтому тот терминал, который представлен программой на наших компьютерах, называют эмулятором, ведь у него нет железной части.

Терминалов, как и оболочек существует множество. Разница заключается в том, какие возможности для удобной работы они предоставляют. Например, очень важно чтобы терминал поддерживал вкладки. Тогда очень сильно упрощается работа с большим количеством терминалов. Стандартный эмулятор в Windows не умеет работать ни с вкладками, ни с чем либо ещё. По сути, все что он делает — запускает cmd.exe и больше никак не участвует в процессе.

А вот что могут хорошие терминалы:

  • Вкладки
  • Split Panes - разделение рабочей области на части
  • Поиск
  • Профили

и многое другое.

В Windows часто бывает так, что терминал одновременно поставляется с командной оболочкой.

Основная (общая) конфигурация

Chocolatey

Пакетные менеджеры в средах, отличных от Windows — это основной способ установки программ и библиотек на компьютер. Если вам понадобится поставить Node.js, то достаточно сделать следующее:

// mac
$ brew install node

// ubuntu
$ apt install node

Удобств в таком способе довольно много. Во-первых, не нужно бродить в поисках необходимого софта по всему интернету и тратить уйму времени. Во-вторых, всё, что можно набрать в командной строке автоматизируется. Другими словами, можно написать скрипт, который сам будет ставить все, что нужно (подробнее https://www.ansible.com/).

Для Windows существует несколько пакетных менеджеров, но именно Chocolatey стал стандартом де-факто. Установка choco стоит из нескольких простых шагов, которые хорошо описаны в соответствующем разделе.

В чем-то Chocolaty справляется даже лучше, чем brew или apt. С его помощью можно ставить не только специализированный софт (например, для программистов), но и любые программы вообще.

$ choco install GoogleChrome

или, что тоже самое

$ cinst GoogleChrome

Список того, что можно поставить находится здесь.

В тексте ниже подразумевается, что вы установили Chocolatey и знаете как им пользоваться.

Терминалы

Cmder (базируется на ConEmu)

Эмулятор, поставляющийся вместе с командной оболочкой Git Bash. Его установка решает сразу две задачи. С одной стороны вы получаете продвинутый терминал, с другой, из коробки, эмулятор Bash (настоящий bash получить нельзя, он работает только в *NIX системах).

Запустите программу cmd.exe и выполните там следующую команду:

$ choco install cmder

После установки Cmder всё остальное следует делать только из под него.

MobaXterm

Альтернативный эмулятор, доступный по ссылке https://mobaxterm.mobatek.net. Также как и Cmder, из коробки поставляется с командной оболочкой. Бесплатен для домашнего использования.

$ choco install mobaxterm

Hyper.js

Рассмотрен здесь для полноты картины. В отличие от предыдущих предоставляет только терминал. По умолчанию запускает внутри себя cmd.exe, но можно настроить на любую оболочку.

$ choco install hyper

Ubuntu for Windows

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

Vagrant

Vagrant — программа, созданная для разворачивания окружения разработчика, работающая во всех основных операционных системах. Она работает совместно с одной из систем виртуализации (например VirtualBox). Главное преимущество перед другими способами работы в Windows в том, что это не эмуляция, а полноценная виртуальная машина с Linux на борту.

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

choco install virtualBox
choco install vagrant

Babun (Cygwin)

Cygwin — программное обеспечение, эмулирующее среду Linux на Windows. С его помощью можно запускать программы, написанные под Linux. Конечно, у этого способа множество ограничений, но все же он лучше, чем ничего.

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

$ choco install babun

Кирилл Мокевнин

Поделиться
Отправить