Rilasciato · in miglioramento
Programming language · Dal 1972
Il C è un linguaggio di sistema compatto e portabile, compilato in codice nativo veloce, che offre il controllo diretto di memoria e hardware.
Il C è un linguaggio di programmazione procedurale e general purpose, progettato da Dennis Ritchie ai Bell Labs per scrivere il sistema operativo Unix. In seguito è stato standardizzato da ANSI e ISO; oggi lo standard è curato dal comitato ISO/IEC JTC1/SC22/WG14 e revisioni come C99, C11 e C17 sono molto diffuse. Il linguaggio ha poche parole chiave e si basa su elementi semplici (funzioni, strutture e puntatori) che il compilatore traduce direttamente in codice macchina.
Il C dà il meglio dove contano prestazioni prevedibili, eseguibili compatti e controllo diretto della memoria: kernel di sistemi operativi, driver di periferica, firmware per microcontrollori, runtime di altri linguaggi e database. Quasi ogni piattaforma ha un compilatore C, e la convenzione di chiamata del C (ABI) è il terreno comune con cui gli altri linguaggi richiamano le librerie. Il rovescio della medaglia è che il C non controlla i limiti degli array né gestisce la memoria in automatico: evitare buffer overflow e accessi a memoria già liberata spetta al programmatore.
Per iniziare, installa GCC, Clang o MSVC e compila piccoli programmi dal terminale. Il percorso tipico va da variabili e tipi a strutture di controllo, funzioni, array e stringhe, puntatori, struct e infine memoria dinamica. Attiva gli avvisi con -Wall -Wextra, consulta la libreria standard su cppreference e prendi l'abitudine di individuare gli errori di memoria con AddressSanitizer e GDB.
I puntatori danno accesso diretto agli indirizzi di memoria e con malloc e free la memoria si gestisce a mano: decidi tu come disporre i dati e come usare le risorse.
Il linguaggio è compatto e definito da uno standard ISO, quindi il codice conforme si può ricompilare per moltissimi sistemi operativi e processori.
Il C viene compilato in codice macchina nativo quasi senza runtime, tanto da poter essere usato anche per firmware e bootloader che girano senza sistema operativo.
L'interfaccia delle funzioni C funge da ABI standard de facto: linguaggi come Python, Rust e Go possono chiamare direttamente librerie C tramite la loro FFI.
Su Linux Debian o Ubuntu, installa GCC e Make con il comando qui sotto (su Fedora: sudo dnf install gcc make). Su macOS, esegui xcode-select --install per ottenere gli Xcode Command Line Tools, che includono Clang. Su Windows, installa MSYS2 ed esegui pacman -S mingw-w64-ucrt-x86_64-gcc nella shell UCRT64, oppure installa Visual Studio Build Tools con il carico di lavoro Sviluppo di applicazioni desktop con C++.
sudo apt install build-essentialApri un nuovo terminale e controlla che il compilatore mostri la sua versione. Su macOS il comando gcc rimanda ad Apple Clang, quindi vedrai una versione di Clang. Se hai installato MSVC, esegui invece cl nel Developer Command Prompt.
gcc --versionSalva il primo programma come hello.c, compilalo con gli avvisi attivi e lo standard C17, poi eseguilo. Con MSVC, compila con cl /W4 hello.c ed esegui hello.exe.
gcc -Wall -Wextra -std=c17 hello.c -o hello && ./hello#include <stdio.h> include l'header di input/output standard, in cui è dichiarata printf. La funzione main è il punto di ingresso del programma e (void) indica che non riceve argomenti. printf stampa il testo e \n è un a capo. return 0 comunica al sistema operativo che il programma è terminato correttamente. gcc compila il sorgente nell'eseguibile hello e ./hello lo avvia.
hello.c
#include <stdio.h>
int main(void) {
printf("Hello, world!\n");
return 0;
}
gcc hello.c -o hello && ./helloSei capitoli che ti accompagnano dall'installazione ai concetti chiave di C.
Fai domande, condividi la tua esperienza e scambia opinioni su C.
Ancora nessuna discussione. Avvia la prima.
0 commenti
Accedi · Accedi per lasciare un commento.
Scrivi tu il primo commento.