Os programadores Python consideram o problema de espaço em branco inconveniente? [fechadas]

11

Muitos programadores, ao encontrar o Python pela primeira vez, ficam imediatamente desanimados com o significado do espaço em branco. Já ouvi várias razões para isso ser inconveniente, mas nunca ouvi uma reclamação de um programador Python.

Obviamente, não conheci muitos programadores de Python, pois passei minha carreira no mundo Java.

Portanto, minha pergunta é para aqueles que participaram de um grande projeto Python (mais de três meses, com o Python sendo a linguagem principal usada): Você achou o problema de espaço em branco inconveniente e continuamente irritante? Ou foi um problema quando você entrou no fluxo?

Não estou fazendo a pergunta porque sou a favor ou contra o Python, ou a favor ou contra o uso de espaço em branco. Por acaso gosto de Python, mas nunca o usei para nada grande.

Por favor, não forneça especulações se você não possui experiência em Python.

Eric Wilson
fonte
2
Eles usariam a linguagem se usassem? Eu não. Os requisitos de sintaxe irritantes / perturbadores são uma das coisas que podem me fazer escolher um idioma diferente para um projeto (supondo, é claro, que eu possa escolher).
desde quando o espaço em branco é um problema? :-)
Kugel
22
Achamos inconveniente que todo mundo continue trazendo à tona. Nós nunca pensamos sobre isso.
Winston Ewert
A questão do espaço em branco não é diferente de anos atrás - o OCCAM2 tinha um espaço em branco significativo. Não foi grande coisa.
quickly_now
4
A única vez que eu já achei chato é quando erros de sintaxe literalmente invisíveis código de linha que foi escrito usando espaços em vez de separadores (ou vice-versa), causando-colando cópia
Cameron

Respostas:

14

Há apenas um caso em que considero o espaço em branco irritante, e é quando modificamos o código existente para que um bloco de código tenha que ficar mais ou menos recuado do que antes (por exemplo, adicionando ou excluindo um if:antes do código). Ao escrever em um idioma como C, basta adicionar o ife um par de chaves, e (no Emacs, ou eu imagino que seja um bom editor), pressione Tab para permitir que o editor corrija automaticamente o recuo. No Python, você precisa fazer isso sozinho. Obviamente, existem atalhos de editor para você mesmo, por isso não é tão ruim, mas a perda de redundância impõe um leve ônus extra ao programador.

No geral, é uma vitória, apenas para impedir que metade da minha tela seja preenchida com linhas como a seguir:

         }
      }
   }
}
dfan
fonte
1
Em qualquer editor razoável que fale Python, existe uma maneira muito fácil de reindicar o bloco de código. No Wing IDE, basta selecionar o bloco e pressionar Tab (ou Shift-Tab para diminuir o nível do recuo).
Adam Crossland
1
Sim, no Emacs eu seleciono o bloco e pressiono C-c >ou C-c <. Você ainda precisa fazer isso sozinho. Dito de outra forma, como espaço em branco e lógica de código não são redundantes, você não pode simplesmente selecionar um bloco e uma chamada gigantesca M-x indent-region(ou qualquer que seja a versão do seu editor) para recuar tudo "corretamente".
dfan
6
@ Adam, um bom editor facilita a alteração do seu nível de indentação. Mas, no idioma do aparelho, você pode colar um novo código e pressionar a tecla favorita para reinserir o arquivo. Tada! O recuo está correto. No python, você precisa colar, selecionar, recuar / dedentar. Não é muito, mas há uma pequena vitória aqui para aparelhos.
Winston Ewert
@Winston - deve ser seu editor. Se o código que você cola é, por si só, corretamente identificado, então se sair alguns níveis longe demais para a direita / esquerda, basta digitar a tecla (SHIFT +) para alinhá-lo de acordo - não é uma grande diferença pressionar a tecla reinsira o arquivo. Além disso - tu não shalst copiar / colar o código :)
Ingo
1
@ Winston: mesmo blocos de recuo do Notepad ++ ao usar Tab e Shift-Tab, ainda não encontrei o atalho do vim, mas não o uso o suficiente, acho: p
Matthieu M.
50

Eu amo o espaço em branco significativo do Python. Para mim, é o exemplo perfeito de DRY em um nível sintático. A maneira legível por humanos para indicar onde um bloco de código começa e termina é com recuo. Se você deseja que seu código seja legível, você deve identá-lo independentemente do idioma. É tolice fazer com que o programador especifique essas informações duas vezes, uma vez para o compilador / intérprete e outra para humanos. Além disso, o recuo nas linguagens do tipo C é semelhante a um comentário: ele visa melhorar a compreensibilidade, mas seu significado não é imposto pelo compilador / intérprete e pode ficar fora de sincronia com o significado real (onde estão os chavetas) com muita facilidade, ofuscante ao invés de esclarecer.

dsimcha
fonte
8
+1 para Não se repita. A boa prática é recuar o código para refletir a estrutura de blocos de qualquer maneira, então por que os marcadores de início / fim também?
21311 Steve1314
12

Espaço em branco significativo é realmente conveniente para mim. Isso me faz digitar menos. Ele formata o código de maneira ordenada e sem ambiguidade. Devido a isso, torna o código mais legível.

(Também gosto de espaços em branco significativos em Haskell, pelas mesmas razões.)

9000
fonte
1
Eu também teria compartilhado minha experiência positiva com o espaço em branco de Haskell, mas o FarmBoy insistiu que é preciso ter três meses de experiência com Python, qualquer outra coisa era especulação. :-)
Ingo
1
Minha experiência com Python nós desde 1998, por isso a minha resposta provavelmente qualifica :) (Pena que a minha experiência com Haskell é muito mais curto.)
9000
@ 9000 Mesmo que Haskell tenha vindo antes do Python! : D
pradyunsg
8

Quando usei python pela primeira vez, o espaço em branco era novo e, portanto, uma restrição irritante.

Agora eu nem percebo. Uso python há 11 meses.

Matt Ellen
fonte
5

Primeiro: minhas linguagens de pão e manteiga são Python, SQL e Java. Eu amo o espaço em branco do Python - é menos sintaxe e digitação, e força as pessoas a escreverem código legível e bem formatado. OTOH, odeio a verbosidade do Java - tanto que na verdade uso o Python para gerar todo o clichê que tenho que escrever em Java, o que impressiona todos os meus colegas de trabalho em Java que ficam impressionados com a minha produtividade.

A única grande ressalva, porém, é quando copiar / colar código da Web - geralmente causa espaços e guias misturados, o que requer uma etapa extra para a limpeza, e geralmente só pego após uma exceção de tempo de execução.

Greg
fonte
Dizer ao seu editor para guias de destaque de sintaxe como erros pode ajudar muito - para uso vim eu highlight link RedundantSpaces Error | au BufEnter,BufRead * match RedundantSpaces "\t" | au BufEnter,BufRead * match RedundantSpaces "[[:space:]]\+$"em meu vimrc
Daenyth
4

Se um programador se incomoda com o significado dos espaços em branco, provavelmente não se tornará um programador em python.

BenjaminB
fonte
1
Já ouvi muitas pessoas pregando Python que dizem ter tido problemas com o The Whitespace Thing (tm), mas que passaram a gostar disso depois de um tempo. Pela minha observação, parece que à medida que mais pessoas participam de uma discussão sobre esse tópico, a propabilidade de uma delas contar essa história se aproxima de uma. (Edit: Imediatamente comprovado pela segunda resposta ...)
@ Delnan, eu posso assinar isso.
Ingo
3

Aposto que você encontrará uma sobreposição considerável entre as pessoas que têm um problema com espaço em branco significativo e as que não têm experiência com um bom editor de texto de programador, como o Emacs, que lida com a maioria dos recuos sem o envolvimento deles.

De qualquer forma, depois de internalizar o Python, não será mais um problema; de fato, sua concisão e o pequeno espaço que ocupa na tela tornam-se uma grande vantagem para a legibilidade. Como uso principalmente o Python, acho que as linguagens em que há mais redundância (por exemplo, Java e C #) são difíceis de me disciplinar para escrever. Colocar chaves em torno de um código cujo recuo já deixa sua estrutura clara irrita meus nervos.

JasonFruit
fonte
3

Para codificação real, isso não é inconveniente, mas realmente benéfico (consulte a resposta do dsimcha).

Pode ser irritante ao lidar com tecnologias de comunicação que não respeitam espaços em branco de destaque (como muitos fóruns da Web não orientados a programação e também ao incorporar código Python em uma linguagem diferente, como linguagens de modelagem HTML), mesmo que eu considere isso como mais um defeito nas ferramentas que eliminam espaços em branco do que um defeito no Python, é verdade que as linguagens redundantes que expressam a estrutura de código duas vezes estão melhor equipadas para lidar com ambientes destrutivos (já que você pode colar o código em um editor e auto- reindent com base nos marcadores estruturais explícitos, ou simplesmente não se importa se o código está sendo executado apenas em vez de ser lido por humanos).

ncoghlan
fonte
2

Não acho o espaço em branco irritante. Acho a falta ou o recuo inconsistente muito irritante em outras línguas. Entendo que esse problema é um dos problemas que o estilo pretende solucionar.

Python não é um dos meus idiomas principais.

Eu acho que o manuseio de abas e espaços em recuo é irritante de vez em quando. Isso pode causar problemas ao alternar editores de uma edição para outra ou ao editar código que outra pessoa escreveu. Geralmente é trivial de resolver.

BillThor
fonte
1
mistura abas e espaço na indentação pitão é o caminho mais curto para o inferno: p
Matthieu M.
@ Mattieu: Definitivamente, esse é o meu aborrecimento.
BillThor
1

Eu venho de um background C # / Javascript / XBase em nenhuma ordem específica e, nas minhas brincadeiras com o Python, isso não é uma consideração para mim. É como aparelho nos outros idiomas - é assim que funciona, colocar as coisas como as regras dizem, e secar os olhos é a minha atitude.

Alan B
fonte