iTechArt logo

Кто на новенького, или зачем стоит изучать новейшие языки программирования

Development & QA

Если задаться вопросом: «А сколько в мире сейчас языков программирования?», то даже всезнающий Google не даст внятного ответа. В различных источниках фигурируют цифры от 700 до 9000! Естественно, вместить всё это многообразие в программу подготовки студентов IT-специальностей не представляется возможным. В основном, в белорусских университетах изучают нестареющую классику вроде С, C# и C++, и если для решения клиентских задач требуются другие технологии, то начинающим разработчикам приходится налегать на учебники самостоятельно или искать подходящие стажировки.

Немалое количество языков увидело свет после 2011 года, но уже широко используется на проектах. Среди них – Kotlin и Swift, наиболее распространенные в мобильной разработке; Typescript, который позиционируется как средство разработки веб-приложений, дополняющее возможности JavaScript; и Elixir, который представляет собой надстройку над Erlang.

Что может дать разработчикам знание этих самых «свежих« языков? Расспросили об этом разработчиков iTechArt, в арсенале которых не только владение этими языками, но и реальные проектные кейсы.

Наши собеседники
Дмитрий Егоров.jpg

Дмитрий Егоров

Software Engineer iTechArt

Программирует на Kotlin и Swift. Акцентирует внимание, что оба языка являются многоцелевыми, и их область не стоит ограничивать мобильной разработкой.

Андрей Григорьев.jpg

Андрей Григорьев

Team Manager iTechArt

Обладает знаниями Typescript. Считает его подходящим для любых задач, но особенно актуальным – на сложных приложениях.

Павел Бонда.jpg

Павел Бонда

Software Engineer iTechArt

Владеет языком программирования Elixir. Предполагает, что он в скором времени найдет широкое применение в IoT.

Должен ли, на твой взгляд, разработчик сегодня знать как минимум 1 новейший язык программирования (прим. – имеются в виду языки, появившиеся 2011 года), кроме базы, которую закладывают в университете (С, С++, C#, Java и т.п.)? 

ДМИТРИЙ ЕГОРОВ: Андрей Бреслав, один из создателей Kotlin, в докладе рассказывает о языках, из которых черпали идеи при его создании, а именно –

таких, как Java, C# и Scala. Можно сказать, что новейшие языки берут лучшее из других языков. И часто основа – языки из университетской базы. Поэтому, на мой взгляд, гнаться за новыми языками, как и за трендами, не стоит – все равно не успеете, но стоит развиваться и интересоваться тем, что происходит.

АНДРЕЙ ГРИГОРЬЕВ: На мой взгляд, это сильно зависит от профиля разработчика. Есть технологические стеки, где эти самые новые языки появились и получили распространение: Kotlin в Java-мире, тот же TypeScript в JS. Однако, в .NET, к примеру, балом по-прежнему правит C#. И не похоже, что ему на смену придет что-то новое. Мне кажется, что новые языки стоит изучать там, где это востребовано и может пригодиться. Хотя понятно, что для интереса и расширения кругозора это полезные знания :) Всё же в целом главное для разработчика не конкретный язык, а понимание принципов и идиом разработки, которые за этими языками стоят, а сам по себе язык – всего лишь инструмент, позволяющий эти принципы реализовывать.

ПАВЕЛ БОНДА: Думаю, что это необязательно, но полезно. Я всегда стараюсь расширять свой кругозор и иметь представление о всех популярных современных языках, на уровне синтаксиса, сильных и слабых сторон, области применения. Новые языки создаются опытными разработчиками и зачастую хорошо подходят для решения своих задач. Возможно, однажды вы столкнетесь с задачей, для решения которой лучше подходит какой-либо из новых языков. Также, полученные знания можно применять и при разработке на «старом» языке программирования.

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

ДМИТРИЙ ЕГОРОВ: Оба языка лаконичны и выразительны, читать и писать код на них легко, у них схожий синтаксис. Сложно сказать о преимуществах одного перед вторым, скорее об особенностях. Но я бы сказал, что мне нравится поддержка Kotlin в ide и в комьюнити. Думаю, это дает раскрыть его возможности. Также стоит отметить обратную совместимость у Kotlin, у Swift ее нет. Про Swift (и про Apple в целом) я бы сказал, что мне нравится его самодостаточность, очень много классных решений есть и работают они из коробки. 

АНДРЕЙ ГРИГОРЬЕВ:  Самые главные – это введение строгой типизации и, как следствие, возможность ловить многие ошибки до запуска, на этапе компиляции. Это очень важно для проектов разных уровней сложности, причём с увеличением сложности растет и надобность в такой типизации. При этом, TypeScript работает поверх JS и в рантайме его по факту нет – это и плюс, и минус одновременно.

ПАВЕЛ БОНДА: В Elixir я бы выделил: 

  • Простоту изучения и разработки;
  • Динамическую типизацию и общую «высокоуровневость» языка;
  • Хорошую производительность;
  • Относительно большое количество библиотек.

Что побудило тебя в своё время изучать этот (эти) язык(и)? 

ДМИТРИЙ ЕГОРОВ: Сначала это было любопытство, потом необходимость – в 2017 году на Google i/o объявили Kotlin основным языком. Наша команда к тому времени уже успела попробовать Kotlin в действии, в основном это были тесты. В команде всем нравился новый язык, относительно легко было продвинуть идею перехода на Kotlin менеджменту – были аргументы и про null-safety, и про скорость, с которой бы выходили бы новые фичи, так как кода писать пришлось бы меньше, про простоту самого перехода. Думаю, у многих подобная история.

АНДРЕЙ ГРИГОРЬЕВ: Главным образом, сложности в работе с большим приложением на JS. Постоянные проблемы с типами свойств, типами аргументов в компонентах, которые всплывают на этапе работы приложения, да к тому же еще и не очень хорошо уловимые. В добавку к этому, я обладаю .NET бэкграундом, и новость о том, что Microsoft выпускает свой JS-компилируемый язык, не могла пройти мимо.

ПАВЕЛ БОНДА: Два года назад передо мной стояла задача создания небольшого сервиса, который бы обрабатывал большое количество запросов, не требуя при этом больших вычислительных мощностей. В качестве эксперимента решили написать его на Elixir, и всё получилось без каких-либо сложностей. Решающими факторами при выборе языка были: 

  • бэкграунд команды разработки (Ruby и Rails), Elixir немного похож на Ruby;
  • существование популярного фреймворка Phoenix, также похожего на Rails.

Как часто используешь этот (эти) язык(и) на проектах? 

ДМИТРИЙ ЕГОРОВ: Пользуюсь достаточно часто. Мой основной язык – Kotlin. На нем пишу под Android. Swift в основном использую для своих side-проектов для iOS-приложений. Kotlin и Swift это многоцелевые языки. Область применения не ограничиваются мобильной разработкой. Так, например, на них можно писать и серверные приложения, например для котлина есть фреймворки такие как ktor (можно писать асинхронные клиент-серверные приложения) и Exposed (ORM на основе JDBC) которые созданы самими же JetBrains. Помимо этого Kotlin/JS может транспилироваться Kotlin код в JavaScript.

АНДРЕЙ ГРИГОРЬЕВ: Через некоторое время после того, как я немного погрузился в TypeScript, я стал тимлидом на проекте, и некоторое время спустя мы подошли к началу разработки нового приложения. Зная, что TypeScript уже в принципе был достаточно зрелой технологией и предвидя всё те же сложности с типизацией в новом приложении, я убедил нашу команду попробовать перейти на TS. С тех пор все новые приложения (и новые версии старых) мы разрабатываем только на TypeScript. Мне кажется, на данный момент TS постепенно становится эдаким community standard, хотя эффект инфопузыря я не исключаю :) В целом, язык подходит для любых задач, но особенно раскрываются его полезность и широкие возможности на довольно сложных приложениях. Раньше бытовало мнение, что для простых приложений внедрение TS не оправдано, но теперь, как мне кажется, это уже не актуально.

ПАВЕЛ БОНДА: Большую часть времени я работаю с Ruby. Elixir довольно часто встречается в проектах, использующих Ruby в качестве основного языка, он используется для задач требующих большей надёжности и производительности.

Какие перспективы ты видишь у этого (их) языка (ов)?

ДМИТРИЙ ЕГОРОВ:  Можно посмотреть например рейтинг TIOBE или PYPL. Так в рейтинге TIOBE Objective-C сейчас на 21 месте, Swift – на 16, Kotlin – на 38, Java – на 2. По рейтингу PYPL анализируется, как часто в гугле ищут обучающие материалы по языкам программирования: Objective-C (9 место) сейчас опережает по популярности Swift (10 место). Kotlin занимает в этом рейтинге 11 место, Java на 2. Если же судить по тому, на чем стартуются новые проекты – нативные мобильные приложения – сейчас в основном это Kotlin/Swift. Однако Java и Objective-C остаются достаточно популярными, очень много кода было написано, который еще долго будет поддерживаться.

АНДРЕЙ ГРИГОРЬЕВ: Язык продолжает развиваться, внедрять новый функционал, также поддерживая новые фичи EcmaScript. За TS не приходилось волноваться и раньше, зная, что за ним стоит огромная корпорация, но теперь и комьюнити языка достаточно серьёзное, и многие популярные библиотеки становятся TypeScript-first: например, Angular и Vue.js. Так что, думаю, доля TypeScript в разработке продолжит расти, учитывая, что плюсы его просты и понятны для любого бизнеса, а легкость внедрения и поддержки только растёт.

ПАВЕЛ БОНДА: Elixir уже имеет определенную нишу и его популярность растет. Одним из сегментов роста для Elixir, помимо Web, может стать IoT, я считаю Elixir хорошо подходит для этой сферы.

Если верить Википедии, с 2018 года мир не видел новых языков программирования. Как ты думаешь, стоит ли ожидать в ближайшее время появления “новичков”? И что для этого должно произойти?

ПАВЕЛ БОНДА: Я знаю что новые языки появляются довольно часто и информация на Википедии просто устарела. Язык не может стать популярным за короткий срок, т.к. для популярности языка необходима инфраструктура и стабильность, а для этого необходимы годы развития. Возможно через год, два или пять мы будем обсуждать язык, база которого была создана сегодня.

ДМИТРИЙ ЕГОРОВ: Появление новых языков связано с рядом причин, например, при появлении новой парадигмы программирования, достижений в области аппаратных средств и возникновения новых проблемных областей. Несколько дней назад, например, компания OpenAI выпустила Python-подобный язык программирования Triton. Он позволяет писать высокоэффективный GPU код для задач, связанных с ИИ. Полагаю, языки будут и дальше появляться.

АНДРЕЙ ГРИГОРЬЕВ: Языки программирования появляются постоянно, поэтому мне кажется, что будут. Быть может, не так быстро, ведь многие языки появляются в ответ на то, что старые перестают отвечать новым вызовам, замедляются в развитии и принятии новых фич, либо же парадигма в целом теряет популярность. Многие вещи из функциональных языков продолжают проникать в более мейнстримовые «промышленные» языки, как это и происходило на протяжении последних лет 25: автоматическая сборка мусора, выведение типов, сейчас это, к примеру, pattern-matching, каррирование и так далее. Опять же, языки появляются по мере расширения аудитории, ведь с течением времени входной барьер становится всё ниже. И многим языкам и технологиям приходится эволюционировать, чтобы учитывать это, работать на снижение сложности понимания у себя, стараться внедрять всё больше автоматизированных фич. Ведь иначе можно проиграть конкурентную борьбу. Никому ж не нравится работать с указателями в C++, правда? :)

Да и в общем, ведь про 2018 как дату выхода последнего нового языка – не совсем правда, к примеру, в этом году релизнулся Microsoft Power Fx. Он исповедует принцип low-code, то есть позволяет разрабатывать через графический интерфейс вместо текстового людям, слабо знакомым с программированием как таковым.