Convenzioni e Tipografia

Quando un codice sorgente viene tradotto in un programma eseguibile, molte parti vengono semplicemente ignorate.
Oltre ai commenti, anche l’impaginazione, cioè la disposizione del testo sullo schermo, è ignorata.
Per il compilatore, nella maggior parte dei linguaggi, i due codici riportati sotto sono del tutto equivalenti:

use List::Util qw(reduce);
sub fact {
    my $n = shift;
    reduce { $a * $b } 1, 1 .. $n
}

foreach my $i (0..16) {
    print "$i! = ", fact($i), "\n";
}

E quest’altro:
use List::Util qw(reduce);sub fact{my $n=shift;reduce{$a*$b}1,1..$n}foreach my $i(0..16){print "$i!=",fact($i),"\n";}


Ma è evidente che per un programmatore medio il primo codice è leggibile, mentre il secondo è più complesso.

Probabilmente chi legge una poesia oggi non sa, o non ricorda, che la maniera di impaginarla, che oggi è considerata normale, è frutto di una storia precisa.

	Sempre caro mi fu quest'ermo colle,
	e questa siepe, che da tanta parte
	dell'ultimo orizzonte il guardo esclude.
	Ma sedendo e mirando, interminati
	spazi di là da quella, e sovrumani
	silenzi, e profondissima quiete
	io nel pensier mi fingo; ove per poco
	il cor non si spaura. E come il vento[...]
Ad esempio i Latini non usavano gli spazi e andavano avanti fino alla fine della pietra; al contrario, i Futuristi forzavano la disposizione delle parole nella pagina per uscire da ogni schema; oppure andavano a capo a piacere, anche dopo una sola parola:
    Clof, clop, cloch,
    cloffete,
    cloppete,
    clocchette,
    chchch...
    È giù,
    nel cortile,
    la povera
    fontana
    malata;
    che spasimo!
    [...]
Gli spazi aggiuntivi all’inizio della riga sono un’invenzione moderna che aggiunge solo leggibilità. E così vengono usati nella maggior parte dei linguaggi di programamzione.
Invece alcuni linguaggi particolari, come il Python, non usano le parentesi per indicare dove comincia e finisce un blocco, ma usano l'indentazione come elemento sintattico. Il codice che segue è corretto solo se ci sono quel certo numero di spazi prima di if, body, else e data:
 for a in pa: 
            if isinstance(a, basestring): 
                body = '%s%s' %  (body,  a) 
            else: 
                data.update(a)

Prossimo pannello:  Commenti

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

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

Pannelli

Stili                       
Convenzioni Tipografiche    
Commenti                    
Altri commenti              
Literate programming        
Paradigmi                   
Nomi                        
Manuali                     
🔎