Aprile 20, 2024

Laredazione.eu

Trova tutti gli ultimi articoli e guarda programmi TV, servizi e podcast relativi all'Italia

Un’alternativa a C simile a C, che consente l’accesso sicuro ad array, contenitori di primo livello e manipolazione di stringhe

C3 è un linguaggio simile al C che vuole essere un’evoluzione del C, piuttosto che un linguaggio completamente nuovo. In alternativa nella nicchia C/C++, mira ad essere veloce e vicino allo standard.

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.

READ  L'iPhone 15s è finalmente dotato di ricarica inversa, o quasi

Il codice seguente mostra le unità generiche

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

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.
READ  Lo smartphone Apple scende del 40% su questo sito

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:

Microsoft celebra i 20 anni di .NET, il suo framework di sviluppo e i repository .NET, secondo quanto riferito, tra i primi 30 progetti open source a ritmo serrato su GitHub dal 2017.

Microsoft ha rilasciato la versione stabile di Visual Studio 2022 con una nuova esperienza di ricaricamento a caldo per le applicazioni native C++, questa versione è disponibile solo a 64 bit

Uno sviluppatore pubblica un linguaggio di programmazione che può essere tradotto automaticamente in C, C++, C#, Java, JavaScript, ecc., con traduzione veloce e senza macchina virtuale

READ  Ecco il dodicesimo gioco mostrato