Lo “scontro” di popolarità tra C e Java è sicuramente quello più vecchio e conosciuto tra gli informatici. I due si sfidano sin dal 1995, anno in cui Java ha fatto il suo ingresso nel mercato e si è ampiamente diffuso, diventando in poco tempo uno tra i linguaggi più popolari dell’informatica.
Nel corso degli anni il primato è stato detenuto principalmente da Java, che se lo contendeva col suo rivale. Dal 2015, ultima volta in cui C è stato primo, non si è schiodato dalla punta della classifica. L’indice TIOBE , però, rivela che C ha appena superato Java, riappropriandosi della prima posizione per questo mese.
Anche se si sente molto parlare della sfida tra C e Java, bisogna precisare che alla domanda “qual è il linguaggio migliore?” non c’è una risposta precisa, ma dipende da ciò che si deve realizzare. I due linguaggi sono infatti profondamente diversi, e hanno entrambi pro e contro che li rendono più adatti a un task piuttosto che a un altro.
La prima, fondamentale differenza tra i due risiede nel tipo di paradigma che “implementano”. C è un linguaggio procedurale, mentre Java è un linguaggio a oggetti. Nel primo caso il concetto portante è quello di funzioni o procedure attraverso le quali il programma viene eseguito, seguendo un flusso lineare, dall’alto verso il basso (approccio top-down). Nel secondo caso, invece, al centro c’è il concetto di oggetto: il paradigma si orienta prettamente ai dati e non al flusso del programma. Al contrario del paradigma procedurale, in quello a oggetti i tipi di dato non sono definiti soltanto dalla loro “struttura”, anche dal tipo di operazioni che possono essere svolte su di essi.
Un’altra differenza tra i due è il livello: Java è un linguaggio di alto livello, mentre C è di medio-basso livello, in quanto è più vicino al codice macchina. Proprio per questo motivo Java è generalmente più semplice da imparare, in quanto possiede più astrazione ed è più simile al linguaggio umano. Questo implica però che C è un linguaggio più efficiente, dal momento che opera con istruzioni più vicine all’hardware.
A distinguere i due c’è anche la gestione della memoria. In C il programmatore è tenuto a gestire personalmente la memoria, utilizzando malloc e free per, rispettivamente, allocare e dis-allocare memoria. Ciò, ovviamente, diventa un’arma a doppio taglio e può essere ostico da tenere a mente se ci si avvicina per la prima volta alla programmazione. Java, al contrario, gestisce automaticamente la memoria utilizzando il garbage collector.
L’indice TIOBE, il cui nome completo è TIOBE programming community index, misura la popolarità dei linguaggi di programmazione. È stato ideato da TIOBE, una società olandese specializzata in controllo di qualità del software.
Ogni mese viene calcolato l’indice di popolarità per i linguaggi di programmazione Turing-completi, decretando la posizione in classifica di ognuno. La misura viene calcolata utilizzando il numero di ricerche effettuate sui motori di ricerca che contengono il nome del linguaggio. Tra i motori di ricerca ci sono Google, Google Blogs, Yahoo!, Wikipedia e YouTube. Ognuno di essi ha un diverso punteggio o “qualifica”, che determina più o meno importanza nel calcolo per ognuno.
L’indice non riflette quindi il miglior linguaggio di programmazione, ma quello più popolare. Ciò significa che più sono le ricerche, corsi e offerte di lavoro relativi a un linguaggio, più il linguaggio guadagna punti. Questo, ovviamente, implica una maggiore diffusione e utilizzo di esso.
Questa misura può essere utilizzata anche per prendere delle decisioni strategiche per il mercato, studiando quale linguaggio è più conveniente adottare nello sviluppo di un nuovo software.
L’ultima volta che C era stato al primo posto era nel 2015. Questo mese, dopo ben 5 anni, ha sorpassato Java, diventando il linguaggio più popolare del momento.
L’incremento rispetto al mese precedente è stato del 2.82%. Secondo TIOBE, uno dei motivi può essere il Coronavirus. Il suo impatto sembra non avere confini, e anche l’informatica cambia le sue abitudini di conseguenza. In questo caso la motivazione va ritrovata nel fatto che vengono utilizzati molti più dispositivi medici e relativi software, scritti in C e C++. A causa di ciò, aumentano anche le richieste di skill ed esperienza in questi linguaggi.
Per lo stesso motivo, anche Python e R stanno scalando la classifica. La ricerca di un vaccino e di medicinali efficaci contro il Covid sta impattando fortemente il campo della data science, ambito in cui questi due linguaggi vanno per la maggiore.