C (linguaggio di programmazione)

C (AFI: /ˈsiː/) è un linguaggio di programmazione a uso generale di natura imperativa e procedurale creato da Dennis Ritchie negli anni 1970. Tutt'oggi influente, è largamente adoperato nei sistemi operativi, nei driver e nelle pile di protocolli, mentre è in diminuzione il suo uso nelle…

C (AFI: /ˈsiː/) è un linguaggio di programmazione a uso generale di natura imperativa e procedurale creato da Dennis Ritchie negli anni 1970. Tutt'oggi influente, è largamente adoperato nei sistemi operativi, nei driver e nelle pile di protocolli, mentre è in diminuzione il suo uso nelle applicazioni. C è comunemente usato in architetture che vanno dai più grandi supercalcolatori fino ai minuscoli microcontrollori e sistemi integrati.

Successore del linguaggio B, C fu in origine sviluppato ai Bell Labs da Ritchie tra il 1972 e il 1978 per costruire utilità eseguibili su Unix, e fu subito dopo applicato nella reimplementazione del kernel di quel sistema operativo. Durante gli anni 1980, C gradualmente crebbe in popolarità, diventando nel terzo millennio uno dei linguaggi più usati in assoluto, con compilatori disponibili per praticamente ogni architettura e sistema operativo moderni. Il libro intitolato The C Programming Language, scritto dal suo creatore insieme a Brian Kernighan, servì per molti anni come lo standard de facto del linguaggio. Dal 1976, C è normato dall'American National Standards Institute (ANSI) e dall'International Organization for Standardization (ISO).

C è un linguaggio procedurale imperativo, che supporta la programmazione strutturata, la visibilità lessicale e la ricorsione, e possiede un sistema di tipi statico. Il linguaggio C permette l'utilizzo a basso livello alla memoria e fornisce costrutti che combaciano efficientemente con le istruzioni del linguaggio macchina. Nonostante le sue capacità a basso livello, il linguaggio è adatto per essere programmato su piattaforme diverse: un programma in C conforme scritto per essere portabile può essere compilato per una vasta gamma di piattaforme con poche variazioni al suo codice sorgente.

A partire dal 2000, C è costantemente classificato tra i primi due linguaggi nell'indice TIOBE, una misura di popolarità dei linguaggi di programmazione.

Storia

Il linguaggio fu originariamente sviluppato da Dennis Ritchie presso i Bell Labs della AT&T tra il 1969 e il 1973, con lo scopo di utilizzarlo per la stesura del sistema operativo UNIX, precedentemente realizzato da Ken Thompson e Ritchie stesso in assembly del PDP-7. Nel 1972 esordì il primo sistema UNIX su un DEC PDP-11, scritto interamente col nuovo linguaggio di programmazione C. Nel 1978, la pubblicazione del libro Il linguaggio C ne fece crescere rapidamente la diffusione, portando alla nascita di diversi dialetti e dunque alla necessità di definire uno standard.

La prima standardizzazione di C fu realizzata dall'ANSI nel 1989 (ANSI X3.159-1989), nota come C89. La stessa versione, solo con modifiche di formattazione minime, fu poi standardizzata anche dall'ISO nel 1990 (ISO/IEC 9899:1990), nota come C90. Successivamente l'ISO ha pubblicato altre quattro versioni del linguaggio C, note come C95 (ISO/IEC 9899/AMD1:1995), C99 (ISO/IEC 9899:1999), C11 (ISO/IEC 9899:2011/Cor 1:2012) e C18 (ISO/IEC 9899:2018). Di queste, la C99 ha portato i principali miglioramenti al linguaggio di programmazione, introducendo nuovi tipi di dato, gli inizializzatori designati per gli array, gli array di dimensione variabile e altri miglioramenti mutuati da C++.

C99

Il tipo di dato _Bool, che ammette la memorizzazione dei booleani false e true;

Il tipo di dato _Complex per la rappresentazione dei numeri complessi;

Il tipo di dato _Imaginary per la rappresentazione dei numeri immaginari;

Il tipo di dato long long int;

Il tipo booleano in <stdbool.h>;

Le funzionalità addizionali floating-point in <float.h>;

I commenti su linea singola introdotti da //;

Le funzioni inline;

Il qualificatore di tipo restrict, ammissibile solo sui puntatori (restricted pointer);

È rimosso l'int implicito di ritorno;

La lunghezza variabile dell'array (VLA, variable-length array);

I letterali composti (Compound literals);

Gli inizializzatori designati (Designated initializers)

È ammesso dichiarare variabili ovunque si desidera nell'ambito di un blocco di codice così come frapporre tra di esse altre istruzioni;

Le funzioni della famiglia vscanf;

Le regole per le costanti di tipo intero;

Le regole di promozione degli interi (integer promotion);

Le macro matematiche di tipo generico in <tgmath.h>;

Le macro con un numero variabile di argomenti;

La macro va_copy;

Lo specificatore di conversione %lf nella funzione printf();

Il supporto all'aritmetica IEEE Floating-Point (IEC 559);

L'operatore di preprocessing _Pragma.

Servizi correlati

Altre voci

Mark ZuckerbergM

Mark Zuckerberg

Mark Elliot Zuckerberg (IPA: [mɑɹk ˈɛliət ˈzʌkəɹbɜɹɡ]; White Plains, 14 maggio 1984) è un informatico e imprenditore statunitense, conosciuto per essere uno dei fondatori del social network Facebook.

Leggi la voce →
F

Flutter (software)

Flutter è un framework open-source creato da Google per la creazione di interfacce native per iOS, Android, Linux, macOS e Windows oltre a essere il metodo principale per la creazione di applicazioni per Google Fuchsia.

Leggi la voce →
IOS 16I

IOS 16

iOS 16 (nome in codice Sydney) è la sedicesima versione del sistema operativo iOS, sviluppato da Apple. È stato annunciato alla Worldwide Developers Conference (WWDC) il 6 giugno 2022 e lo stesso giorno è stata pubblicata la prima beta per gli sviluppatori. Durante l'evento "Far Out" del 7…

Leggi la voce →
M

Microsoft Edge

Microsoft Edge è un browser web sviluppato da Microsoft, disponibile su Windows, macOS, Linux, Android e iOS. È incluso come browser predefinito in Windows 10, Windows 11, Windows 10 Mobile, Xbox One e Xbox Series X e Series S

Leggi la voce →
AndroideA

Androide

L'androide è un essere artificiale, un robot, con sembianze umane, presente soprattutto nell'immaginario fantascientifico. In taluni casi l'androide può risultare indistinguibile dall'essere umano. Differisce dal cyborg, il quale è costituito da parti biologiche oltre che artificiali.

Leggi la voce →
Cheetah MobileC

Cheetah Mobile

Cheetah Mobile Inc. (猎豹移动公司) è una compagnia cinese attiva nello sviluppo di applicazioni mobili con sede a Pechino, Cina. Ha sviluppato alcune delle app più popolari a livello mondiale ed ha più di 634 milioni di utenti attivi al mese.

Leggi la voce →