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.
fonte
Respostas:
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 oif
e 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:
fonte
C-c >
ouC-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 gigantescaM-x indent-region
(ou qualquer que seja a versão do seu editor) para recuar tudo "corretamente".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.
fonte
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.)
fonte
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.
fonte
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.
fonte
highlight link RedundantSpaces Error | au BufEnter,BufRead * match RedundantSpaces "\t" | au BufEnter,BufRead * match RedundantSpaces "[[:space:]]\+$"
em meu vimrcSe um programador se incomoda com o significado dos espaços em branco, provavelmente não se tornará um programador em python.
fonte
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.
fonte
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).
fonte
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.
fonte
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.
fonte