Il C++

Nel 1970 un programmatore di nome Dennis Ritchie lavorava nei Bell Laboratories della AT&T alla creazione del sistema operativo UNIX.
Era necessario un linguaggio conciso e pulito ma allo stesso tempo in grado di produrre programmi veloci e compatti.
L'Assembly era troppo legato ai dettagli della macchina, e sarebbe stato necessario riscrivere da capo il sistema operativo per ogni diversa architettura.
Era necessario un linguaggio di alto livello, che permettesse al programmatore di concentrarsi sul problema senza doversi preoccupare di gestire l'hardware sottostante.
In un linguaggio di alto livello è il compilatore a trasformare il codice in linguaggio macchina, permettendo così di compilare lo stesso programma su diverse architetture, occupandosi personalmente di tradurlo nel codice macchina specifico in base all'hardware su cui gira.

Per assurdo, se ne avessi le competenze potrei creare una CPU tutta mia e sviluppare intorno ad essa un computer, dopodiché mi basterebbe (si fa per dire) scrivere un compilatore che si occupa di tradurre il codice ad alto livello scritto da te, in un codice compatibile con l'architettura hardware da me creata. In questo modo non dovresti preoccuparti di studiare il modo in cui funziona la macchina creata da me, lo stesso codice scritto per un computer Intel potrebbe essere compilato tranquillamente anche sul mio ipotetico computer, grazie al compilatore.
In questo modo il programmatore è libero di concentrarsi sul problema a livello logico, senza doversi sforzare di ragionare come una macchina.

Così Dennis, partendo da un linguaggio chiamato B, sviluppò il suo linguaggio e gli diede il nome di C.

Ma non dovevamo parlare del C++? Il fatto è che non si può parlare del C++ senza parlare del C, dal momento che il C++ è un'estensione del C.

Cosa significa questo? Significa che il C++ è un superset del C, e cioé il C++ contiene il C, e ne è un'espansione.
Di fatto un compilatore C++ è in grado di compilare senza (o con pochi) problemi un programma scritto in C.

Ma prima di vedere meglio cosa è il C++, vediamo da cos'è composto un programma in generale.
Un programma è formato da dati e da algoritmi. I dati sono le informazioni da manipolare, mentre gli algoritmi sono le routine che agiscono sui dati.
Ad esempio in "2 + 3 = 5", i numeri sono i dati mentre l'addizione è l'algoritmo che prende i dati in ingresso, li modifica, e restituisce il risultato.
Questa è una caratteristica comune a tutti i linguaggi di programmazione, compreso il C.

Perciò abbiamo delle variabili in grado di contenere dati, dei metodi per modificare tali dati, delle strutture di controllo ecc..
Queste ed altre caratteristiche del C, sono presenti tali e quali anche nel C++.
Questo significa che, se in C volessimo dichiarare una variabile (vedremo in seguito cosa significa) per contenere dei numeri interi, e la inizializzassimo al valore 93, dovremmo scrivere:

int nomevariabile = 93;

Bene, lo stesso avviene nel C++, perciò la linea di codice C poco sopra è perfettamente legittima anche in C++.
Questo perché, quando il C++ venne creato, la maggior parte dei programmi era scritta in C, e la maggior parte dei programmatori conosceva il C, perciò c'era la necessità di sviluppare un linguaggio retrocompatibile.

Ma vediamo nei dettagli come nacque il C++.
Negli anni 80 si diffondeva la moda, se così vogliamo chiamarla, di utilizzare un nuovo paradigma di programmazione, detto Object Oriented, e cioé orientato agli oggetti.
Così Bjarne Stroustrup, che sentiva l'esigenza di creare un linguaggio compatibile con il C ma più gratificante e semplice da scrivere e, ispirandosi al linguaggio Simula67, diede vita al C++.
Il C++ è quindi (dire questo è riduttivo, ma per ora prendiamolo per buono) un'evoluzione del C, e cioé un C che permette la programmazione orientata agli oggetti.
In particolare la preoccupazione più grande di Bjarne era quella di permettere la scrittura di programmi più eleganti e puliti, più facili da leggere e da mantenere, ed il paradigma OOP (Object Oriented Programming) ha, tra gli altri pregi, anche queste caratteristiche.

E' importante capire che, per imparare a programmare in C++, bisonga partire dalle basi, e quindi almeno all'inizio ci occuperemo di quelle caratteristiche comuni al C, mettendo da parte per il momento la programmazione ad oggetti.

Nessun commento:

Posta un commento