APL

Siccome non tutti i linguaggi si basano sull'inglese, esistono linguaggi che necessitano l’utilizzo di caratteri aggiuntivi oltre a quelli presenti in una tastiera standard americana. Ma non solo perché si ispirano a lingue naturali diverse, anche perché invece di una parola per indicare una funzione è più comodo usare un solo simbolo.

Il linguaggio APL (A Programming Language), sviluppato a metà degli anni '60 dall'IBM sulla base di una notazione inventato nel 1957 dal canadese Kenneth_Iverson, è uno di quelli: utilizza simboli molto particolari come si può notare nel frammento in copertina.

E infatti si usavano tastiere apposite, come questa:

Tastiera APL

Lo stesso Iverson, comunque, invento una versione di APL (J) che usava dei caratteri standard ASCII. In questa versione Iverson sostituì al termine "funzione" il termine "verb" e il termine "operatore" con il termine "avverbio".

Al di là di questo aspetto, APL è un linguaggio particolare: è dedicato soprattutto alle trasformazioni di vettori e matrici, ed è molto compatto. Ad esempio:

    m ← +/3+⍳4
è l'equivalente della notazione matematica standard:

Espressione matematica

e va letta da destra a sinistra, più o meno così:

  • costruisci un array da 1 a 4
  • somma 3 a tutti gli elementi
  • riduci gli elementi ad uno solo con l'operazione di somma
  • assegna il risultato alla variabile m
5 simboli, 8 caratteri in tutto per un algoritmo che avrebbe richiesto una decina di righe in un linguaggio più tradizionale.

Altre informazioni (in inglese) su Wikipedia: APL_syntax_and_symbols.

Una curiosità: uno dei più interessanti Linguaggi educativi, Snap!, permette di utilizzare alcuni blocchi che sono esplicitamente ispirati ad APL. Questo ne fa un ambiente molto potente e avanzato, adatto ad attività di "coding" ben oltre la scuola primaria.

Prossimo pannello:  Perl



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

Parole: 175

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+                        
🔎