C++ e le interfacce

Tra il 1100 e il 1300 dopo Cristo si combatterono le crociate per la terra santa, nel 2000 si combattono le crociate informatiche. Sicuramente quest’ultime sono meno cruente, ma entrambe partono da motivazioni basate sulla fede.

Agli inizi del linguaggio Java l’allora CEO di SUN comunicava in una conferenza che i libri su Java avevano superato come numero i titoli riguardanti il C++. Alcuni alla notizia fecero notare che il conteggio si basava sui testi che avevano nel titolo la parola Java piuttosto che C++, per cui i libri sull’isola di Java non potevano essere contati :) e che non tutti i libri hanno il nome del linguaggio nel titolo.

Java era il nuovo, il  C++ il vecchio, però non vi consiglio di usare Java per gestire la vostra centrale nucleare, infatti il punto 3 della licenza riporta:

“L’utente riconosce che il Software ricevuto in licenza non è progettato o destinato all’uso per la progettazione, la costruzione, il funzionamento o la manutenzione di qualunque tipo di impianto nucleare”…

Se ci si chiede il come mai di una simile limitazione nella licenza ufficiale la risposta è semplice, Java non è il massimo per le applicazioni “real time”. Allo stesso modo Python non è il massimo per la programmazione dei sistemi embedded, come il C++ non era il linguaggio ottimale per il Kernel Linux (parole di Linus Torvalds).

Tutto questo per sottolineare che la scelta del linguaggio non è una questione di fede, ma di progetto.
Tornando alla fede mi è capitato spesso di sentire criticare questo o quel linguaggio. Ad esempio, si dice che il C++ non supporti le interfacce…
Si, è vero! Il C++ non ha la parola chiave “interface”, quindi non potremmo scrivere come in Java:

public interface Comparable
{
 public int compareTo(Object b);
}

e poi

Class Tile extends Rectangle implements Comparable
{
…
…
}

Andando però a leggere la guida ufficiale di SUN di Java 2 (MC Graw Hill dell’aprile 1999) ci viene detto che:

“…
La prima, denominata interfaccia, è il modo in cui Java gestisce la situazione comune di una classe che deve riflettere il comportamento di 2 o più classi padre (questo meccanismo viene sovente denominato ereditarietà multipla).
…”

Ed ecco la risposta, le interfacce vengono implementate per sostituire l’ereditarietà multipla. Il C++ supporta l’ereditarietà multipla, ergo non ha bisogno delle interfacce.
Per cui se volessimo implementare lo stesso esempio in C++ avremmo:

class Comparable
{
public:
    virtual int compareTo(Object b) = 0;
};

class Tile : public Rectangle, public Comparable
{
…
};

Questo non vuol dire che il C++ è il miglior linguaggio di programmazione. Ho lavorato in COBOL su mainframe e questo linguaggio permetteva una produttività ineguagliabile nello sviluppo di software gestionale.
Quello che voglio sottolineare è che esiste il linguaggio giusto per il particolare problema.
Io comunque se mi trasferirò vicino ad un impianto nucleare… andrò a chiedere con che linguaggio hanno sviluppato il loro software… non si sa mai. 8)

About these ads
Post a comment or leave a trackback: Trackback URL.

Commenti

  • juhan  On 10 febbraio 2011 at 09:52

    Benvenuto al nuovo collaboratore dikiyvolk, lo stesso che era erroneamente stato presentato come Walter.
    E per tutti un quiz: questo nick da dove viene?

  • Popinga  On 10 febbraio 2011 at 11:12

    Boh. La ricerca mi manda a delle pagine in russo. C’è un/una pornostar con questo nome. Se no Dikiy è un piegatore di proteine norvegese. Non so.

    • juhan  On 10 febbraio 2011 at 12:44

      Niet!
      Siccome in inglese era banale, il nostro è andato un po’ più in là!
      Chissà se Anna ci fornirà la versione scritta come si deve?

      • Walter Procopio  On 10 febbraio 2011 at 13:00

        Ciao,

        Carina la notizia della pornodiva mi mancava. Scusatemi se vi rispondo solo ora, ma sono con 40 di febbre… in ufficio :(
        Il mistero è molto semplice. Solitamente il mio nickname è wildwolf. Però era già usato :( per cui l’ho scritto in russo! volk è lupo… io non l’ho trovata la pornodiva… disdetta :(

  • picchiopc  On 10 febbraio 2011 at 12:17

    anche se ne capisco poco di programmazione sto post mi è piaciuto :D

Trackbacks

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.

Unisciti agli altri 81 follower

%d blogger cliccano Mi Piace per questo: