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

© Codexpo.org - Content released under Creative Commons 4.0 BY/SA/NC

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

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