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

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

В руководстве приводится пример базовой настройки 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

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

Для 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

Альтернативный эмулятор, доступный по ссылке: MobaXterm. Также как и 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, что приводит к конфликту с Chocolatey.

$ choco install babun

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

Исходный код (github)
Кирилл Мокевнин
comments powered by Disqus