login LOGIN
CHIUDI chiudi
Il mio profilo

mostra
Hai dimenticato la password?
Inserisci l'indirizzo email di registrazione per reimpostare la password.
Segui le istruzioni che ti abbiamo inviato per posta elettronica.

C e C++, storia e caratteristiche

Sviluppati tra la fine degli anni '60 e gli anni '80, sono oggi tra i linguaggi di programmazione più versatili e potenti in circolazione

Programmazione

Sviluppato tra il 1969 e il 1973 all'interno dei laboratori di ricerca dell'AT&T da Dennis Ritchie e Kevin Thompson, il linguaggio C è un linguaggio di programmazione adatto ad ogni scopo (general-purpose) tra i più utilizzati e conosciuti di sempre. Come la gran parte dei linguaggi imperativi nati nel solco della tradizione dell'ALGOL, anche il linguaggio C è basato sulla programmazione strutturata e permette lo scoping lessicale (una funzione contenuta in un'altra funzione – ovvero annidiata – può avere accesso a tutte le variabili della funzione che la contiene) e la ricorsività. Grazie alla tipizzazione statica delle variabili (definizione stringente delle variabili di una funzione, che possono quindi assumere solamente i valori stabiliti inizialmente) si riescono a prevenire molti degli errori di programmazione più comuni.

 

Thompson e Ritchie

 

Molti linguaggi hanno preso in prestito parti – più o meno grandi – della struttura di C. Basti pensare, ad esempio, a D, Go, Java, JavaScript, PHP, C#, C++ e Python. Molti, inoltre, sono anche sintatticamente molto simili al linguaggio sviluppato da Dennis Ritchie. Per questo motivo, imparare a programmare in C, magari utilizzando una delle tante risorse gratuite presenti in Rete, potrebbe essere un'utile base di partenza per l'apprendimento di linguaggi più attuali.

Storia del linguaggio C

La nascita e l'evoluzione di C è strettamente legata al destino del sistema operativo UNIX. Kevin Thimpson e Dennis Ritchie, due informatici dei laboratori di ricerca e sviluppo AT&T, idearono il nuovo linguaggio di programmazione nel tentativo di effettuare il porting di UNIX su macchine con architettura PDP-11. Il linguaggio, che prendeva le mosse da B (altro linguaggio di programmazione dell’epoca), era in grado di sfruttare appieno le specifiche tecniche della PDP-11, aumentando di conseguenza le caratteristiche e le funzionalità del sistema operativo.

L'iniziale lavoro di sviluppo richiese ben 4 anni (dal 1969 al 1973) ma l'anno più prolifico fu il 1972, quando gran parte di UNIX fu riscritto in C. Nel 1978 Brian Kernighan e Dennis Ritchie pubblicarono il primo manuale per il linguaggio C, “The C programming language”: per molti anni le specifiche del linguaggio in esso contenute furono considerate come la versione”ufficiale” di C. La standardizzazione, però, arrivò nel 1989 e nel 1990: nel primo caso fu l'ANSI (American National Standard Institute) a definire le strutture, le funzioni e le keywords standard di C; nel secondo le stesse specifiche furono definite come standard dall'ISO (International Organization for Standardization). Le due standardizzazioni – applicate sostanzialmente allo stesso linguaggio – sono rispettivamente conosciute come C89 e C90.

Con il passare degli anni furono necessarie diverse revisioni e implementazioni di nuove funzioni, per rendere il linguaggio C più attinente alle necessità ed esigenze dei programmatori. Nel 1999 venne rilasciata la versione conosciuta come C99, mentre nel 2011 fu la volta di C11.

Caratteristiche del linguaggio C

In C, tutto il codice eseguibile è contenuto all'interno di subroutine dette anche funzioni. Tutti i parametri di funzione sono passati per valore, così di isolarla il più possibile e rendere la stessa funzione riutilizzabile anche in altre parti del programma. Il codice sorgente non ha particolari esigenze di formattazione: utilizzando il punto e virgola come termine della dichiarazione si riuscirà a delimitare il campo di applicazione della funzione con efficacia e semplicità. Le parentesi graffe, invece, serviranno per raccogliere assieme gruppi di dichiarazioni attinenti alla stessa funzione. Il linguaggio C, come la sua evoluzione C++, è un linguaggio compilato: ciò vuol dire che ogni riga di codice che viene immessa viene tradotta in linguaggio macchina da uno speciale programma chiamato compilatore.

 

Linguaggio C

 

Il linguaggio C, inoltre, presenta determinate caratteristiche che aiutano a definirne modi e ambiti di applicazione. È dotato, ad esempio, di un ristretto insieme di parole chiave – le cosiddette keywords – che consentono la realizzazione e lo sviluppo dei programmi; fa ampio utilizzo di operatori aritmetici e logici; sono ammesse variabili definite dall'utente (grazie alla parola chiave typedef) e molto altro ancora.

La semantica di C è relativamente minimalista e utilizza un insieme ristretto di concetti relativamente semplici e vicini al funzionamento dell'hardware dei calcolatori. La sintassi e la grammatica, allo stesso modo, sono libere e flessibili, permettendo di scrivere istruzioni complesse e potenti con poche righe di codice.

La storia di C++

Nel 1979 Bjarne Stroustrup iniziò a lavorare su un'evoluzione di C che permettesse di implementare alcune funzionalità e caratteristiche assenti nella versione originale del linguaggio di programmazione. Lo sviluppo richiese quattro anni di lavoro, ma alla fine ottenne un linguaggio più flessibile e, soprattutto, più potente.

 

Bjarne Stroustrup

 

Rilasciata nel 1983 con il nome di C++ (che sostituì il vecchio C con classi), la nuova release riprendeva alcune delle caratteristiche di altri linguaggi di programmazione “minori” come Simula, ALGOL, Ada e ML. Il C++ venne immediatamente accolto con favore dalla comunità di sviluppatori, che ne apprezzavano la duttilità, la potenza e la semplicità di utilizzo. Il linguaggio fu standardizzato nel 1998, al termine di un lungo processo condotto da un comitato composto da membri dell'ANSI e dell'ISO. Ne 2003 venne pubblicata una versione corretta dello standard, mentre nel 2005 il Technical Report 1 vennero introdotte nuove specifiche, anche se non fanno parte dello standard.

Novità rispetto a C

Se confrontato con il “linguaggio madre”, C++ presenta importanti novità nella struttura e nelle funzioni. La più importante, senza ombra di dubbio, è l'implementazione della programmazione orientata agli oggetti, che Stroustrup mutuò e derivò direttamente da Simula. Non solo: grazie al C++, i programmatori potranno utilizzare soluzioni informatiche avanzate come funzioni virtuali, overloading degli operatori, gestione delle eccezioni ed ereditarietà multipla.

 

Compilatore C++

 

Il C++ si compone strutturalmente di due parti: il nucleo del linguaggio vero e proprio e la libreria standard, contenente la maggior parte della Standard Template Library. La libreria standard non è altro che una raccolta di referenze (funzioni e strutture dati) utili al programma per eseguire le sue operazioni e comprende, in genere, le definizioni delle strutture dati, degli iteratori e degli algoritmi più comuni. Lo sviluppatore, naturalmente, non è obbligato a caricare nel proprio programma l'intera libreria: potrà scegliere funzioni e strutture che ritiene più utili ai suoi scopi, dando così forma a una libreria personalizzata. O, ancora, scaricarne una già pronta dalla Rete, in uno dei tanti forum di programmazione presenti sul web.

A cura di Cultur-e
Addestramento IA non consentito: É assolutamente vietato l’utilizzo del contenuto di questa pubblicazione, in qualsiasi forma o modalità, per addestrare sistemi e piattaforme di intelligenza artificiale generativa. I contenuti sono coperti da copyright.
Fda
Prompt engineering
Immagine principale del blocco
Prompt engineering
Fda gratis svg
Come interrogare le intelligenze artificiali
Iscriviti al corso gratuito

Iscriviti
all'area personale

Per ricevere Newsletter, scaricare eBook, creare playlist vocali e accedere ai corsi della Fastweb Digital Academy a te dedicati.