Grazie alla piena compatibilità di ABI con C, è possibile combinare facilmente C e C3 nello stesso progetto. A titolo illustrativo, vkQuake, un port Quake id è stato compilato utilizzando Vulkan invece di OpenGL per il rendering, con un piccolo pezzo di codice convertito in C3 e compilato utilizzando il compilatore c3c. vkQuake si basa sulle famose porte QuakeSpasm e QuakeSpasm-Spiked ed esegue tutte le mod compatibili con QuakeSpasm come Arcane Dimensions.
C ha un supporto per le librerie molto limitato: devi aggiungere percorsi di ricerca ai file di intestazione, includere alcuni file di intestazione e collegare a librerie statiche o dinamiche. Tutti questi passaggi sono separati. Se chiami funzioni di libreria senza collegarle, potresti avere riferimenti non definiti.
C2 ha risolto questo problema utilizzando la libreria completamente automatizzata. O usi la libreria o no. Inoltre, C2 supporta le librerie di origine. Queste sono le librerie utilizzate in formato sorgente (=C2). Ciò consente una migliore integrazione e ottimizzazione, soprattutto quando si utilizzano molte funzioni “semplici” che restituiscono solo un membro di una struttura opaca, ad esempio. Consente inoltre agli sviluppatori di organizzare i propri archivi di codice in un modo molto più semplice.
C3 è un linguaggio di programmazione di sistema basato su C. È un’evoluzione di C che consente gli stessi paradigmi e mantiene la stessa sintassi possibile. C3 nasce come estensione del linguaggio C2 di Bas van den Berg. Si è evoluto in modo significativo, non solo in termini di sintassi, ma anche in termini di gestione degli errori, macro, generici e stringhe di caratteri.
Il codice seguente mostra le unità generiche
1 | 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; } |
Principi di progettazione
Il lavoro di progettazione di C3 è completo, a parte la messa a punto di alcuni dettagli, come l'asm in linea. Con l'avanzamento del lavoro nella libreria standard, verranno apportate modifiche e miglioramenti alla lingua.
Le istruzioni ASM consentono di includere istruzioni di assemblaggio direttamente nel codice C. Ciò può aiutare a massimizzare le prestazioni nel codice sensibile al tempo o accedere a istruzioni di assemblaggio che non sono prontamente disponibili per i programmi C.
Installazioni
Installazione su Windows
- Visual Studio 17 2022 deve essere installato;
- CMake programma di installazione;
- Clonez le dpt github de C3C: git clone https://github.com/c3lang/c3c.git ;
- Entra nella directory C3C cd c3c. ;
- componente con build CMake cmake -B build -G "Visual Studio 17 2022" -A x64 -DCMAKE_BUILD_TYPE = versione;
- Compila: cmake --build build --config Release ;
- Ora dovresti avere il file c3c.exe.
- Ora dovresti avere un file eseguibile c3c.
Installazione su Ubuntu 20.10
- Ottieni un compilatore C che supporti C11 e un compilatore C++, come GCC o Clang. Anche Git deve essere installato;
- Installez CMake: sudo apt install cmake;
- Installez LLVM 12 (o suprieur: 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 dpt github de C3C: git clone https://github.com/c3lang/c3c.git ;
- Entra nella directory C3C cd c3c. ;
- creare la directory di build mkdir;
- cambia la directory nella directory di creazione del CD;
- Configurazione build CMake: cmake...;
- Compila: cmake --build.
Ora dovresti avere un file eseguibile c3c.
Inventato nei primi anni '70 per riscrivere Unix, 50 anni dopo, il mondo è ancora alimentato dalla programmazione C. E questo nonostante la predominanza delle lingue di alto livello. Il linguaggio di programmazione C continua a dare potere al mondo e ci sono molte ragioni per credere che la programmazione C rimarrà attiva per molto tempo.
Il traduttore C3 può essere trovato in ICI
fonte : progettista c
E tu?
Hai provato a programmare in C?
Che lingua usi oggi? perché ?
Come valuti il linguaggio C?
C2 e C3 sono presentati come sviluppi di C. Cosa ne pensi di questi linguaggi?
Quale futuro vede per la programmazione in C?
Guarda anche: