Trovate le lingue con requisiti di indentazione ingombranti? [chiuso]

1

Pensieri su questi? Python è un esempio, e non è una pugnalata a Python, mi piace il linguaggio.

Quali lingue hanno un requisito di indentazione?

    
posta Chris 24.09.2010 - 21:22
fonte

10 risposte

32

Nei Makefile, è fastidioso. In Python, lo trovo molto appropriato e rende la sintassi molto più pulita. Penso che la cosa che lo rende migliore in Python sia che non sono richiesti caratteri speciali, l'unico requisito è che tu sia coerente. Dovresti farlo comunque, quindi non avrai alcun costo aggiunto seguendolo.

    
risposta data 24.09.2010 - 21:26
fonte
21

In generale, sono contro le caratteristiche di schiavitù e disciplina che sono orientate a rendere difficile scrivere codice cattivo. Tuttavia, non trovo che la rientranza forzata di Python si adatti a questo stampo. Il compilatore / interprete deve sapere dove iniziano e terminano i blocchi in qualche modo, e l'unico modo leggibile umano per indicare questo è il rientro. Pertanto, usare indentazione per denotarlo al compilatore / interprete è un buon esempio di DRY.

Usare le parentesi graffe per il compilatore / interprete più il rientro per gli umani è come scrivere un codice altrimenti imperscrutabile ma eccessivamente commentato. Le informazioni vengono specificate una volta per il compilatore / interprete, quindi di nuovo per gli umani. Deve essere mantenuto sincronizzato manualmente e diventa quasi impossibile capire se non è sincronizzato.

    
risposta data 16.11.2010 - 17:05
fonte
6

Mi piace la regola dell'indentazione di Python.

L'ho detto altrove e ripeterò qui, a chi si lamenta di Python a questo riguardo dovrebbe essere chiesto di mantenere un codice sorgente scarsamente rientrato. Se capisci quanto sia doloroso leggere questo tipo di codice sorgente, apprezzerai questa regola.

    
risposta data 25.09.2010 - 18:39
fonte
6

Non mi piace molto questo tipo di requisito linguistico.

Penso che Python sia un ottimo linguaggio ma questo mi tiene lontano da esso!

Per coloro che si lamentano del codice non formattato o non corretto, dirò: usa un formattatore di codice!

Penso che questa restrizione sia più invasiva di una regola sull'avere una parentesi, usando '.' o "- >" per l'accesso ai membri o utilizzando un ';' o un '.' per terminare una linea.

    
risposta data 16.11.2010 - 16:22
fonte
5

FORTRAN e COBOL vecchio stile avevano requisiti di indentazione basati sul layout della scheda perforata, che ho trovato fastidioso. I requisiti di indentazione non sembrano infastidirmi se posso usare tutte le colonne, ma fare attenzione a iniziare una riga sulla colonna 7 perché 6 è per la continuazione della linea è scomodo.

    
risposta data 16.11.2010 - 16:26
fonte
2

La notazione di Haskell do è una specie di buon equilibrio qui. Se vuoi fare indentazione basata puoi farlo. Se vuoi fare il punto e virgola, puoi farlo. Non proprio la struttura a blocchi poiché è un linguaggio diverso, ma l'idea di "usare ciò che ti piace perché questo non è davvero un dettaglio importante" è una cosa che mi piace.

    
risposta data 21.12.2011 - 22:33
fonte
1

Questo mi sembra puramente una questione di preferenza.

Personalmente non mi piacciono gli spazi vuoti significativi per i seguenti motivi:

  • Mentalmente, lo spazio bianco per me è un "no-op". Non mi piace il fatto che cambi comportamento.
  • Le schede e gli spazi hanno lo stesso aspetto in un editor, ma possono avere significati diversi se lo spazio è significativo. Nasty!
  • Mi piace la libertà di formattare il mio codice come preferisco. Preoccuparsi se questo cambierà la semantica del programma non è utile.
  • Penso che i delimitatori di blocchi visibili, siano essi {} in C / Java o () in Lisp, siano utili ulteriori indizi visivi sulla struttura del codice.
risposta data 14.12.2011 - 12:29
fonte
1

Chiedi le lingue che applicano il rientro. Python e make sono stati menzionati. Un altro è il linguaggio esoterico spazio bianco .

FORTRAN è stato menzionato anche in altre risposte: le prime versioni richiedevano che il codice iniziasse in colonne specifiche (o oltre, quindi non è esattamente lo stesso).

Comprendo che Haskell applica il rientro, in base a questa parte della sua specifica: " Un contesto nidificato deve essere ulteriormente rientrato rispetto al contesto che lo racchiude (n > m). In caso contrario, L fallisce e il compilatore dovrebbe indicare un errore di layout. "

    
risposta data 21.12.2011 - 13:37
fonte
0

Non c'è il pranzo gratis; qualcosa deve essere usato per un delimitatore. Poiché utilizziamo la spaziatura comunque, l'uso di EOL, spazio e caratteri di tabulazione ha senso e riduce il disordine.

    
risposta data 16.11.2010 - 16:19
fonte
0

No. Raramente vengono morso dai requisiti di indentazione (forse perché sono un pignolo per i dettagli). Indenterei comunque il mio codice, quindi non è un problema. (L'unica volta che è stato un problema è con un vecchio codice Python su cui sto lavorando, i precedenti sviluppatori lo hanno scritto con schede a 2 spazi (ick!), Quindi i nuovi sviluppatori hanno creato alcuni file con schede a 4 spazi, e io ho il mio editor è impostato su schede a 4 spazi, quindi l'indentazione è un po 'un problema con i vecchi file.) Non ho mai avuto problemi nemmeno con Haskell. È un po 'fastidioso nei Makefile, ma non direi che è "ingombrante".

    
risposta data 16.11.2010 - 16:25
fonte

Leggi altre domande sui tag