Connect with us

Программирование

Google выпустил Carbon, новый язык программирования. Что теперь?

Каким бы ни было будущее, Carbon наступает. Чем это закончится, мы, вероятно, узнаем через несколько лет.

Опубликовано

/

     
     

При наличии множества языков программирования нам действительно нужен еще один? Как говорит Google — конечно, да.

Официально представленный миру в прошлом месяце Чандлером Каррутом на CppNorth, Carbon заставил сообщество программистов заговорить о себе.

Но что это за язык? Как это работает? И работает ли?

C++ работает, но в чем проблема?

C++ существует намного дольше, чем некоторые из нас живут. Разработанный в 1982 году и выпущенный в 1985 году, C++ нашел свое применение в операционных системах, браузерах и играх.

Хотя C++ не самый крутой язык для изучения (если только вы не хотите идти по пути разработки игр), он по-прежнему используется в приложениях, требующих производительности, скорости и немного ограниченных в доступности ресурсов.

Короче говоря, C++ — это язык программирования общего назначения, в котором есть все обычные навороты, такие как классы и объекты, абстракция, инкапсуляция, полиморфизм и наследование. Он строго типизирован, чувствителен к регистру, использует указатели и имеет обширную библиотеку функций.

Но что не так с С++?

В целом критика C++ состоит в том, что он слишком сложен. IntelliSense вообще отстой, отсутствует поддержка first-class функций и кортежей, а списки инициализаторов считаются «хаком». В дополнение к этому, есть несколько причуд, таких как повторяющийся синтаксис и операторы, такие как &, являющийся одновременно логическим оператором и ссылкой.

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

Полно и других проблем, но если коротко, C++ работает, но у него есть свои проблемы.

Что делает Carbon

Как и любой язык программирования, созданный до появления многих из нас, C++ имел смысл во время своего создания — но сейчас уже устарел.

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

Go, Swift, Kotlin и Rust являются производными от связанных с ними языков программирования. Все они были созданы с целью упростить сложность. Carbon выполняет ту же миссию.

Согласно официальному репозиторию GitHub, Carbon является языком-преемником. Это означает, что он не стремится улучшить C++, а полностью заменить его.

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

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

Вот фрагмент кода Carbon, работающего с C++:

// C++ code used in both Carbon and C++:
struct Circle {
    float r;
};

// Carbon exposing a function for C++:
package Geometry api;
import Cpp library "circle.h";
import Math;

fn PrintTotalArea(circles: Slice(Cpp.Circle)) {
    var area: f32 = 0;
    for (c: Cpp.Circle in circles) {
        area += Math.Pi * c.r * c.r;
    }
    Print("Total area: {0}", area);
}

// C++ calling Carbon:
#include <vector>
#include "circle.h"
#include "geometry.carbon.h"

auto main(int argc, char** argv) -> int {
    std::vector<Circle> circles = {{1.0}, {2.0}};
    // Carbon's `Slice` supports implicit construction from `std::vector`,
    // similar to `std::span`.
    Geometry::PrintTotalArea(circles);
    return 0;
}

Круто. Итак, у нас есть апгрейд C++, но каковы на самом деле преимущества?

  • Дженерики: в C++ дженерики являются только дженериками до тех пор, пока типы не будут заменены в рантайме. Шаблоны решают эту проблему, но это не окончательное решение. Carbon предлагает правильные дженерики, параметризируя код, а не создавая почти дубликаты, как это сейчас работает в шаблонах.
  • Наследование: C++ дает абстрактные базовые классы и не имеет элементов данных. Carbon предлагает неполиморфное наследование.
  • Перегрузка операторов: вы можете определить, как операторы Carbon применяются в пользовательских типах.

Это общая суть. Другие преимущества — более быстрая и повышенная масштабируемость разработки за счет лучшей организации кода и модульных структур, поддержка всех современных ОС и сред, безопасные механизмы тестирования. Еще одним важным преимуществом Carbon является то, что в нем учли все знания и ловушки, найденные в C++, чего не было у предшественника из-за среды, в которой он был создан.

Когда релиз?

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

  • Выпуск основной рабочей версии (0.1) к концу 2022 г.
  • 0.2 в 2023 г.
  • Релиз 1.0 в 2024–2025 гг.

Это в основном все на данный момент. Документация по Carbon в целом лаконична и доступна даже для тех, кто не является разработчиком C++.

В целом, должно быть интересно, как Google будет продвигать Carbon, когда он будет полностью готов. Вытеснит ли он Kotlin из Android-разработки, как тот когда то вытеснил Java? Или, возможно, он будет связан с разработкой игр для Android?

Каким бы ни было будущее, Carbon наступает. Чем это закончится, мы, вероятно, узнаем через несколько лет.

Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.

Наши партнеры:

LEGALBET

Мобильные приложения для ставок на спорт
Хорошие новости

Telegram

Популярное

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: