O recuo informa onde você está, nos dois estilos de sintaxe. Se você escrever um programa VB ou um programa C # em uma única linha, em breve não poderá saber onde está na sintaxe aninhada. A máquina analisa as frases finais do bloco ou chaves, mas os humanos precisam de indentação.
As frases de final de bloco vêm de uma era de cartões perfurados e fita de papel, quando a programação era muito menos interativa e visual. Ou, realmente, não é interativo. Era difícil entrar nos programas e, portanto, os programadores precisavam que os compiladores fossem muito inteligentes quanto à análise de sintaxe e recuperação de erros.
Naquela época passada, o ciclo de edição, compilação e execução poderia envolver a preparação de cartões perfurados com um perfurador de cartões e, em seguida, alinhando-se a uma janela de envio de trabalho em que um funcionário pegava os cartões perfurados e os submetia à máquina. Mais tarde, o programador coletaria a saída (impressa em papel) de outra janela. Se o programa apresentasse erros, a saída consistiria apenas no diagnóstico do compilador. Quando os tempos de resposta são longos, o custo adicional de digitação end ifem vez de apenas )se justifica se ele ajuda a melhorar a qualidade do diagnóstico, porque as necessidades programador para corrigir tantos erros quanto possível em uma única iteração para reduzir o número de perdas de tempo iterações através da janela de envio de tarefas.
Quando falta uma chave de fechamento, é difícil dizer qual chave é a que não está fechada. (O compilador pode ter que analisar o recuo para fazer uma estimativa.) Se você excluir uma chave de fechamento dentro de uma função, parece que o restante do arquivo faz parte dessa função, resultando em uma enxurrada de mensagens de erro inúteis. Considerando que, se você tiver uma end functionsintaxe, o compilador poderá deduzir onde a função incorreta termina, recuperar e analisar as funções subseqüentes corretamente, fornecendo diagnósticos adicionais, se houver, que sejam significativos.
Quando você trabalha no editor de texto com reconhecimento de código, que recua e colore automaticamente o código, em uma tela de alta resolução na qual é possível ver sessenta ou mais linhas, os argumentos para esses tipos de idiomas desajeitados não se aplicam mais. Você pode editar e reconstruir incrementalmente os programas tão rapidamente que pode lidar com um erro de cada vez. Além disso, vendo grandes seções do programa simultaneamente na tela e mantendo o recuo adequado, você pode reduzir a ocorrência desses tipos de erros de aninhamento em primeiro lugar. E um bom editor de texto de programação sinaliza alguns tipos de erros de sintaxe enquanto você digita. Além disso, existem editores dobráveis que recolherão os blocos de um programa com base em sua sintaxe, fornecendo uma visão "estrutura de tópicos" de sua estrutura.
O Lisp usou parênteses desde o início e, talvez, não por acaso, os hackers do Lisp foram pioneiros na programação como uma experiência interativa, construindo sistemas que aceitavam programas em pequenos pedaços (expressões).
Na verdade, você não precisa de símbolos finais, como ilustra a linguagem Python. A identificação pode ser apenas a estrutura. Os seres humanos já usam recuo para grok a estrutura do código, mesmo em idiomas onde a máquina depende de símbolos ou frases finais.