Языки программирования — один из самых значимых инструментов в арсенале DevOps. Правильный выбор языка для вашего приложения — важное условие успеха разработки и достижения непрерывной интеграции или постоянной поддержки (CI/CD).

Учитывая, что существуют сотни языков программирования (https://en.wikipedia.org/wiki/List_of_programming_languages), выбор языка для разработки и эксплуатации приложений может оказаться нелегким делом. То обстоятельство, что популярность разных языков зависит от местоположения, еще более усложняет задачу. Это означает, что ваше представление о том, какой язык программирования следует считать лучшим, зависит от того, в какой стране вы живете.

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

Какими свойствами должен обладать язык программирования

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

Чтобы добиться успеха в разработке и эксплуатации, постарайтесь наделить ваши приложения и процессы поставки программного обеспечения следующими характеристиками:

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

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

Пять лучших языков программирования для специалистов по разработке и эксплуатации приложений

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

Go

Golang, язык программирования, более известный просто как Go, — относительно новый язык, представленный широкой аудитории в 2009 году. Он появился в то время, когда начало возрастать значение разработки и эксплуатации приложений.

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

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

Python

Python существует с 1980-х (https://en.wikipedia.org/wiki/Python_(programming_language)#History) и к настоящему времени уже широко известен. Как язык сценариев он довольно удобен для таких задач, как управление инфраструктурой. Но не следует недооценивать Python и как язык программирования приложений. Благодаря обширным библиотекам общедоступных модулей Python можно быстро приступить к решению задачи и не писать самостоятельно лишнего программного кода.

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

Наконец, Python, вероятно, является одним из универсальных языков. Это адаптируемый язык, который сегодня используется везде, от Интернета вещей (IoT) до обработки объемных данных. Можно с уверенностью утверждать, что развитие Python будет продолжаться, чтобы удовлетворить любые потребности программистов в области разработки и эксплуатации приложений в будущем.

Ruby

Если вам нравится Python, то, скорее всего, понравится и Ruby. Управление инфраструктурой, вероятно, главная область применения Ruby, но, как и Python, этот кросс-платформенный язык можно успешно применять для самых разнообразных задач.

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

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

Scala

Невозможно написать статью о ведущих языках программирования для разработки и эксплуатации приложений без упоминания о Java. Это самый популярный в мире язык программирования (https://www.inc.com/larry-kim/10-most-popular-programming-languages-today.html). Однако, на мой взгляд, Java не лучшим образом подходит для разработки и эксплуатации приложений. Приложения Java не отличаются особенной быстротой. Управление средами исполнения Java может доставить конечным пользователям массу хлопот. Кроме того, программист может растеряться перед быстро растущим громоздким кодом Java, составленным кем-то другим.

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

Производительность Scala в целом не намного выше, чем Java. Это, вероятно, основной недостаток Scala. Еще один изъян: для запуска приложений Scala необходима среда исполнения Java. Но если вы хотите заниматься разработкой и эксплуатацией приложений и Java — ваш любимый язык программирования, то потратьте время на изучение Scala и воспользуйтесь этим языком. В долгосрочной перспективе ваши усилия окупятся.

Си

Си, возможно, не первый язык, о котором вспоминают, когда речь заходит о разработке и эксплуатации приложений. Он появился в начале 1970-х (https://www.codingunit.com/the-history-of-the-c-language) и является одним из самых старых языков, широко используемых и по сей день. Он на несколько десятилетий старше технологий для разработки и эксплуатации приложений.

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

В среде разработки и эксплуатации приложений у Си есть недостатки. Двоичные файлы приложений, разработанных на Си, не отличаются высокой переносимостью, несмотря на переносимость исходного текста (если, конечно, вы не организовали низкоуровневое взаимодействие с аппаратными средствами — это верный способ нарушить переносимость приложений Си). Такой подход к использованию Си — не лучший при работе над проектами по разработке и эксплуатации приложений.

Си не проектировался как объектно-ориентированный язык, поэтому для проектирования модульного программного кода он не подойдет. Для этой цели предпочтителен родственный язык, C++.

Возможно, вы обратили внимание, что в нашем списке лучших языков программирования для разработки и эксплуатации приложений нет JavaScript. Некоторые утверждают, что Javascript и Node.js, позволяющий выполнять программный код JavaScript на стороне сервера, вполне подходят для разработки и эксплуатации приложений (https://devops.com/nodejs-becoming-devops-friendly/), но я не думаю, что JavaScript пригоден для гибкого, высокопроизводительного программирования.

JavaScript проектировался в первую очередь как язык сценариев на стороне клиента для веб-страниц. Хотя Node.js обеспечивает более широкий набор сценариев для развертывания JavaScript и вы можете применять Node.js для различных задач, по универсальности он уступает языкам, изначально проектировавшимся как действительно кросс-платформенные.

Я не отрицаю возможностей JavaScript и Node.js, они вполне хороши. Просто, на мой взгляд, эти языки не оптимальны для организации рабочих процессов, типичных для разработки и эксплуатации приложений.

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