Что за программа carbon

Содержание

Язык Carbon — это язык программирования с открытым исходным кодом, который является преемником C++.

Google представил язык Carbon как язык программирования следующего поколения с целью заменить C++ в качестве преемника. Это проект с открытым исходным кодом, который все еще находится в экспериментальной фазе. Первоначально продемонстрированный Чендлером Каррутом на конференции CppNorth , язык Carbon выглядит как отличная альтернатива C++.

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

Давайте погрузимся внутрь.

Почему Carbon?

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

Применение пилинг-системы V Carbon System и дерматокосмецевтики Naqua

  • Накопленный технический долг (например, правила продвижения целых чисел) в различных функциональных возможностях. Обратная совместимость с C делает еще более трудным исправление технического долга и затрудняет внедрение изменений в код.
  • Процесс эволюции для добавления новых функциональных возможностей в C++ очень сложен, так как он должен придерживаться накладных процессов ISO, препятствующих экспериментам и т.д.

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

Поскольку решить эти проблемы с помощью C++ очень сложно, после глубокого исследования и оценки множества языков инженерами Google был представлен язык программирования Carbon . Таким образом, он является как бы преемником C++, подобным

  • C -> C++
  • JavaScript -> TypeScript
  • Objective-C -> Swift
  • Java -> Kotlin
  • C++ -> Carbon Language

где левая часть стрелки — исходный язык, а правая — язык-преемник.

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

Язык Carbon не унаследован от унаследованного C или C++. Он создан с нуля с использованием современных основ языка, таких как генеративность, модульный код, последовательный и простой синтаксис.

Ключевые особенности языка Carbon

  1. Быстрая производительность , соответствующая C++ с использованием LLVM (низкоуровневая виртуальная машина), имеющая низкоуровневый доступ к битам и адресам.
  2. Двунаправленная совместимость означает, что вы можете вызывать код на языке C++ из языка Carbon и код на языке Carbon из C++.
  3. Миграция обеспечивает поддержку миграции кода из C++.
  4. Современные и развивающиеся возможности , такие как быстрые и масштабируемые сборки, которые могут работать с существующими сборками C++, более легкие в изучении.
  5. Построен на основе Open Source с четкими целями и приоритетами с включенным подходом, таким как компиляторы, библиотеки, документация, менеджер пакетов и т.д.

Сравнение языка Carbon VS Rust

В процессе эволюции языка Carbon учитывается множество факторов. Некоторые из них включают рассмотрение языков, собирающих мусор (например, Java), более современных языков, таких как Rust, swift, Kotlin и так далее.

Carbon вместо C++, релиз IDEA 2022.2 и другие новости IT и Технологий

Rust тщательно оценивается как замена C++. Фактически язык Carbon настаивает на использовании Rust и игнорировании Carbon, если это возможно, так как Rust технически и экономически более жизнеспособный язык.

Однако организациям, которые уже используют C++, очень сложно перейти на Rust. Программы, написанные на Rust, имеют свойства и модули, которых нет ни у одного из таких языков, как C++ или Carbon. Адаптация к Rust для больших кодовых баз C++ практически нецелесообразна, учитывая отсутствие функциональной совместимости. Мы подробно поговорим об этом в отдельной статье в ближайшее время. Если вам все еще интересно, вы можете узнать больше об этом здесь : «Почему Rust не является заменой C++».

Теперь, когда мы знаем, что такое язык Carbon и зачем он нам нужен, давайте погрузимся в собственно настройку/установку, синтаксис, примеры.

Как настроить и установить язык Carbon:

Начало работы с языком Carbon включает в себя установку

  • Homebrew : это инструмент для установки пакетов. Если у вас не установлен homebrew, вы можете следовать этим инструкциям . В MacOs вы можете установить homebrew, используя /bin/bash -c «$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)» .
  • Bazel : Bazel — это инструмент сборки и тестирования с открытым исходным кодом, который может поддерживать множество языков и платформ.
  • LLVM : LLVM — это низкоуровневая виртуальная машина, которую использует язык Carbon для работы. Вам не обязательно иметь полное представление о LLVM, чтобы следовать этому руководству.
  • Carbon Explorer : Carbon explorer — это инструмент для реализации языка Carbon. Для запуска всех программ языка Carbon мы будем использовать Carbon explorer.
Читайте также:
Natron это за программа что

Для целей этого руководства мы будем использовать MacOS для установки. Однако инструкции для других операционных систем, таких как linux или windows, могут быть аналогичными.

Чтобы установить carbon, выполните эти команды в терминале.

Шаг 1: Установите Bazel

Для установки Bazel вы можете выполнить

$ brew install bazelisk

Это автоматически установит и настроит Bazel, который будет готов к использованию. Если у вас есть какие-либо ошибки, связанные с разрешениями, в сообщении об ошибке от Bazel будет полезная команда для запуска. Попробуйте запустить эту команду, используя sudo

Шаг 2: Установите LLVM

LLVM — это основная виртуальная машина, на которой выполняется язык Carbon. Чтобы установить ее

$ brew install llvm

$ export PATH=»$(brew —prefix llvm)/bin:$»

Следует отметить, что в MacOS по умолчанию установлен llvm. Поэтому при использовании brew install llvm может появиться сообщение типа llvm is keg-only, which means it was not symlinked . . Для решения этой проблемы перейдите к разделу устранения ошибок при установке языка Carbon в конце статьи.

Шаг 3: Установка кода языка Carbon

На этом шаге необходимо загрузить код языка carbon, который также содержит несколько примеров.

$ git clone https://github.com/carbon-language/carbon-lang

$ cd carbon-lang

Шаг 4: Hello world с помощью языка Carbon

Теперь, когда мы настроили язык Carbon, давайте выполним быстрый запуск Hello world. Для этого мы воспользуемся проводником Carbon. Чтобы запустить свой первый код на языке Carbon, убедитесь, что вы находитесь в каталоге carbon-lang , который вы клонировали из git, а затем выполните следующую команду.

$ bazel run //explorer — ./explorer/testdata/print/format_only.carbon

Эта строка вызывает инструмент сборки Bazel для запуска кода explorer, который в свою очередь запускает фактический код, присутствующий в файле ./explorer/testdata/print/format_only.carbon .

После запуска вы должны увидеть Hello world in Carbon в следующем виде

tipseason$ bazel run //explorer — ./explorer/testdata/print/format_only.carbon
INFO: Invocation ID: aa36a266-cb55-4433-9bed-907e393c0605
WARNING: .
.
.
INFO: Build completed successfully, 390 total actions
.
.
Hello world!
result: 0

Как видите, выводится «Hello World!», а тип возврата main — int32, в результате 0. Код, который стоит за этой программой hello world, следующий

Путь к файлу: ./explorer/testdata/print/format_only.carbon

package ExplorerTest api;

fn Main() -> i32

var s: auto = «Hello world!»;

Расширение файла для кода языка Carbon — .carbon . Поэтому если вы пишете новый файл на языке Carbon, вам нужно иметь файл, который заканчивается расширением .carbon. Пример: demo.carbon .

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

Основной синтаксис языка Carbon с примерами:

Язык Carbon все еще находится на экспериментальной стадии. Хотя большинство решений уже принято, синтаксис и использование могут измениться по мере развития. Поэтому имейте это в виду при работе с Carbon. Одним из преимуществ Carbon является то, что синтаксис должен быть дружественным к разработчикам C/C++ и простым для понимания.

Для наилучшего использования этого руководства, чтобы следить за каждым из этих примеров, вы можете запустить приведенные ниже примеры, используя Carbon language explorer, который вы установили в предыдущем шаге. Если вы работаете на своей машине, вы можете создавать новые файлы каждый раз при запуске программы или изменять файл ./explorer/testdata/print/format_only.carbon для проверки примеров.

Каждый раз, когда вы изменяете код, запускайте bazel run //explorer — ./explorer/testdata/print/format_only.carbon , чтобы увидеть вывод.

Примечание: format_only.carbon — это просто пример файла. Измените его на то имя файла, которое вы создали.

В качестве альтернативы вы также можете использовать Carbon online explorer IDE для выполнения приведенных ниже примеров.

Просто скопируйте и вставьте приведенные ниже примеры в онлайн IDE, и вы сможете увидеть результаты в реальном времени.

Ссылка на онлайн IDE Carbon Explorer находится на сайте Carbon Godbolt или Carbon online explorer .

Давайте приступим к изучению того, как использовать язык Carbon.

Декларации в Carbon:

  • Методы/функции объявляются с помощью ключевого слова fn .
  • Переменные объявляются с помощью ключевого слова var .
  • Имена переменных должны заканчиваться символом : , за которым следует пробел, например: var x:
  • Константы могут быть объявлены с помощью ключевого слова let.
  • Пакеты объявляются с помощью ключевого слова package .
  • Комментарии в языке Carbon могут быть объявлены с помощью двух косых черт //
  • auto может использоваться для автоматического определения типа переменной. Его можно использовать в комбинации с let или var или в качестве типов возврата функций.

// fn — объявление функции
// Тип возврата — i32, т.е. int.
fn Main() -> i32 // Я — комментарий.

var s: auto = «Hello world!»; // Автоматическое определение типа
let x: i32 = 20; // Константа
var y: i32 = 3; // Целочисленная переменная
Print(s); // Печать
return 0; // Возвращаемое значение
>

Функции/методы в Carbon

Функции могут быть объявлены с помощью ключевого слова fn . Синтаксис таков: fn MethodName(var param: type . ) -> return type . Для типов возврата void или пустого можно игнорировать часть после -> .

// Целочисленный тип возврата
fn Sum(var a: i32, var b: i32) -> i32 return a + b;
>

Читайте также:
Что за программа castle

// Пустой или void тип возврата.
fn PrintCount(var count: i32) Print(«The count is «, count);
>

fn Main() -> i32 Print(«Sum is «, Sum(4, 6));
PrintCount(10);
return 0;
>

Числовые переменные в языке Carbon:

Переменные в языке Carbon могут быть

  • bool для булевых значений true или false
  • i8 , i16 , i32 , i64 , i128 , i256 для целочисленных типов.
  • u8 , u16 , u32 , u128 , u256 для беззнаковых целых типов.
  • f16 , f32 , f64 и f128 для типов float.
  • _ может использоваться для разделителей цифр. Например: 1_000_000 остается целым числом, если объявлено без кавычек.

package ExplorerTest api;

fn Main() -> i32

var a: i32 = 1;

var b: i32 = 2;

Print(«», a + b);

Строки в языке Carbon:

Строки могут быть объявлены с помощью

  • String для последовательности байтов
  • StringView как ссылка только для чтения для последовательности байтов utf-8.

Литералы строк могут быть объявлены двумя способами.

  1. Одиночная строка: Используйте двойные кавычки( » ) для одной строки.
  2. Многострочная строка: Для объявления многострочной строки используйте ( «»» ).

package ExplorerTest api;

fn Main() -> i32

var singleLine: String = «Hello world!»;

var s: String = «»»

hello line 1

TipSeason demo line 2

TipSeason demo line 3

«»»; // Конец многострочной строки

Кортежи в языке Carbon:

Кортежи представляют значения с несколькими координатами. Они могут быть объявлены с помощью круглых скобок ( )

Здесь (x,y,z) — это кортеж с несколькими координатами. Доступ к ним можно получить с помощью индекса.

Указатели в языке Carbon:

В Carbon нет нулевых указателей. Чтобы представить указатель, который может не ссылаться на действительный объект, используйте тип Optional(T*), где T — тип.

* представляет значение. i32 var x: i32 = 5;
// изменяем x на 10
x = 10;
Print(«—«);
Print(«x = «, x);
var y: i32* =
// изменяем x на 7
*y = 7;
Print(«—«);
Print(«x = «, x);
Print(«y = «, *y);
var z: i32* =
// изменяем x на 0
*z = 0;
Print(«—«);
Print(«x = «, x);
Print(«y = «, *y);
Print(«z = «, *z);
var w: i32 = *y;

Массивы в Carbon:

Массивы объявляются с использованием типа массива и его размера. Синтаксис имеет вид [type; size] Например: v ar xarray: [i32; 4] = (1,2,3,4);

fn Main() -> i32 var xarray: [i32; 4] = (0, 1, 5, 6); // Целочисленный массив
var index: i32 = 1;
xarray[index] = 0;
Print(«», xarray[0]);
Print(«», xarray[1]);
return xarray[0] + xarray[1];
>

Условный поток управления с помощью Carbon

Комбинация if , else может быть использована для управления условным потоком в Carbon.

if(condition) // doSomething
> else // doSomething
>

if(condition) // doSomething
> else if (condition) // doSomething
> else // doSomething
>

fn Main() -> i32 var x: i32 = 5;
if(x == 5) Print(» to word is FIVE», x);
> else Print(» is not known «, x);
>
return 0;
>

Циклы в языке Carbon

Поддерживаются стандартные операторы циклов.

Цикл While может быть объявлен с помощью оператора while (condition)

fn Main() -> i32 var x: auto = 5;
while (not (x == 0)) x = x — 1;
Print(» «, x);
>
return x;
>

Цикл For может быть объявлен с помощью for (loop conditions) .

На момент написания этой статьи не было полного рабочего примера. Но вот предлагаемый синтаксис :

var names: [String; 4] = («a», «b»);
for (var name: String in names) Console.Print(name);
>

Сопоставление нескольких условий аналогично Switch

В Carbon есть ключевое слово match , которое аналогично switch в C/C++.

Синтаксис для слова match следующий

match(condition) case (condition) => // doSomething;
>
default => // doSomething;
>
>

fn Matcher(var num: i32) -> i32 var number: auto = 10;
match (number) case 5 => Print(«Got 5»);
return number;
>
case 10 => Print(«Got 10»);
return number;
>
default => Print(«Default»);
return number;
>
>
>

Классы в языке Carbon:

Класс в языке Carbon может быть объявлен с помощью ключевого слова class . Класс может иметь члены и методы.

class Sum var a: i32;

fn Add[me: Self](var num: i32) -> i32 var total: i32 = me.a + num;
return total;
>
>

fn Main() -> i32 var p1: Sum = ;
var total: i32 = p1.Add(5);
Print(«Total sum » , total);
return 0;
>

Структуры в языке Carbon:

Структурные типы помогают идентифицировать члены, используя имя вместо их индекса/положения. Они объявляются в фигурных скобках var name: auto = и доступ к ним можно получить с помощью name.name1 и т.д.

fn Main() -> i32 var point: auto = ;
point = ;
var result: i32 = point.x_axis * point.x_axis + point.y_axis * point.y_axis;
Print(«Result : «, result);
return 0;
>

Дженерики в языке программирования Carbon:

Дженерики можно увидеть во многих современных языках. Они определяют способ вызвать проверку типов во время компиляции и помогают определить переменные более чистого типа. Они могут быть объявлены с помощью типов параметров T , как показано ниже.

fn GenericExample[T:! Type](x: T) -> T return x;
>

fn Main() -> i32 Print(«Integer generic type «, GenericExample(0));
Print(GenericExample(«This is a string generic»));
return 0;
>

Ошибки установки, поиск и устранение неисправностей

llvm is keg-only, which means it was not symlinked into /usr/local,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.

If you need to have llvm first in your PATH, run:
echo ‘export PATH=»/usr/local/opt/llvm/bin:$PATH»‘ >> /Users/pramodnanduri/.bash_profile

Читайте также:
Адблок плюс что это за программа

For compilers to find llvm you may need to set:
export LDFLAGS=»-L/usr/local/opt/llvm/lib»
export CPPFLAGS=»-I/usr/local/opt/llvm/include»

Чтобы решить эту проблему, настройте в файле ~/.bash_profile следующие переменные

export PATH=»/usr/local/opt/llvm/bin:$PATH»
export LDFLAGS=»-L/usr/local/opt/llvm/lib»
export CPPFLAGS=»-I/usr/local/opt/llvm/include»
export CC=$(which clang)

После сохранения обязательно запустите исходник ~/.bash_profile

Дата выхода языка Carbon:

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

Источник: dzen.ru

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

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

10 месяцев назад

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

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

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

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

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

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

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

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

В целом критика C++ состоит в том, что он слишком сложен. IntelliSense вообще отстой, отсутствует поддержка first-class функций и кортежей, а списки инициализаторов считаются «хаком». В дополнение к этому, есть несколько причуд, таких как повторяющийся синтаксис и операторы, такие как 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: «, area); > // C++ calling Carbon: #include #include «circle.h» #include «geometry.carbon.h» auto main(int argc, char** argv) -> int < std::vectorcircles = , >; // 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 наступает. Чем это закончится, мы, вероятно, узнаем через несколько лет.

Источник: apptractor.ru

WWW: Carbon — сервис для создания идеальных скриншотов кода

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

Простенький сервис под названием Carbon делает именно это: дает тебе окошко, куда можно вставить код, выбрать вид подсветки и сохранить картинку себе на диск (или сразу отправить в Twitter). Заодно настраивается множество других вещей: шрифт, любые параметры окна и так далее.

Другие статьи в выпуске:

Xakep #230. Социальная инженерия

  • Содержание выпуска
  • Подписка на «Хакер» -60%

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

Источник: xakep.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru