Famiglie

Se i linguaggi di programamzione sono così tanti, come si fa a orientarsi? Come si fa a scegliere quale usare, o quale imparare per primo?

Spesso nei gruppi di programmatori appare un neofita, appena iscritto, che chiede: ma volendo diventare un programmatore, quale linguaggio dovrei imparare? E giù le risposte, da quelle basate sull'esperienza personale a quelle basate sul sentito dire, fino ai proverbi inventati sul momento ("impara il C e mettilo da parte, meglio Java oggi che Go domani").

Proviamo ad affrontare la questione da un punto di vista un po' più generale.

I linguaggi di programmazione vengono spesso divisi in famiglie come le lingue naturali, per tenere traccia sia delle grandi somiglianze, sia delle derivazioni storiche.

Una maniera di rappresentare le famiglie è quella degli alberi genealogici, con tanto di antenati e discendenti. Di solito si prendono come antenati alcuni linguaggi che hanno avuto un ruolo storico o che per primi hanno applicato un paradigma. Malgrado quello che si potrebbe pensare, si tratta di linguaggi inventati nell'arco di quindici anni, tra il 1968 e il 1972.

  • ALGOL (1958): Pascal, Ada, C, ...
  • Lisp (1958): Javascript, Haskell, ML,...
  • Simula (1967): Smalltalk, C++, Java, Python, Ruby,...
  • Prolog (1972): Clojure, Datalog, Erlang, ...

Un altro modo di classificare i linguaggi di programmazione è tramite i paradigmi. Un paradigma è la metafora con cui viene immaginato il rapporto tra programmatore e computer. Anche i paradigmi hanno una storia, nel senso che sono stati inventati in un certo momento, poi ci sono voluti alcuni anni perché si affermassero teoricamente e poi altri anni perché cominciassero a diffondersi praticamente dei linguaggi utilizzabili concretamente.

I principali paradigmi che vengono citati questi quattro:

  • LINGUAGGI IMPERATIVI: una serie di comandi che producono un effetto;
  • LINGUAGGI FUNZIONALI: una o più funzioni che restituisce un risultato, senza effetti collaterali;
  • LINGUAGGI ORIENTATI AGLI OGGETTI: una serie di oggetti, dotati di metodi, che interagiscono tra loro;
  • LINGUAGGI LOGICI: una dimostrazione di un teorema a partire da fatti e regole.
ma ci sono anche paradigmi più recenti, che ancora non hanno avuto il tempo di affermarsi pienamente, magari perché sono relativi ad un campo molto limitato di applicazione.

Nella pratica, molti linguaggi sono multi-paradigma, perché sono stati influenzati al momento della loro creazione da più modelli, o perché dalla versione iniziale "pura" sono cresciuti aggiungendo delle caratteristiche "impure" ma comode. Ad esempio Scala è nato fin dall'inizio come un linguaggio funzionale ad oggetti, mentre ad un certo punto è stata creata una versione di Prolog (che nasce logico) orientato agli oggetti.

Ci sono ancora altri modi di classificare o rappresentare la diversità dei linguaggi. Per esempio, sulla base del loro utilizzo.

TIOBE è una società che crea un'indice di frequenza di utilizzo dei vari linguaggi di programmazione.

Come fa a creare questo indice? Semplicemente utilizza i motori di ricerca. Come è spiegato nel sito web della società, viene effettuata una ricerca con la stringa seguente:

    language X programming
con X che viene sostituito dai nomi dei linguaggisu 25 motori di ricerca diversi. Google, nella varie versioni nazionali, è il più utilizzato, ma ci sono anche Wikipedia, Amazon ed Ebay.

Questa è la tabella con i linguaggi più usati a Settembre 2021:

tabella linguaggi
Source: https://tiobe.com

Sulla base delle risposte ottenute lungo gli anni, il grafico sottostante mostra l'andamento dei linguaggi più utilizzati dal 2002 al 2021.

Grafico andamento
Source: https://tiobe.com

Prossimo pannello:  Traduzione



Versione: 12/01/2022 - 19:23:40

Parole: 298

Pannelli

Linguaggi                   
Linguaggi di programmazione 
Nomi dei linguaggi          
Caratteri e linguaggi       
Famiglie                    
Traduzione                  
COBOL                       
Lisp                        
APL                         
Perl                        
Javascript                  
Python                      
PHP                         
Ruby                        
Linguaggi educativi         
Pascal                      
Ada                         
Logo                        
Prolog                      
IEML                        
Linguaggi nazionali         
Linotte                     
Linguaggi esoterici         
Intercal                    
Brainfuck                   
Emmental                    
HQ9+                        
🔎