Почему Go, Python, Scala, Ruby и Си подходят для разработки и эксплуатации приложений (DevOps), a JavaScript — нет?
Языки программирования — один из самых значимых инструментов в арсенале DevOps. Правильный выбор языка для вашего приложения — важное условие успеха разработки и достижения непрерывной интеграции или постоянной поддержки (CI/CD).
Пять лучших языков программирования для специалистов по разработке и эксплуатации приложений
Наш список языков, особенно удобных для таких целей, как разработка и эксплуатация приложений, не полон. Конечно, существует много других подходящих для этого языков, а инженерам полезно знать несколько. Но перечисленные в данной статье — одни из самых популярных и широко используемых.
Go
Golang, язык программирования, более известный просто как Go, — относительно новый язык, представленный широкой аудитории в 2009 году. Он появился в то время, когда начало возрастать значение разработки и эксплуатации приложений.
Сегодня Go как нельзя лучше подходит для разработки и эксплуатации приложений по нескольким причинам. Спроектированный на основе С, Go отличается превосходной производительностью. Кроме того, он проектировался с учетом преимуществ параллелизма, и этот фактор также способствует производительности. Переносимость Go очень высока. Это компилируемый язык, но вам не нужно беспокоиться о зависимостях при компиляции приложений Go, поэтому создавать их можно быстро.
Вероятно, единственный недостаток Go заключается в том, что этот язык еще молодой, и пока с ним не знакомы многие специалисты. Некоторым инженерам по разработке и эксплуатации приложений придется потратить время на освоение языка.
Python
Python существует с 1980-х и к настоящему времени уже широко известен. Как язык сценариев он довольно удобен для таких задач, как управление инфраструктурой. Но не следует недооценивать Python и как язык программирования приложений. Благодаря обширным библиотекам общедоступных модулей Python можно быстро приступить к решению задачи и не писать самостоятельно лишнего программного кода.
Кроме того, использование Python способствует оптимизации подходов к программированию благодаря стилистическим требованиям, вследствие которых код, составленный одним специалистом, понятен другому специалисту. Это важное достоинство в мире разработки и эксплуатации приложений, где предполагается непрерывность понимания выполняемых приложением операций. Наконец, Python, вероятно, является одним из универсальных языков. Это адаптируемый язык, который сегодня используется везде, от Интернета вещей (1оТ) до обработки объемных данных. Можно с уверенностью утверждать, что развитие 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, они вполне хороши. Просто, на мой взгляд, эти языки не оптимальны для организации рабочих процессов, типичных для разработки и эксплуатации приложений.
Если предпочитаемый вами язык не попал в наш список, повторюсь: в конечном итоге успех технологии для разработки и эксплуатации приложений зависит от соответствия инструментария и процессов конкретным задачам; не существует общего подхода, оптимального для всех. Если в распоряжении вашей команды есть более удобный язык, смело беритесь за работу, используя все его преимущества.
Источник: журнал Windows IT Pro июль 2018
About The Author
Виктор Карабедянц
ИТ директор (CIO), руководитель нескольких DevOps команд. Профессиональный руководитель проектов по внедрению, поддержке ИТ систем и обслуживанию пользователей.