Explorer Carbon, Le Nouveau Sur-ensemble De C++

C++, le successeur du langage de programmation C, est incontestablement l'un des langages les plus pertinents de l'époque moderne. C++ alimente l'apprentissage automatique Python, les bibliothèques JavaScript, le développement de jeux et de nombreux autres outils utilisés dans les langages de programmation modernes.

Pour chaque Grand Challenge, si vous obtenez une solution, vous trouverez du C++ quelque part en bas où vous ne pouvez pas le voir. – Bjarne Stroustrup

C++ est également l'un des plus anciens langages de programmation orientés objet avec une conception adaptable, une polyvalence et une large gamme de compatibilité. C++ a inspiré de nouveaux langages comme Java, rendant le langage viable pour développer des jeux, des dispositifs médicaux, des systèmes d'IA et de contrôle, et de nombreuses autres applications.

De nombreux langages de programmation modernes comme Rust et Golang ont vu le jour et ont permis aux développeurs d'écrire du code propre et sûr de manière flexible et avec moins de tracas que leurs prédécesseurs. Cependant, les langages de programmation plus anciens alimentent encore de nombreuses bases de code qui s'exécutent dans notre vie quotidienne.

Nous avons également vu le déploiement de langages de programmation qui proposent des solutions aux plus anciens comme C/C++. Dans le monde d'aujourd'hui, ce sont JavaScript, TypeScript, Objective-C, Swift, Java et Kotlin.

Lors de la conférence CPP North récemment conclue , Google a annoncé avoir travaillé sur un successeur de C++ : le langage de programmation Carbon. Dans cet article, nous verrons ce qu'est Carbon, ses fonctionnalités, en quoi il diffère de C++, comment le configurer, etc.

Commençons!

Qu'est-ce que le carbone ?

Dans C++, il existe un langage beaucoup plus petit et plus propre qui peine à sortir. – Bjarne Stroustrup

Carbon est un langage de programmation open source, à typage statique et compilé, initialement conçu par Google pour succéder à C++. Carbon offre aux développeurs des pratiques de programmation modernes, telles que les génériques, l'organisation de code modulaire et la syntaxe simple.

Carbon espère égaler les performances et l'évolutivité de C++. Le langage est conçu pour une interopérabilité bidirectionnelle avec C++ pour la migration et l'adoption. Cela signifie que vous pouvez transpiler les bases de code C++ vers Carbon et vice versa, ainsi qu'utiliser les bibliothèques C++ existantes.

Carbon est également très convivial et a une courbe d'apprentissage douce pour les développeurs C++, offrant plus d'expressivité et de prise en charge de la conception et de l'architecture logicielles existantes.

Le carbone est encore une expérience et est dans sa phase de développement. Cela dit, de nombreuses fonctionnalités pour vous aider à écrire le code Carbon que vous adorerez n'ont pas encore été ajoutées.

Caractéristiques du langage de programmation Carbon

Carbon partage de fortes similitudes avec C++. Il est imprégné de pratiques de programmation modernes, de la prise en charge de C++, de l'interopérabilité, de la sécurité de la mémoire et des génériques. Ce sont quelques caractéristiques notables du langage de programmation Carbon et nous allons en passer quelques-unes maintenant.

Interopérabilité

Logiquement, un langage successeur comme Carbon doit être compatible avec son langage précédent. Carbon est compatible de manière bidirectionnelle (bidirectionnelle) avec C++, et vous pouvez utiliser n'importe lequel des langages avec l'autre. Jetons un coup d'œil à son interopérabilité en action :

// Source code by the authors of the Carbon programming language

// 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);
}

Dans l'exemple ci-dessus, le code Carbon utilise la circle.hbibliothèque C++ pour imprimer l'aire d'un cercle.

// Source code by the authors of the Carbon programming language

// 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;
}

Le code C++ ci-dessus utilise la geometry.carbon.hbibliothèque pour imprimer la zone d'un cercle avec les paramètres fournis. Remarquez à quel point le code Carbon est plus lisible et intuitif.

Le système moderne des génériques

Les génériques sont l'une des nombreuses fonctionnalités intéressantes que vous trouverez dans les langages de programmation modernes, notamment Rust et Go. Carbon propose un système de génériques moderne avec des définitions vérifiées et des modèles opt-in pour une interopérabilité transparente avec le code C++ existant.

Le système générique de Carbon est à surveiller. Cela garantira des vérifications de type pour les définitions génériques afin d'éviter le coût des vérifications de définition au moment de la compilation. Cela garantira également des interfaces vérifiées robustes pour réduire les dépendances accidentelles à la mise en œuvre et créer des contrats explicites importants.

Améliorations de la sécurité de la mémoire

La sécurité de la mémoire est un point important de l'utilisation de C++. Carbon vise à assurer la sécurité de la mémoire en suivant les états non initialisés, en augmentant les contraintes d'initialisation et en décourageant les bogues d'initialisation.

Carbon proposera des API et des idiomes fondamentaux pour prendre en charge les vérifications liées dynamiques lors du débogage. Il prendra également en charge les versions renforcées avec un mode de débogage par défaut complet. La stratégie de sécurité de Carbon pourrait également comporter des modèles de programmation de sécurité de la mémoire garantie.

Vous pouvez exécuter des programmes Carbon en modes débogage, performances et renforcé en fonction de vos préférences en matière de sécurité de la mémoire. Vous pouvez en savoir plus sur la stratégie de sécurité de Carbon dans la documentation GitHub.

Carbone contre C++

Étant donné que Carbon est nouveau et que le langage n'est pas prêt pour la production, vous ne pouvez comparer Carbon avec C++ qu'en fonction de leurs fonctionnalités partagées. Le C++ existe depuis un certain temps et les développeurs ont pu partager leurs frustrations concernant le langage. Espérons que Carbon minimisera les nombreux problèmes C++ de la même manière que TypeScript l'a fait pour JavaScript.

Voici une brève comparaison entre Carbon et C++ :

 CarboneC++
Orienté objetOuiOui
Courbe d'apprentissageDouxDifficile à saisir
ExpressivitéTrès expressifPeu expressif
Systèmes de typesFortement typé ; typé statiquementFortement typé ; Typé statiquement
Prise en charge des génériquesOuimodèles ; Semblable aux génériques

La probabilité que Carbon réussisse à réussir le C++ est relativement élevée à mon avis, surtout compte tenu de l'état du C++ et de l'entreprise derrière le langage. Compte tenu de l'interopérabilité bidirectionnelle entre les deux langages, les développeurs n'auront pas nécessairement à manquer les fonctionnalités C++.

Go et Dart ont été massivement adoptés dans leurs domaines de prédilection, et Carbon pourrait bien réussir.

Démarrer avec Carbone

Carbon est encore en mode expérimental, donc le langage est loin d'être prêt pour la production. Cependant, vous pouvez toujours jouer avec l'état actuel de la langue et envisager de contribuer à sa croissance !

Maintenant, nous allons voir comment vous pouvez utiliser l'explorateur de Carbon pour vérifier la base de code et jouer avec le langage.

Installation de carbone

Vous devez d'abord installer Homebrew sur votre ordinateur. Vous pouvez consulter ces instructions d'installation pour installer Homebrew sur Linux et macOS.

Commencez par installer Bazelisk avec le gestionnaire de packages Homebrew :

brew install bazelisk

Ensuite, installez llvmet exportez la PATHvariable :

brew install llvm
export PATH="$(brew --prefix llvm)/bin:${PATH}"

Clonez le référentiel Carbon et déplacez-vous dans son répertoire sur votre machine :

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

Enfin, créez et exécutez l'explorateur Carbon :

bazel run //explorer -- ./explorer/testdata/print/format_only.carbon

Et c'est tout! Vous pouvez maintenant commencer à expérimenter Carbon et vérifier comment le langage fonctionne.

Présentation de la syntaxe de Carbon

La syntaxe de Carbon est en fait assez similaire à la syntaxe de Rust et de quelques autres langages. Jetons un coup d'œil à un aperçu de la syntaxe de Carbon, y compris les variables, les boucles, les conditions, les fonctions et les classes.

Variables du carbone

Vous pouvez déclarer des variables avec le mot- varclé. Carbon est typé statiquement, vous devrez donc spécifier un type de données.

var hello: auto = "Hello, world!";

Le autotype de données est un type de données général que vous pouvez utiliser sur n'importe quelle variable. Tout comme C++, chaque instruction doit se terminer par un point-virgule.

Pour boucles en Carbone

Carbon utilise des boucles for de style c avec une gamme de fonctionnalités de boucle for incluses.

for (var name: String in names) { // names is an array
    Print(name);
}

La boucle for parcourt un tableau et imprime les éléments du tableau.

Fonctions dans le carbone

Les fonctions de Carbon sont très similaires à celles de Rust, à l'exception que vous devez déclarer explicitement les variables de paramètre.

fn Sum(var a: i32, var b: i32) -> i32 {
    return a + b;
}

La Sumfonction renvoie la somme des arguments à l'appel.

Conditionnels en carbone

Carbon utilise également les instructions conditionnelles de style c.

fn check(var value: i32) -> i32 {
  if(value == 7) {
    Print(value);
  } else {
    Print(0);
  }
}

La checkfonction vérifie si l'entrée d'argument est égale 7et imprime valuesi c'est le cas ou imprime 0si l'instruction if n'est pas valide.

Cours de Carbone

Carbon fournit un mot-clé pour définir des classes avec leurs identifiants et des champs de tout type.

class Human {
  var phone: i32;
  var age: i32;
  var name: String;
}

La Humanclasse contient les champs phone, ageet . nameVous pouvez déclarer n'importe quel nombre de champs pour vos opérations.

Regard sur l'avenir de Carbon

Les équipes de Google et de Carbon envisagent Carbon comme un langage rapide et évolutif qui évolue et prend en charge les logiciels critiques en termes de performances exécutés sur des systèmes d'exploitation, du matériel et des environnements modernes. Carbon naviguerait également vers une compatibilité ascendante ou descendante et une interface binaire d'application (ABI) stable pour le langage.

Une version expérimentale mais fonctionnelle de Carbon devrait être rendue publique d'ici la fin de 2022, et une version complète sera disponible d'ici 2024-2025. Vous pouvez consulter un aperçu détaillé des objectifs linguistiques .

Conclusion

Dans cet article, nous avons couvert un aperçu de Carbon et de ses fonctionnalités, comparé Carbon à son prédécesseur, C++, examiné comment installer Carbon et le fonctionnement de sa syntaxe, ainsi que la direction dans laquelle Carbon espère aller à l'avenir.

Carbon adopte une approche incluant des piles pour développer le langage. Le référentiel est en direct sur GitHub, où vous pouvez contribuer à la discussion et au développement en vue de créer un successeur C++ que tout le monde aimerait.

Source : https://blog.logrocket.com/exploring-carbon-new-superset-c-plus-plus/

#cplusplus 

What is GEEK

Buddha Community

Explorer Carbon, Le Nouveau Sur-ensemble De C++
Tamale  Moses

Tamale Moses

1624240146

How to Run C/C++ in Sublime Text?

C and C++ are the most powerful programming language in the world. Most of the super fast and complex libraries and algorithms are written in C or C++. Most powerful Kernel programs are also written in C. So, there is no way to skip it.

In programming competitions, most programmers prefer to write code in C or C++. Tourist is considered the worlds top programming contestant of all ages who write code in C++.

During programming competitions, programmers prefer to use a lightweight editor to focus on coding and algorithm designing. VimSublime Text, and Notepad++ are the most common editors for us. Apart from the competition, many software developers and professionals love to use Sublime Text just because of its flexibility.

I have discussed the steps we need to complete in this blog post before running a C/C++ code in Sublime Text. We will take the inputs from an input file and print outputs to an output file without using freopen file related functions in C/C++.

#cpp #c #c-programming #sublimetext #c++ #c/c++

Dicey Issues in C/C++

If you are familiar with C/C++then you must have come across some unusual things and if you haven’t, then you are about to. The below codes are checked twice before adding, so feel free to share this article with your friends. The following displays some of the issues:

  1. Using multiple variables in the print function
  2. Comparing Signed integer with unsigned integer
  3. Putting a semicolon at the end of the loop statement
  4. C preprocessor doesn’t need a semicolon
  5. Size of the string matters
  6. Macros and equations aren’t good friends
  7. Never compare Floating data type with double data type
  8. Arrays have a boundary
  9. Character constants are different from string literals
  10. Difference between single(=) and double(==) equal signs.

The below code generates no error since a print function can take any number of inputs but creates a mismatch with the variables. The print function is used to display characters, strings, integers, float, octal, and hexadecimal values onto the output screen. The format specifier is used to display the value of a variable.

  1. %d indicates Integer Format Specifier
  2. %f indicates Float Format Specifier
  3. %c indicates Character Format Specifier
  4. %s indicates String Format Specifier
  5. %u indicates Unsigned Integer Format Specifier
  6. %ld indicates Long Int Format Specifier

Image for post


A signed integer is a 32-bit datum that encodes an integer in the range [-2147483648 to 2147483647]. An unsigned integer is a 32-bit datum that encodes a non-negative integer in the range [0 to 4294967295]. The signed integer is represented in twos-complement notation. In the below code the signed integer will be converted to the maximum unsigned integer then compared with the unsigned integer.

Image for post

#problems-with-c #dicey-issues-in-c #c-programming #c++ #c #cplusplus

Ari  Bogisich

Ari Bogisich

1590587580

Loops in C++ | For, While, and Do While Loops in C++

In this Video We are going to see how to use Loops in C++. We will see How to use For, While, and Do While Loops in C++.
C++ is general purpose, compiled, object-oriented programming language and its concepts served as the basis for several other languages such as Java, Python, Ruby, Perl etc.

#c #c# #c++ #programming-c

Ari  Bogisich

Ari Bogisich

1589816580

Using isdigit() in C/C++

In this article, we’ll take a look at using the isdigit() function in C/C++. This is a very simple way to check if any value is a digit or not. Let’s look at how to use this function, using some simple examples.

#c programming #c++ #c #c#

Shaylee  Lemke

Shaylee Lemke

1589791833

Object Oriented Programming in C++ | C++ OOPs Concepts | Learn Object Oriented C++

C++ is general purpose, compiled, object-oriented programming language and its concepts served as the basis for several other languages such as Java, Python, Ruby, Perl etc.

The goal of this course is to provide you with a working knowledge of C++. We’ll start with the basics, including syntax, operators, loops, and functions. This Course will explain you how to use data structures and create your own Functions. This Course will show you the details of the powerful object and template systems so you can create useful classes and objects.

Youtube channel: ProgrammingKnowledge - https://www.youtube.com/watch?v=_SH1T3y_D7o

#c #c# #c++ #programming-c