История языков программирования: 2010-е
Лично мне в исторических сериях больше всего нравится читать последние главы, посвященные недавним событиям. Это позволяет взглянуть на сегодняшний день под другим углом, сделать определенные выводы о том, куда мы движемся. Попробуем и в заключительной статье «Истории языков программирования» спрогнозировать, что ждет IT-сферу в 2020-м.
Но сперва перебросим мостик к предыдущей части. Как вы помните, разошлись мы на том, что уже в конце первого десятилетия XXI века крупные компании взяли в оборот выражение «большие данные» и именно на их обработку бросили максимум усилий. Для этого:
- Изобретались новые языки взамен фундаментальных. Objective-C, C++, JavaScript, PHP и другие прекрасно справлялись с текущими задачами. Но в будущем, при значительном росте объема информации, их синтаксис и возможности могли вызывать сложности у программистов. Чаще всего улучшения сводились к упрощению синтаксиса, чтобы сократить время разработки и выпуска нового ПО;
- Разрабатывались новые алгоритмы и библиотеки для создания искусственного интеллекта. В перспективе именно ИИ должен взять на себя работы низкой сложности: прямой контакт с пользователем, внедрение обновлений, поиск и устранение большинства багов;
- Повышалась гибкость языков. В те языки, которые еще имели пространство для глобальных улучшений, добавлялись полноценные возможности ООП, функционального программирования, библиотеки для работы с периферией, дизайном, математикой и прочее.
Последние две концепции проявились почти во всех популярных языках программирования: Python, Java, JavaScript и даже Fortran с Ada. В 2010-х они развивались и адаптировались к актуальным задачам, что добавило им сторонников. Но всегда были и те, кто находил в популярных языках причины торможения эволюции. И в качестве ответа публике предлагали новые ЯП, лишенные характерных изъянов.
Борьба с С
Язык С++ уже более 30 лет успешно существует в мире программирования, позволяя решать широкий спектр задач — особенно там, где требуется высокая производительность при ограниченных ресурсах. Заменить его пытаются уже давно, но упрощение синтаксиса и определенных конструкций (в частности, работы с памятью) неизбежно снижает скорость исполнения, а значит теряется главная прелесть. В этом плане язык Rust, официально представленный компанией Mozilla в 2010 году, подобрался к успеху ближе всего.
Он не сильно уступает в производительности С++, однако дает больше надежности на выходе, да и в плане синтаксиса чуть удобнее для программиста. Позитивная оценка со стороны сообщества разработчиков подтверждается ежегодным опросом на портале Stackoverflow, где Rust уже 4 года остается в тройке наиболее любимых языков и третий раз стабильно возглавляет рейтинг. И хотя объемы работ на С/С++ и Rust несопоставимы, есть шанс, что в ближайшем десятилетии пропасть между ними будет уменьшаться.
Корпорации тоже против вечного
В XXI веке в IT выросла роль узкого круга компаний, практически каждая из которых запустила свой язык программирования. Вы помните, что в Microsoft на рубеже 90-х и 2000-х разработали C#. В 2010-х эта традиция продолжилась: компания Apple запустила Swift, Facebook — Hack, Google — Dart (а ведь в 2000-х появился еще и Go).
Каждый из этих языков должен был заменить или дополнить своего популярного предшественника. Так, Swift пришел на смену Objective-C. По выходной производительности приложений эти два языка схожи, но если брать трудозатраты разработчика, Swift демонстрирует серьезное превосходство. В Apple при этом не стали форсировать события и принуждать всех переходить на новые методы разработки. Но — чтобы вы понимали эффект — согласно статистике портала TIOBE, всего за год после выхода Swift количество запросов «Objective-C» в популярных поисковиках снизилось почти в 10 раз. Сегодня востребованность языков уже сопоставима.
У Dart история чуть более витиеватая — общий успех все еще под сомнением, да и подвижки в популярности происходят лишь благодаря влиятельному покровителю. Правда, и задача сложнее — заменить JavaScript. Впервые Dart появился в 2011 году — в Google на него возлагали большие надежды, активно развивали, продвигали в массы. Основными «фишками» языка должны были стать не только упрощенный синтаксис и повышенная надежность программ, но и варианты запуска: с компиляцией в JavaScript-код и без нее (прямая работа с браузером Chromium). Но в итоге оказалось, что этого недостаточно, чтобы заставить разработчиков массово отказываться от JavaScript. В результате в Google в 2016-м заморозили все работы по проекту, а в феврале этого года неожиданно громыхнули с выходом Dart 2. Пока все выглядит хорошо, а эффективность такого шага сможем оценить лишь в новом десятилетии.
Про язык Hack пока вообще не стоит говорить как о преемнике PHP. В Facebook он был разработан для решения частных проблем, связанных с большими данными. Hack «понимает» код, написанный на PHP, а значит формально не вынуждает разработчиков делать выбор. Учитывая перечень решаемых задач и частоту апгрейдов языка, Hack скорее сам исчезнет из мира программирования, чем обгонит по популярности PHP.
В некотором роде схожая судьба выпала Kotlin — продукту компании JetBrains и идеологическому конкуренту Java. В сравнении с оригиналом, здесь улучшен синтаксис и повышена безопасность выходного кода. Не стоит забывать и об официальной поддержке популярных IDE: IntelliJ IDEA и Android Studio. В результате у языка немало поклонников, но среди них практически нет тех, кто бы отказался от Java в пользу Kotlin. Возможно, стоит подождать.
Чудотворный Elixir
Было в 2010-м и развитие на фронте функциональных языков программирования. В 80-х годах в телекоммуникационной сфере был разработан Erlang — узкоспециализированный язык для написания высоконадежных утилит и прикладных программ. Большой славы он не снискал, но и в истории не затерялся: до сих пор используется для написания части кода в серверах видеостриминга. Надежность ценится всегда.
Сегодня на смену Erlang пришел Elixir — язык с улучшенным синтаксисом, отдаленно напоминающим Ruby. Они полностью совместимы, поэтому многие разработчики с удовольствием уходят от откровенно устаревших форм записи к современным. Но, как и с рассмотренными выше «заменителями», этот процесс лишь в ранней стадии исполнения.
Моська по имени Julia
В 2010 году была предпринята еще одна попытка создать «научный» язык программирования — инструмент, способный в равной степени эффективно работать с математикой и визуализацией данных. Так в стенах Нью-Йоркского Университета родилась Julia. Она уже превзошла по производительности главных конкурентов — Python и MATLAB, использует схожий интуитивно понятный синтаксис, но пока катастрофически страдает из-за узкого спектра возможностей. Учитывая тенденцию к ускорению работы программ и невозможность развития в этом направлении нынешних языков-лидеров, в ближайшем десятилетии Julia может или сама стать заметной силой, или послужить основой очередного языка, созданного огромной корпорацией.
Куда теперь движется IT
В 2000-х в обиход вошло понятие «смартфон», 2010-е начались с массового внедрения «планшетов» и «фаблетов», но уже к 2020-му мы подходим, постепенно стирая границы между компьютерными устройствами — по сути это все и смартфоны, и планшеты, и ноутбуки.
Главная перспектива IT теперь состоит не в том, чтобы преобразовывать мир с помощью отдельных гаджетов, а создать принципиально новый — «мир виртуальной реальности». Сегодня есть лишь зачатки этой технологии, созданные на базе давно известных языков и алгоритмов. Но как смартфоны, социальные сети и «большие данные» предопределили развитие программирования в 2010-х, так и необходимость обрабатывать еще и «естественную» информацию даст толчок новой ветви развития в 2020-х. И тогда, возможно, популярные языки станут куда менее востребованы, а на смену им придут новаторские: высокопроизводительные и с элементарным синтаксисом.
Или все-таки нет?