Origens do recuo do código


31

Estou interessado em descobrir quem introduziu o recuo do código, bem como quando e onde foi introduzido.

Parece tão crítico para codificar a compreensão, mas não era universal. A maioria dos códigos de Fortran e Basic foi (é?) Sem indentação, e o mesmo vale para Cobol.

Tenho certeza de que vi até mesmo o código Lisp antigo escrito como texto contínuo e com quebra de linha. Você tinha que contar parênteses na sua cabeça apenas para analisá-lo, não importando o entendimento.

Então, de onde veio uma melhoria tão grande? Eu nunca vi nenhuma menção de sua origem.

Além de exemplos originais de seu uso, também estou procurando discussões originais sobre o recuo.


Não tenho certeza de que tenha um único ponto de origem. Além disso, para alguns códigos anteriores, o espaço ocupado pelos próprios espaços teria sido um problema.
Jack Aidley

1
Na verdade, FORTRAN foi recuado. De certa forma. Ele estava disposto em colunas, sendo o primeiro reservado para o Cpersonagem, se você estava fazendo um comentário.
22614 Jonathan Landrum

Com exceção dos casos em que o recuo é usado para alterar o significado semântico do código (ou seja, quando a alteração do recuo o coloca em loops ou como parte de um if, a F #), o recuo não é realmente um recurso de linguagem, é um recurso IDE ( e um pouco no compilador, para ignorar os espaços à esquerda). @ Jack está certo - originalmente os programas eram perfurados em cartões, e o recuo literalmente não existia no armazenamento (e talvez não devesse agora também). O RPG colunar não usa recuo (e você tem apenas 20 caracteres livres por linha de qualquer maneira), mas o IDE pode "recuar" suavemente o código para você.
Clockwork-Muse

6
Pensando nisso da noite para o dia, ocorre-me que, em um grau significativo, a indentação provavelmente antecede a programação. O recuo provavelmente foi usado nas listas de instruções antes de qualquer pessoa escrever programas de computador. Estou tentando caçar um exemplo.
Jack Aidley

@ O recuo do Clockwork-Muse era um recurso de linguagem no COBOL até cerca de 20 anos atrás ("área A", "área B" etc. ).
Ross Patterson

Respostas:


21

As origens do código recuado provavelmente podem ser encontradas no ALGOL :

A ALGOL introduziu blocos de código e os pares begine endpara delimitá-los e também foi a primeira linguagem que implementou definições de funções aninhadas com escopo lexical.


Parece razoável, embora eu me pergunte se o prognóstico de Lisp pode não ter chegado primeiro. De qualquer maneira, estou realmente procurando detalhes sobre a introdução do recuo.
Daniel Mahler

4
@DanielMahler - Navegue pelo manual de programação LISP 1 e veja por si mesmo. Parte do código de exemplo é recuado, mas, na melhor das hipóteses, é aleatório. A maior parte do código de exemplo fica nivelada à esquerda.
David Hammen

@DavidHammen Essa deve ter sido uma das piores máquinas de escrever ... Você pensaria que elas escreveriam a coisa toda à mão.
Panzercrisis

6
Eu não acho que o texto citado realmente apóie o uso / existência de indentação . Esse é o suporte para o código de seção. Java usa colchetes ( {}) para delimitar blocos, e você pode definir funções aninhadas, mas isso não me diz nada sobre se o código é realmente recuado.
Clockwork-Muse

12

O código recuado deve ter chegado antes de 1958, pois estava presente - mas não onipresente - no LISP e na ALGOL. O mais antigo que consigo localizar é o COMTRAN, que foi introduzido em 1957, embora eu possa encontrar apenas o manual de 1960 (consulte a página 90). Esse recuo difere da concepção moderna, já que o COMTRAN não possui a estrutura de blocos da maioria das linguagens desde o ALGOL, mas acho que ainda deve contar.

Eu suspeito que esse não seja realmente o primeiro exemplo, mas não consigo localizar nenhum anteriormente.

Atualizada

Ocorreu-me que, em um grau significativo, a indentação provavelmente antecede a programação. O recuo provavelmente foi usado nas listas de instruções antes de qualquer pessoa escrever programas de computador. Infelizmente, não consigo encontrar bons exemplos disso.


-1

Uma expansão no comentário de Ross Patterson - os compiladores COBOL (ou pelo menos os compiladores da IBM, que usei na minha carreira pré-aberta em sistemas) forçaram o recuo (as áreas "A" e "B" que ele menciona). Se algum dos elementos exigidos nessas áreas não fosse colocado exatamente, seu código falharia na compilação. No entanto, além disso, nenhum recuo específico foi necessário - isso muitas vezes levou a um aperto ao modificar o código de outro desenvolvedor cujo estilo de recuo era diferente do seu - a etiqueta sugeriria que você seguisse o padrão existente, pois preservava a paz entre os pares; além disso, estilos diferentes na mesma fonte seriam agravantes de se ver, quase na aparência de Tetris.

Faz anos desde que eu penso sobre COBOL e seu recuo - obrigado por fazer a pergunta e proporcionar uma pequena viagem ao passado!

Marty

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.