Grâce à la compatibilité totale de l'ABI avec le C, il est possible de combiner C et C3 dans le même projet sans effort. Comme démonstration, vkQuake, le portage de Quake d'id Software utilisant Vulkan au lieu d'OpenGL pour le rendu, a été compilé avec une petite partie du code converti en C3 et compilé avec le compilateur c3c. vkQuake est basé sur les portages populaires QuakeSpasm et QuakeSpasm-Spiked et fait tourner tous les mods compatibles avec QuakeSpasm comme Arcane Dimensions.
Le C ne dispose que d'un support de bibliothèque très limité : il faut ajouter des chemins de recherche pour les fichiers d'en-tête, inclure certains fichiers d'en-tête et établir des liens avec des bibliothèques statiques ou dynamiques. Ces étapes sont toutes séparées. Si vous appelez des fonctions de bibliothèque sans les lier, vous pouvez avoir des références non définies.
C2 a corrigé ce problème en faisant de l'utilisation de la bibliothèque une chose totalement automatique. Vous utilisez la bibliothèque ou vous ne l'utilisez pas. De plus, C2 supporte les bibliothèques sources. Il s'agit de bibliothèques qui sont utilisées sous forme de source (=C2). Cela permet une meilleure intégration et optimisation, en particulier lors de l'utilisation de nombreuses fonctions "simples" qui ne font que renvoyer un membre d'une structure opaque, par exemple. Cela permet également aux développeurs d'organiser leurs archives de code d'une manière beaucoup plus facile.
C3 est un langage de programmation système basé sur le C. C'est une évolution du C permettant les mêmes paradigmes et conservant la même syntaxe dans la mesure du possible. C3 a commencé comme une extension du langage C2 par Bas van den Berg. Il a évolué de manière significative, non seulement au niveau de la syntaxe mais aussi en ce qui concerne la gestion des erreurs, les macros, les génériques et les chaînes de caractères.
Le code suivant montre des modules génériques
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | module stack <Type>; // Above: the parameterized type is applied to the entire module. struct Stack { usize capacity; usize size; Type* elems; } // The type methods offers dot syntax calls, // so this function can either be called // Stack.push(&my_stack, ...) or // my_stack.push(...) fn void Stack.push(Stack* this, Type element) { if (this.capacity == this.size) { this.capacity *= 2; this.elems = mem::realloc(this.elems, Type.sizeof * this.capacity); } this.elems[this.size++] = element; } fn Type Stack.pop(Stack* this) { assert(this.size > 0); return this.elems[--this.size]; } fn bool Stack.empty(Stack* this) { return !this.size; } |
Principes de conception
Le travail de conception de C3 est terminé, à part la mise au point de certains détails, comme l'asm en ligne. Au fur et à mesure que le travail sur la bibliothèque standard progresse, des modifications et des améliorations du langage seront apportées. L'instruction asm permet d'inclure des instructions d'assemblage directement dans le code C. Cela peut aider à maximiser les performances dans un code sensible au temps ou à accéder à des instructions d'assemblage qui ne sont pas facilement accessibles aux programmes C.
Installation
Installation sur Windows
- Visual Studio 17 2022 doit être installé ;
- Installer CMake ;
- Clonez le dépôt github de C3C : git clone "https://github.com/c3lang/c3c.git" ;
- Entrez dans le répertoire C3C cd c3c. ;
- Configurer le build CMake cmake -B build -G "Visual Studio 17 2022" -A x64 -DCMAKE_BUILD_TYPE=Release ;
- Construire : cmake --build build --config Release ;
- Vous devriez maintenant avoir le c3c.exe.
- Vous devriez maintenant avoir un exécutable c3c.
Installation sur Ubuntu 20.10
- Disposer d’un compilateur C qui gère C11 et un compilateur C++, comme GCC ou Clang. Git doit également être installé ;
- Installez CMake : sudo apt install cmake ;
- Installez LLVM 12 (ou supérieur : C3C supporte LLVM 12-15) : sudo apt-get install clang-12 zlib1g zlib1g-dev libllvm12 llvm-12 llvm-12-dev llvm-12-runtime liblld-12-dev liblld-12 ;
- Clonez le dépôt github de C3C : git clone "https://github.com/c3lang/c3c.git" ;
- Entrez dans le répertoire C3C cd c3c. ;
- Créez un répertoire de construction mkdir build ;
- Changez de répertoire pour le répertoire de construction cd build ;
- Configurer CMake build : cmake ...;
- Build : cmake --build .
Inventé au début des années 1970 pour réécrire Unix, 50 ans après, le monde reste toujours alimenté par la programmation C. Et ce, malgré la prédominance des langages de niveau supérieur. Le langage de programmation C continue de donner du pouvoir au monde et il y a de nombreuses raisons de croire que la programmation en C restera active pendant longtemps.
Le compilateur C3 peut être trouvé ICI
Source : C3 designer
Et vous ?
Avez-vous connu la programmation C ?
Quel langage utilisez-vous aujourd'hui ? Pourquoi ?
Quelle appréciation faites-vous du langage C ?
C2 et C3 se présentent comme des évolutions du C. Que pensez vous de ces langages ?
Selon vous, quel avenir pour la programmation C ?
Voir aussi :
Microsoft célèbre les 20 ans de .NET, son Framework de développement, les dépôts .NET seraient dans le top 30 des projets open source à plus haute vélocité sur GitHub depuis 2017
Microsoft a publié la version stable de Visual Studio 2022 avec une nouvelle expérience de rechargement à chaud pour les applications natives C++, cette version est disponible uniquement en 64 bits
Un développeur publie un langage de programmation qui peut être traduit automatiquement en C, C++, C#, Java, JavaScript, etc., avec une traduction rapide et sans machine virtuelle