Usuario:Dan047/Carbon (lenguaje de programación)
Carbon | ||
---|---|---|
![]() | ||
Desarrollador(es) | ||
? | ||
Información general | ||
Extensiones comunes | .carbon | |
Paradigma | Multiparadigma | |
Diseñado por | ||
Sistema de tipos | Fuerte, estático | |
Influido por | C++, Rust, Swift [cita requerida] | |
Sistema operativo | Multiplataforma |
Carbon es un lenguaje de programación experimental diseñado para la interoperabilidad con C++ . [1] El proyecto es de código abierto y se inició en Google . El ingeniero de Google Chandler Carruth presentó Carbon por primera vez en la conferencia CppNorth en Toronto en julio de 2022. Afirmó que Carbon fue creado para ser un sucesor de C++. Se espera que el lenguaje tenga una versión experimental MVP 0.1 en 2025 y una versión 1.0 lista para producción después de 2027. [2]
El lenguaje pretende corregir varias deficiencias percibidas de C++ pero por lo demás proporciona un conjunto de características similar. Los objetivos principales del lenguaje son la legibilidad y la "interoperabilidad bidireccional" (que permite al usuario incluir código C++ en el archivo Carbon), a diferencia del uso de un lenguaje nuevo como Rust, que, si bien está influenciado por C++, no es bidireccionalmente compatible con los programas C++. Los cambios en el lenguaje serán decididos por los líderes de Carbon.
Los documentos, el diseño, la implementación y las herramientas relacionadas de Carbon están alojados en GitHub bajo la licencia Apache-2.0 con excepciones LLVM . [3]
Ejemplo
editarCarbon | C++ |
---|---|
package Geometry;
import Math;
class Circle {
var r: f32;
}
fn PrintTotalArea(circles: Slice(Circle)) {
var area: f32 = 0;
for (c: Circle in circles) {
area += Math.Pi * c.r * c.r;
}
Print("Total area: {0}", area);
}
fn Main() -> i32 {
// A dynamically sized array, like `std::vector`.
var circles: Array(Circle) = ({.r = 1.0}, {.r = 2.0});
// Implicitly converts `Array` to `Slice`.
PrintTotalArea(circles);
return 0;
}
|
#include <numbers>
#include <print>
#include <span>
#include <stdfloat>
#include <vector>
// or: import std;
struct Circle {
std::float32_t r;
};
void PrintTotalArea(std::span<Circle> circles) {
std::float32_t area = 0;
for (const Circle& c : circles) {
area += std::numbers::pi * c.r * c.r;
}
std::print("Total area: {}\n", area);
}
int main() {
std::vector<Circle> circles{{.r = 1.0}, {.r = 2.0}};
// Implicitly converts `vector` to `span`.
PrintTotalArea(circles);
return 0;
}
|
Véase también
editar- Portal:Informática. Contenido relacionado con Informática.
- ↑ «README». Consultado el 6 de septiembre de 2023. «It is designed around interoperability with C++ as well as large-scale adoption and migration for existing C++ codebases and developers.»
- ↑ Carbon Language: Roadmap, carbon-language, 11 de enero de 2024, consultado el 18 de enero de 2024.
- ↑ «carbon-lang/LICENSE». GitHub. 16 de junio de 2020. Consultado el 24 de julio de 2022.