Carbon
Google
github.com/carbon-language
Información general
Extensiones comunes carbon y co2
Apareció en 27 de abril de 2020
Diseñado por Google
Influido por C++, Rust, Zig, Haskell, Kotlin, Swift[1]
Licencia Apache-2.0-with-LLVM-Exception

Carbon es un lenguaje de programación experimental diseñado para la interoperabilidad con C++.[2]​ El proyecto es de software de código abierto y fue iniciado en Google. El ingeniero de Google Chandler Carruth presentó por primera vez Carbon en la conferencia CppNorth en Toronto en julio de 2022. Declaró que Carbon fue creado para ser un sucesor de C++.[3][1][4]​ Se espera que el lenguaje tenga una versión experimental MVP 0.1 no antes de finales de 2026 y una versión 1.0 lista para producción después de 2028.[5]

El lenguaje pretende corregir varias deficiencias percibidas de C++[6]​ pero, por lo demás, proporciona un conjunto de características similar. Los principales objetivos del lenguaje son la legibilidad y la "interoperabilidad bidireccional" (que permite al usuario incluir código C++ en el archivo Carbon), en contraposición al uso de un nuevo lenguaje como Rust, que, aunque está influido por C++, no es compatible en ambos sentidos con los programas escritos en C++. Los cambios en el lenguaje serán decididos por los responsables de Carbon.[7][8][9][10]​ Pretende construirse sobre el ecosistema de C++ de forma análoga a la relación entre TypeScript y JavaScript, o entre Kotlin y Java.[2]

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 de LLVM.[11]

Ejemplo

editar

El siguiente ejemplo muestra cómo podría escribirse un programa en Carbon y en C++:[12]

Carbon C++
package Geometry;

import Math;

class Circle {
    var radius: f32;
}

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

fn Main(args: Slice(StringView)) -> i32 {
    // A dynamically sized array, like `std::vector`.
    var circles: Array(Circle) = ({.radius = 1.0}, {.radius = 2.0});
    // Implicitly converts `Array` to `Slice`.
    PrintTotalArea(circles);
    return 0;
}
import std;

using std::span;
using std::vector;

struct Circle {
    float radius;
};

void printTotalArea(span<Circle> circles) {
    float area = 0.0f;
    for (const Circle& circ : circles) {
        area += std::numbers::pi * circ.radius * circ.radius;
    }
    std::println("Total area: {}", area);
}

int main(int argc, char* argv[]) {
    vector<Circle> circles{{.radius = 1.0f}, {.radius = 2.0f}};
    // Implicitly converts `vector` to `span`.

    printTotalArea(circles);
    return 0;
}

Véase también

editar

Referencias

editar
  1. a b «Carbon Language: An experimental successor to C++ - Chandler Carruth - CppNorth 2022». CppNorth. 22 de julio de 2022 – vía YouTube. 
  2. a b «README». GitHub. 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.» 
  3. «Scheduled events for Tuesday, July 19, 09:00 - 10:30». CppNorth, The Canadian C++ Conference, 17–20 de julio de 2022. CppNorth. Consultado el 21 de julio de 2022 – vía Sched.com. 
  4. Bradshaw, Kyle (19 de julio de 2022). «Carbon, a new programming language from Google, aims to be C++ successor». 9to5Google. 
  5. «Carbon Language: Roadmap». carbon-language. 11 de enero de 2024. Consultado el 18 de enero de 2024. 
  6. «Difficulties improving C++». Repositorio carbon-language/carbon-lang. Google. 21 de julio de 2022 – vía GitHub. 
  7. Carruth, Chandler; Ross-Perkins, Jon; Riley, Matthew; Hummert, Sidney (23 de julio de 2022). «Evolution and governance». Repositorio carbon-language/carbon-lang. Google – vía GitHub. 
  8. Illidge, Myles (21 de julio de 2022). «Google's Carbon programming language aims to replace C++». MyBroadband. 
  9. Jackson, Joab (20 de julio de 2022). «Google Launches Carbon, an Experimental Replacement for C++». The New Stack. 
  10. Mustafa, Onsa (20 de julio de 2022). «Carbon, A New Programming Language from Google As A C++ Successor». PhoneWorld. 
  11. «carbon-lang/LICENSE». GitHub. 16 de junio de 2020. Consultado el 24 de julio de 2022. 
  12. «carbon-lang/docs/images/snippets.md at trunk · carbon-language/carbon-lang». GitHub (en inglés). Consultado el 16 de diciembre de 2023. 

Enlaces externos

editar

📚 Artikel Terkait di Wikipedia

Nim (lenguaje de programación)

aplicaciones prácticas en sistemas y videojuegos Features – Nim Programming Language (sitio oficial): Detalles técnicos sobre sintaxis, soporte multiplataforma

Época (informática)

- Information technology — Programming languages, their environments and system software interfaces — Programming language COBOL.». ISO (en inglés): 634

Red de ordenamiento

Algorithmica 5: 75-92. doi:10.1007/BF01840378.  Goodrich, Michael (March 2014). «Zig-zag Sort: A Simple Deterministic Data-Oblivious Sorting Algorithm Running

JavaScript

de agosto de 2024.  «JavaScript: The World's Most Misunderstood Programming Language». Crockford.com. Consultado el 19 de mayo de 2009.  Kris Kowal (1

Premio Gödel

intercaladamente tanto en el EATCS International Colloquium on Automata, Languages, and Programming (ICALP) como en el ACM Symposium on Theory of Computing (STOC)