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:
“Creatore di problemi. Appassionato di social media. Appassionato di musica. Specialista di cultura pop. Creatore.”
More Stories
Il sondaggio Steam di aprile ha mostrato che Nvidia domina ancora AMD
Decifrare le emozioni evocate dall'arte utilizzando l'intelligenza artificiale
Chi è interessato dal furto di dati sensibili?