Pull to refresh
119.04
CloudMTS
Виртуальная инфраструктура IaaS

Зачем нам так много языков программирования?

Level of difficultyEasy
Reading time6 min
Views10K

В мире насчитывают примерно 7 000 естественных языков и 9 000 языков программирования. Но, в то время как количество первых стабильно сокращается, число вторых продолжает уверенно расти.

Сегодня поговорим о универсальном языке программирования «для всего» и причинах появления новых ЯП. Обсудим несколько свежих разработок — например, Carbon, которому пророчат будущее преемника C++, язык для проектирования нейросетей Mojo, облачный язык программирования Wing.

Почему старые ЯП сохраняют популярность

Самые популярные языки программирования во всем мире по состоянию на 2023 г. Statista
Самые популярные языки программирования во всем мире по состоянию на 2023 г. Statista

Почему вообще некоторые языки не уходят в небытие? Тот же COBOL серьезно повлиял на культуру программирования в шестидесятых, но и в наше время остается востребованным. По оценкам аналитиков из Micro Focus, сегодня на этом языке выполняются более 800 млрд строк кода в продакшн системах, по сравнению с 200 млрд в 1997 году. Хотя все же стоит отметить, что язык получил множество обновлений, и нынешний COBOL уже не тот ЯП, что видел перфокарты.

Кроме того, есть еще и FORTRAN, созданный Джоном Бэкусом (IBM) в 1957 году. Это старейший язык программирования, который используется до сих пор.

Языки живут пока получают ключевые обновления, но порой такие инициативы встречают сопротивление со стороны сообщества. Достаточно вспомнить ситуацию с Python, которая вызвала продолжительные дискуссии относительно поддержки второй версии и миграции на третью. Тогда многие ИТ-специалисты выразили мнение, что история с Python — наглядный пример того, как не нужно управлять экосистемой. Однако несмотря на критику и ошибки, этот язык программирования остается одним из наиболее востребованных в мире.

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

Новые технологии и работа над ошибками

Эволюция языков программирования. Источник: Computer History Museum
Эволюция языков программирования. Источник: Computer History Museum

Одна из причин появления новых ЯП — необходимость переосмысления существующих подходов и исправление недостатков языков предыдущего поколения. Даже C++, будучи одним из наиболее распространенных ЯП, имеет определенные недостатки.

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

Стать преемником C++ может Carbon. Его представил инженер Google Чендлер Каррут в 2022 году. Преемственность достигается за счет интероперабельности. Предполагается, что все библиотеки и кодовые базы можно будет «бесшовно» импортировать в двустороннем порядке. Кроме того, система построена на принципах открытого кода, авторы собираются своевременно делиться своими приоритетами с сообществом, а также быстро принимать решения об изменениях. Предполагается, что разработчики смогут без особых усилий перейти на новый язык. Carbon имеет современную систему дженериков, модульную организацию кода и простой синтаксис, который сокращает период адаптации при переходе на новое решение.

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

Но Carbon далеко не единственный проект, стремящийся исправить недостатки прошлых ЯП. Другим примером может быть язык V. Если раньше в фокусе была производительность процессов, то с развитием технологий большую важность обрела продуктивность разработчика. Главная особенность заключается в том, что V мотивирует писать простой и понятный код с минимальным уровнем абстракций. Например, он не содержит глобальных переменных, которые могут создавать неограниченное число зависимостей и усложнять программу.

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

Язык для систем ИИ

Согласно опросу, проведенному McKinsey среди полутора тысяч компаний в апреле 2023 года, треть организаций использует модели машинного обучения хотя бы в одной сфере бизнеса. Более того, 40% собираются активно инвестировать в новую индустрию.

Поскольку технология стремительно развивается, возникла потребность в оптимальном языке программирования для разработки систем ИИ. Закрыть её взялись Крис Латтнер, один из ведущих разработчиков Swift, и Тим Дэвис, бывший сотрудник Google — они представили Mojo.

Разрабатывая системы ИИ на Python, инженеры, так или иначе, подключают модули, написанные на более производительных языках. Такой «билингвальный» подход усложняет отладку, обучение и развертывание приложений на базе искусственного интеллекта. Mojo использует MLIR (Multi-Level Intermediate Representation), фреймворк для разработки компиляторов, и значительно обходит Python в вычислительной скорости. Например, для выполнения алгоритма Мандельброта первому нужно 0,03 секунды, а второму — 17 минут.

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

Mojo может стать наиболее важным достижением в программировании за последнее время. Авторы поступили очень мудро, взяв за основу язык, ограничения и возможности которого спустя десятилетия понятны миллионам разработчиков.

От единого языка к большим данным

До сих пор не существует языка программирования, который мог бы одинаково успешно справляться со всеми задачами. Попытки его создать предпринимались еще в 1960 годах, когда IBM разработала PL/I. Он должен был объединить преимущества FORTRAN, COBOL и ALGOL.

Однако, на что сразу не обратили внимание, с новым языком разработчики должно были прекратить использовать FORTRAN, COBOL и ALGOL. Эту проблему усугублял тот факт, что три языка сами развивались в реальном времени. Языки постоянно эволюционировали, и объединить старые и новые функции в одном инструменте оказалось невыполнимой задачей.

Учитывая неудачи разработчиков универсальных языков, некоторые их коллеги идут в другом направлении, предлагая сообществу предметно-ориентированные ЯП, призванные решать узкие задачи. Например, в области работы с big data появился Logica.

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

Облачные языки

С развитием облачной индустрии также появляются ЯП, заточенные под разработку облачных сервисов. Один из таких языков — Wing. Он имеет две фазы выполнения: preflight и inflight. Так, на первом этапе генерируется инфраструктурная конфигурация, а на втором — код компилируется в JavaScript и выполняется в облаке в среде Node.js.

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

Разумеется, узкоспециализированные языки программирования тоже сталкиваются с критикой. «Облачную» функциональность всегда можно реализовать в виде фреймворка, а не разрабатывать отдельный ЯП. Например, Shuttle — это облачная платформа для разработки приложений на Rust.

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

Заключение

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

  • Исходя из этого, языки программирования появляются в зависимости от конкретной задачи, целей и контекста. Один из ярких примеров настоящего времени — быстро развивающая область языков квантового программирования.

  • В сообществе нет единого мнения на тему того, остановится ли рост новых языков программирования. Хотя возможно мы будем наблюдать определенное замедление прогресса — все новые языки будут выглядеть просто как оптимизация старых ЯП.

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

Tags:
Hubs:
+5
Comments46

Articles

Information

Website
cloud.mts.ru
Registered
Founded
Employees
201–500 employees
Location
Россия