При обучении программированию будущих разработчиков обычно учат программировать ванильное программное обеспечение. Однако на рабочем месте разработчики используют множество инструментов для ускорения своего программирования. Обычные задачи, такие как тестирование, запуск различных скриптов и контроль среды программирования, — это лишь несколько примеров того, когда дополнительный инструмент пригодится.
Проблема в том, что на рынке существует множество таких инструментов, и трудно определить, какие из них лучше. Часто требуются годы проб и ошибок, чтобы определить, какие инструменты наиболее полезны. Чтобы избавить вас от лишних усилий, мы спросили некоторых опытных разработчиков об инструментах, которые помогли им стать лучшими программистами и максимально повысить эффективность своей работы.
Сегодня мы рассмотрим эти 7 инструментов:
Разработчики давно используют Linux из-за его гибкости и возможностей настройки. I3 расширяет эти возможности, обеспечивая практически полный контроль над вашей средой программирования.
I3 — это легкий оконный менеджер с открытым исходным кодом для Linux. Оконные менеджеры используются для управления внешним видом и размещением окон на экране. Менеджеры тайлинговых окон делают еще один шаг вперед, автоматически изменяя размер и перестановку окон, чтобы всегда использовать полноэкранное пространство без перекрытия. Эта плитка работает поверх графического интерфейса пользователя вашей операционной системы (GUI), позволяя вносить изменения напрямую.
Вот несколько отличий I3 Window Manager (i3wm):
config
файл. Вы можете перемещать плитки, открывать терминал, изменять макеты и многое другое, не прикасаясь к мыши.Один из самых полезных инструментов I3 — это возможность группировать окна в пронумерованные рабочие области. Разработчики часто устанавливают рабочие области для разных частей своего рабочего процесса. Вы можете быстро переключаться между рабочими областями, нажимая super
и указывая указатель рабочей области. Это скроет все текущие окна и расположит окна выбранной рабочей области.
Оптимальное использование рабочих пространств повышает производительность. Они также полезны при настройке с двумя мониторами, поскольку на каждом мониторе открыто рабочее пространство, и вы можете быстро переключать, на каком мониторе рабочее пространство включено в данный момент, всего одним нажатием клавиши.
Vim — это текстовый редактор для большинства языков программирования. Этот текстовый редактор, ориентированный на разработчиков, фокусируется на настройке привязки ключей и эффективности кодирования.
Это модальный текстовый редактор, то есть у него может быть несколько режимов, каждый из которых оптимизирован пользователем для конкретной задачи. Например, у вас может быть настроен один режим для Python и один для C ++. Эти режимы позволяют одному нажатию клавиши вести себя по-разному в зависимости от языка, например, использовать сочетания клавиш для конкретного языка.
Как и I3, Vim полностью управляется с клавиатуры. Сокращая использование мыши, вы можете сократить время простоя и сократить перерывы в рабочем процессе. Vim также разработан для работы практически на любой крупной платформе, что идеально подходит для командной работы.
Наконец, все ярлыки Vim настроены в общедоступном .vimrc.
файле. Многие разработчики публикуют свои протестированные файлы на Github. Начиная с одного из этих файлов, вы сможете воспользоваться опытом коллег, оставив свою личную версию доступной для индивидуального редактирования.
Одна из основных парадигм, которой придерживаются программисты, проста: не повторяйтесь.
Мы рассматриваем это в коде как способность распознавать повторяющееся поведение кода и извлекать его в модульный метод. Такое модульное мышление позволяет вам вводить каждое поведение только один раз, а затем просто вызывать метод, когда вам понадобится это поведение позже.
Используйте ту же парадигму для эффективной настройки ярлыков Vim. Например, если вы заметили, что в вашей работе часто требуется реализовать бинарное дерево поиска на Java, вы можете настроить ярлык для вставки шаблона бинарного дерева поиска.
Bash — бесплатная оболочка Unix, разработанная для проекта GNU. Долгое время она использовалась как оболочка входа по умолчанию в Linux, а совсем недавно — в macOS и Windows 10. Помимо логинов, Bash поддерживает сотни команд, которые можно вызывать из приложения.
Bash известен своей возможностью написания сценариев. Вместо того, чтобы вводить набор команд каждый раз, когда они вам понадобятся, вы можете вместо этого сохранить один файл сценария оболочки, содержащий все эти команды. Каждая команда будет выполняться в том порядке, в котором они были введены.
Bash работает на самом низком уровне, что означает, что эти команды могут манипулировать файлами и памятью, не открывая носитель настольного приложения. Например, вы могли бы создать сценарий командной строки, который систематически переносит все содержимое жесткого диска на другое устройство, даже не открывая файловый менеджер, такой как File Explorer.
Обходя настольные приложения, Bash может работать более эффективно и часто позволяет выполнять более специализированные задачи.
Эффективное использование истории Bash может сыграть решающую роль между компетентностью и мастерством. Чтобы убедиться, что вы извлекаете все возможное из своей истории, вот несколько полезных команд, которые вам не захочется забывать:
История с поддержкой нескольких окон
По умолчанию Bash записывает историю только с первого открытого экземпляра, в то время как все последующие окна теряют свою историю. Следующая команда позволяет всем активным окнам Bash записывать данные в историю, поэтому вы больше никогда не потеряете команду. shopt -s histappend
Повторите последнюю команду
Повторение последней выполненной команды — обычная функция в Bash. Вы можете ввести любую из следующих 4 команд:
enter
выполнить ееctrl+p
, чтобы просмотреть последнюю команду и enter
выполнить ее!!
в командной строке1-!
в командной строке
Вы можете добавлять дополнительные элементы к командам, повторяющимся с помощью
!!
, включая их до или после:sudo !!
Обратная история поиска
Вы можете просмотреть историю предыдущих команд в Bash. Просто нажмите ctrl-r
и начните вводить поиск, чтобы Bash автоматически заполнился соответствующими строками. Если несколько строк совпадают, нажмите ctrl-r
еще раз, чтобы просмотреть их.
Функциональное программирование — это декларативная парадигма программирования, которая использовалась для создания программ путем объединения чистых функций.
Программы создаются на основе отдельных или комбинаций небольших первоклассных функций, которые не имеют побочных эффектов. Декларативное программирование фокусируется на построении решений, которые следуют за тем, что должно быть сделано, а не на том, как это будет сделано. Вы можете легко разрабатывать декларативные программы благодаря математическим, логическим корням парадигмы.
Функциональное программирование более модульно, чем другие подходы. Разделение вашей программы на более мелкие функции позволяет повторно использовать их в вашей программе. Более крупные проблемы можно решить, объединив эти более мелкие модульные функции. Это позволяет вам повторно использовать любую часть вашего решения по отдельности.
Наконец, функции функционального программирования не имеют побочных эффектов. Это означает, что данные в функциональном программировании никогда не изменяются.
Допустим, я хотел создать программу, которая начинается с n
, затем переходит n
в function1
и, наконец, передает результат function1
в function2
. Давайте посмотрим, чем это отличается от псевдокода:
Блочный подход
int n =5; n = function1(n); n = function2(n); return n;
Функциональный подход
int n =5;
return function2(function1(n));
При функциональном подходе у нашей функции нет побочных эффектов, поскольку n
значение используется, но никогда не меняется. Перейдя function1(n)
непосредственно в function2
, а не в дополненный n
способ, мы решили проблему декларативно.
Существуют функциональные языки программирования, которые применяют эту парадигму, такие как Clojure, Scala или Haskell. Хотя они обладают большими возможностями, переход к ним может оказаться трудным, если вы не привыкли к функциональному программированию.
Для начала попробуйте программировать на вашем текущем языке, используя функциональный подход. Вот несколько способов сделать это:
map
, reduce
и аналогичные операции над счетчиками и циклами, чтобы отвлечь ваше мышление от блочного программирования
Регрессионное тестирование — это акт подтверждения того, что разработанное программное обеспечение все еще функционирует после обновления. Это важная часть жизни разработчика, поскольку обновления происходят очень часто. К сожалению, процесс может быть очень утомительным, когда нам приходится учитывать все возможные ошибки.
Reflect решает эту проблему, создавая автоматические регрессионные тесты для любого веб-сайта. Это программное обеспечение не требует установки и может использоваться с любым фреймворком JavaScript.
Вот как это работает:
Результатами теста будут видеозапись того, что произошло, а также распечатки сетевых запросов и консоль JavaScript. Получение всей этой информации сразу позволит вам быстро диагностировать проблему и определить ее источник.
Вы можете создать тестовый пример один раз и повторять его неограниченное количество раз в течение срока службы сайта. Это не только сэкономит вам бесчисленные часы ручного тестирования, но и автоматически сгенерирует видеозаписи каждого теста для документирования точного случая ошибки.
Короче говоря, Reflect становится популярным среди разработчиков из-за своей простоты, повторяемости и точности.
То, что мы рассмотрели выше, — это лишь верхушка айсберга того, что может сделать Reflect. Вот список некоторых других полезных функций, которые вы можете использовать с Reflect:
Регулярные выражения — это набор символов, описывающих поведение шаблона поиска. Они часто используются в алгоритмах поиска строк для поиска разделов, соответствующих шаблону.
В Bash есть уникальный оператор регулярных выражений, =~
который выполняет поиск совпадений с заданным шаблоном регулярных выражений. Например, if [[ $digit =~ [0-9] ]]; then
будет выполнять поиск в строке любого экземпляра digit.
Помимо Bash, как Python, так и Java поддерживают параметры regex.
Они отлично подходят для проверки данных и других задач обработки текста, поскольку позволяют реализовать очень сложные параметры поиска всего с несколькими символами. Они также известны разработчикам по всему миру, поскольку являются частью обычного языка, созданного теоретиками компьютерных языков.
В целом, они быстры в освоении, широко понятны и обладают большим потенциалом сложности. Изучение regex — отличный способ расширить свой набор навыков и предоставить вам доступ к мощному инструменту на Bash, Java или Python.
Одним из наиболее распространенных применений regex сегодня является веб-скрейпинг, процесс извлечения избранной информации из массовой коллекции веб-сайтов. Это связано с тем, что вы можете использовать регулярное выражение для извлечения подстрок, соответствующих параметрам, из большей искомой строки.
Существует множество приложений для этого, например, вы можете искать на сайтах конкурентов их цены на данный продукт:
$:\s+([^\s]+)
Это регулярное выражение выполняет поиск всего, что стоит после знака доллара, и извлекает это в отдельный файл. После завершения работы этот файл предоставит вашей компании полный доступ к сравнению цен на десятки продуктов.
Выше приведен лишь один пример использования только одного выражения. Веб-скрейпинг — мощный инструмент для современных компаний, популярность которого будет продолжать расти. Изучение регулярных выражений для веб-скрейпинга может дать вам конкурентное преимущество на должностях аналитиков.
Хотя регулярные выражения начинаются легко, они могут быстро стать очень сложными. Не смотрите дальше этого регулярного выражения, чтобы соответствовать определенным типам URL.
^(http|https|ftp):[\/]{2}([a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4})(:[0-9]+)?\/?([a-zA-Z0-9\-\._\?\,\'\/\\\+&%\$#\=~]*)
Вы можете ясно видеть, насколько сложными они могут стать.
RegExr — это бесплатный инструмент визуализации и тестирования регулярных выражений, цель которого — упростить понимание сложных функций регулярных выражений. Поскольку regex стандартизирован, RegExr просто анализирует все разделы regex и переводит их значение в форму поясняющего предложения. Вы также можете навести указатель мыши на эти пояснения, чтобы увидеть, где именно в выражении это было найдено.
Ниже я ввел сложный пример, использованный выше, и использовал функцию объяснения. Посмотрите, как объяснение обозначено цветом, выделив данный раздел:
RegExr экономит ваше время при работе с более длинными регулярными выражениями. Это также устраняет необходимость запоминания библиотеки. На стороне сайта вы можете найти полный список формул регулярных выражений и их использования. Простой щелчок по ним вставляет эти формулы в ваше выражение.
Наконец, RegExr можно использовать для проверки ваших выражений, заполнив область “тест” текстом примера. RegExr применит подготовленное регулярное выражение для поиска по тексту примера, чтобы выделить любые совпадения. Вы можете навести указатель мыши на эти соответствия, чтобы получить о них дополнительную информацию, например, из-за того, какая часть выражения привела к обнаружению этого.
Хотя RegExr может помочь объяснить длинные регулярные выражения, их всегда будет сложнее понять, чем более короткие выражения. Приоритизация более коротких выражений позволит вам и вашей команде лучше понять выражение с первого взгляда. Кроме того, получение единого выражения для заполнения всех параметров поиска — это трудоемкий процесс, который становится более подверженным ошибкам.
Попробуйте применить несколько выражений меньшего размера, каждое из которых выполняет поиск одной или двух функций. Это не только устраняет указанные выше проблемы, но и позволяет повторно использовать некоторые или все выражения в последующих проектах.
На этом мы завершили наш обзор 7 инструментов и программного обеспечения, которые помогут вам стать более эффективным программистом. От Vim до Reflect и RegExr мы рассмотрели некоторые из наиболее используемых и любимых инструментов, предлагаемых разработчиками, для разработчиков.
Хотя некоторым из этих инструментов нужно учиться, уверяю вас, что в конечном итоге вы сэкономите часы времени и тысячи нажатий клавиш, освоив их.