Pergunta

Depois de algumas reflexões estúpidas sobre línguas Klingon, que vieram a partir deste pós comecei um projeto passatempo bobo criando uma linguagem de programação Klingon que compila a Lua byte-code. Durante a fase inicial de design linguagem Olhei para cima informações sobre Klingon , e descobriu sobre esta regra de programação Klingon:

não UM VERDADEIRO Klingon guerreiro não comentar seu código!

Então eu decidi minha língua faria não suporta comentando , como qualquer bom Klingon nunca iria usá-los.

Agora, muitas das formas Klingon não parecem razoáveis ??para os programadores de nós seres humanos, no entanto, enquanto a brincar com a concepção e implementação de minha língua passatempo eu vim a perceber que esta regra Klingon sobre comentando é realmente muito razoável, se não ótimo.

Retirar a capacidade de comentário de uma linguagem de programação significava que eu Have para escrever código alfabetizados , sem exceções.

Então, isso me fez querer saber se existem línguas lá fora, que não suportam comentário?

Existe algum realmente bons argumentos para não remover comentando a partir de uma língua?

Edit: Qualquer bons exemplos de comentários necessário

?

P. S.> Minha linguagem passatempo acima é parcialmente bobo de qualquer maneira, por isso não se concentrar demais em minha implementação, tanto quanto o conceito de observações necessárias em geral

Foi útil?

Solução

Eu não tenho certeza eu concordo com o "Have" na demonstração "Removendo a capacidade de comentário de uma linguagem de programação significava que eu tenho que escrever código alfabetizados, sem exceções", uma vez que não é como se todo o código está documentado. Meu palpite é que a maioria das pessoas iria escrever código ilegível.

Mais ao ponto, eu pessoalmente não acreditar na realidade do programa auto-explicativo ou API no mundo prático.

A minha experiência de analisar manualmente a documentação de APIs inteiras para minha dissertação sugere que, muitas vezes, você teria que carregar mais informações do que você poderia transmitir na assinatura sozinho. Se você eliminar os comentários de interface de seu idioma, quais são as alternativas? Nenhuma documentação não é uma opção. documentação externa é menos provável de ser lido.

Quanto à documentação interna, eu posso ver o seu ponto em querer reduzir documentação para convencer as pessoas a escrever melhor. No entanto, os comentários servir a muitos propósitos de colaboração e de coordenação e são destinadas a aumentar a consciência das coisas. Banindo esses detalhes para locais extenral, você está reduzindo as chances de que eles vêm à consciência de um futuro leitor, a menos que seu ferramental é grande.

Outras dicas

Não comente o que você está fazendo, mas por que você está fazendo isso.

O QUE é cuidado por código limpo e legível e simples com a escolha adequada de nomes de variáveis ??para apoiá-lo. Comentários mostrar uma estrutura de nível superior para o código que não pode ser (ou é difícil) mostram pelo próprio código.

Ugh, não ser capaz de comentar rapidamente uma linha (ou linhas) durante os testes sons irritantes para mim, especialmente quando scripting.

Em comentários gerais são uma verruga que indica má concepção, especialmente longa divagar comentários onde fica claro o desenvolvedor não tem a menor idéia o que diabos eles onde fazer e tentou compensar isso escrevendo um comentário.

Lugares onde os comentários são úteis:

  • Deixando um número de bilhete ao lado de uma correção para que futuros programadores podem entender os requisitos de negócios
  • Explicando um hack particularmente complicado
  • Comentário sobre a lógica de negócios para um pedaço de código
  • descrições concisos em documentação da API para que um terceiro pode usar sua API

Em todas as circunstâncias programadores devem se esforçar para escrever código que é descritiva e não escrever comentários que descrevem código mal escrito. Dito isto eu acho que há uma abundância de razões válidas que línguas pode e deve apoiar comentários.

Seu código tem dois públicos distintos:

  • O compilador
  • Os seres humanos como nós

Se você optar por remover os comentários completamente, a suposição de que você está tomando é que você vai ser suficiente apenas para o compilador, e nada mais.

Claro que, sendo Klingon, pode não precisa de comentários porque você não é humana. Talvez você possa demonstrar claramente para nós a sua capacidade de falar em IL vez?

Você não necessidade uma única afirmação em seu código, porque, no modo de versão, todos eles desapareçam. Mas quando C ++ não tem afirmações built-in, alguém escreveu a macro assert para substituí-lo.

É claro que você não necessidade comentários, seja, para mais ou menos pela mesma razão. Mas se você projetar uma linguagem sem comentários, as pessoas vão começar a fazer coisas como:

HelperFunctionDoesNothing("This is a comment! Blah Blah Blah...");

Estou curioso. Como você parar alguém de declarar uma string estática que contém um comentário e, em seguida, ignorando a variável para o resto do func / método / processo / batalha / whatever?

var useless_comment = "Can we destroy our enemies?"
if (phasers on full) return Qapla'

Línguas precisa de comentários. Pelo menos 95% dos comentários pode ser substituído pelo código mais claro, mas ainda há hipóteses você precisa de documentos e é absolutamente necessário para documento se há algum problema externo que você está trabalhando em torno.

Eu nunca escrever um comentário sem primeiro considerar se eu posso alterar o código para eliminar a necessidade para ele, mas às vezes você não pode.

Enquanto todo o código fonte é protegido por padrão. Muitas vezes, é bom para:

  1. lembrar a pessoa que lê o código-fonte que está sujeita a direitos de autor

  2. dizer às pessoas o que os termos de licenciamento são para esse arquivo de código fonte

  3. dizer-lhes se eles estão ou não olhando para um segredo comercial protegido

Infelizmente, sem comentários, é difícil fazer isso.

Eu sou o único que comenta a um par de linhas Código para uma série de propósitos?

Embora seja verdade que os seres humanos precisam de ser capaz de código de comentário, não é absolutamente necessário que a linguagem apoiar diretamente comentando: para a maioria dos idiomas, seria trivial para escrever um script que exclui uma comentários de linha (por exemplo, todos os linhas que começam com '#' ou algum outro personagem) em seguida, executa o compilador.

Na verdade, porém, eu estou surpreso e decepcionado ao saber que mesmo meus favoritos linguagens de programação esotéricas apoiar comentários: Brainf ** k e Whitespace . Essas línguas são destinadas a ser difícil de ler, então parece que eles não deveriam apoiar comentando. (Ao contrário de minha outra linguagem esotérica favorita: LOLCODE , que pretende ser auto-documentado, em lolcats-speech )

Eu dissentirem das outras answerers neste ponto: eu digo, ser fiel a sua visão de uma linguagem de programação Klingon, e não suportam comentários

Um ponto contra os comentários é que eles tendem a cair muitas vezes fora de data com o código. Toda vez que você adicionar uma redundância, você está arriscando esse tipo de inconsistência.

Na verdade, há alguma pesquisa interessante que eu vi quando um grupo usou PNL para analisar bloqueio comentários em algum grande sistema e, em seguida, compará-los com os resultados da análise estática e foram capazes de corrigir alguns bugs dessa forma.

Não é programação alfabetizada como muitos comentários como é código? Certamente, muito do que eu vi de programação alfabetizada tem tanto explicação como código, se não mais comentários.

Você pode pensar que os desenvolvedores que escrevem na sua língua vai fazer um esforço extra para escrever código claro, mas o ônus vai ser realmente em você para projetar uma linguagem que de então expressivos que não precisa ser comentado. Inferno, nem mesmo o Inglês é assim (ainda entre parênteses!). Se seu idioma não está concebido de forma que pode muito bem ser tão útil quanto Brainfuck e apreciar a popularidade eo respeito de Brainfuck.

Devo adicionar links ou são ligações consideradas commentlike?

Além disso, as pessoas vão encontrar maneiras de adicionar comentários se eles precisam de pelo sequestro cordas e abusar nomes de variáveis ??(que não fazem nada que não seja posto em para comentários). Você já leu Godel Escher Bach ?

Será uma má idéia para remover a instalação comentando completamente. Certamente os desenvolvedores devem aprender a escrever código com comentários mínimos ou seja, no código documentação escrita auto, mas há um monte de casos em que a pessoa tem que explicar por que algo está sendo feito do jeito que está. Considere os seguintes casos:

  • um novo desenvolvedor pode começar a manter o código eo dev original tenha deixado / out do projeto
  • uma mudança na especificação ou exigência do mercado leva a algo que é contra-intuitivo
  • copiar aviso direito especialmente se open source (algumas libs de código aberto exigem que você faça isso)

É também minha experiência que novos programadores tendem a comentário mais e como elas se desenvolvem perícia seu código tende a tornar-se auto documentar e concisa. Em geral comentários devem ser sobre por que e não como ou o que.

NO -. Não há uma única linguagem de programação lá fora, que exige comentários

A linguagem é para o computador. Os comentários são para os seres humanos. Você pode escrever um programa com 0% comentários. Ele vai executar, com ou sem razão. Você não pode escrever um programa com 100% de comentários. É ou não vai compilar - não main (), etc. -. Ou, para linguagens de script, fazer exatamente nada

E, além disso, programadores reais não comentar seu código . Assim como Klingons.

Embora concorde com as respostas de Uri, eu também fez um idioma sem comentários. ( ichbins .) A linguagem era para ser o mais simples possível enquanto ainda é capaz de expressar o seu próprio compilador limpa; desde que você pode fazer isso sem comentários, eles foram descartados.

Eu estou trabalhando fora e sobre em uma revisão que suporta comentário, mas um pouco diferente: estilo com código aninhado em texto em vez dos comentários embutidos em código alfabetizados-programação. Ele também pode ter exemplos / test-casos mais tarde como um recurso de linguagem de primeira classe.

Boa sorte com o Klingon hacking. : -)

Eu não posso te dizer como estou agradecido por Javadoc - o que é muito simples de configurar nos comentários. Então, isso é pelo menos um sentido em que os comentários sejam úteis.

Não, claro que uma língua não tem que ter comentar. Mas um programa (útil) tem que ter comentários ... Eu não concordo com a sua ideia de que o código de alfabetizados não tem comentários. Alguns muito bom código é facilmente compreensível com comentários, mas apenas com dificuldade sem.

Eu acho que os comentários são necessárias em muitas situações.

Por exemplo, pensar os algorítmicos. Suponhamos que há uma função de escrita em C, que resolve o viagem vendedor Problema , há grande variedade de técnicas que podem ser usadas para lidar com este problema. E os códigos são normalmente críptica por sua natureza.

Sem descrever explicitamente os parâmetros e o algoritmo usado, usando comentários, é quase impossível reutilizar este pedaço de código.

Podemos viver sem comentários no código? Claro, mas isso não vai fazer viver mais fácil.

são comentários necessárias para uma linguagem de programação?

No. No grande esquema das coisas um compilador não poderia me importar menos sobre um comentário e só quer código para triturar a um denominador comum mais baixo.

É útil para uma linguagem de programação para proporcionar uma construção de comentar?

Sim. Comentários são muito úteis para um programador e não apenas fingir que eles sabem o que estão fazendo, mas na depuração e útil documentar bem.

Os comentários são úteis porque eles tranquilizar a pessoa que lê o seu código - provavelmente o "futuro você" - que você pensou sobre seu bem-estar

.

Vai ser mais difícil do que você pensa para fazer uma linguagem onde os comentários são impossíveis.

if (false) {
    print("This is a comment. Chew on that, Klingons!")
}

Eu acho que a questão pode tornar-se como auto-suficiente seria a língua sem observações ser? Se, por exemplo, ele compila para baixo para DLLs que são usadas dentro de outro código, em seguida, como se sabe nada além da assinatura da função em termos do que ele requer, alterações e retorna? Eu não gostaria de ter nomes de função sendo dezenas de personagens para tentar expressar o que pode ser facilmente feito com comentários acima a função que pode ser usado como documentação dentro algo como o localizador de objectos dentro do Visual Studio, por exemplo.

É claro !!

A principal razão é desenvolvedores iniciantes. Nem todo mundo sabe como escrever código alfabetizados. Na verdade, existem milhões de pessoas lá não recebem um NullPointerException quando vêem um.

Todos nós início em algum ponto.

Mas se você está alvejando para "especialistas" os desenvolvedores só, por que se preocupar na língua em primeiro lugar. Você deve estar usando borboletas !!! Isso é o que uso desenvolvedor real!

Comentários é uma obrigação, tentar torná-lo mais difícil se você quiser (como usar # // ## / seqüência para criar um comentário ou algo parecido), mas não deixá-lo fora.

:)

Eu concordo com você que o código bem escrito não precisa de comentários como "Código só é bom documentação disponível para programador. No entanto, esta é condição muito ideal, nem todo mundo escreve bom código todos os tempos. Então, para tornar o código mal escrito bom em são necessárias observações futuras.

Uma vez eu escrevi um aplicativo VB (um jogo de tabuleiro bobo inspirado por Monopoly) sem qualquer comentários. Mas eu fiz isso só para irritar meu professor, que nos havia dito comentários foram para "O que encontramos relevantes , para que pudéssemos lembrar mais tarde".

código Perfeito precisa zero comentários. Deve ser simples e understandible por novatos completos.

Qualquer código precisa de comentários, eu tento explicar a razão para e funcionamento de todas as funções de gravação I em 1 ou 2 linhas.

código que se explica só existe em um mundo perfeito, há sempre algum hack estranho ou uma razão para fazer algo rápido-n-sujo, em vez do caminho propper. A melhor coisa a lembrar é a de comentário PORQUE código faz o que faz, bom código explica o que faz 99% do tempo.

Escrever algo simples, como um pedaço de código que pode resolver um puzzle Sudoku (3 razoavelmente simples while) e tente ler que 3 meses depois. Você vai immidiatly encontrar algo que não está exatamente claro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top