Como os comentários do código evoluíram da década de 1940 para 2020

Mas eles não se desenvolveram de forma alguma. Desde as primeiras linguagens de programação até hoje, os comentários no código são apenas texto estático (com algumas exceções, sobre o qual falarei).

imagem

Bem, o que mais você pode melhorar ou criar? Vamos refletir sobre esse tópico - é possível, de alguma maneira, melhorar nossa experiência de interagir com um aspecto tão importante, mas muitas vezes ignorado, da programação como documentação em código ou em um simples comentário.

Para começar, dedicaremos alguns parágrafos ao assunto deste artigo. Sim, porque realmente não existe essa história de desenvolvimento, então você pode chamar o título de provocativo. Um pequeno aviso: meu conhecimento é limitado (descendente em experiência) a estas linguagens: vasta experiência: TS, JS, Rust, médio: PHP, C ++, pequeno: Vá, Java.

Então, tudo o que temos é o seguinte: um JSDoc abandonado e com bugs, finalmente morto na era TypeScript, pela maneira pela qual não há menos TSDoc com bugs e abandonado. Para o PHP, existe o PHPDoc, que foi pouco útil quando eu codifico nessa linguagem. Confesso que tenho a menor experiência em C ++, por isso não ouvi nada parecido e o CppDoc encontrado no Google não causa nada além de um sorriso triste. O mais desenvolvido nesse sentido é o Rust, como sempre. Possui um excelente sistema RustDoc, mas infelizmente nem sempre é ergonômico e ainda é pouco suportado pelo IDE.

Portanto, a imagem geral é bastante triste e a infraestrutura de comentários em torno do código não mudou desde o início do histórico de programação. Os comentários têm a mesma aparência de 90 anos atrás no Plancalcule condicional, como no código de montagem do computador do módulo lunar Apollo 11.

imagem
(foto de shopify.com)

A história acabou. Agora, o que há de errado com o fato de os comentários serem apenas texto estático? O texto estático não é perfeito e pode ser melhorado com algo? Eles inventaram alguns hipertextos e HTML, a Internet está em torno disso. Mas quem precisa de tudo isso? O que é tão difícil digitar URLs manualmente? Os millennials eram bastante preguiçosos.

Claro que era sarcasmo. Mas o que o Hypertext tem a ver com os comentários no código? Vamos pensar em quais problemas o Hipertexto resolveu e há problemas semelhantes ao usar comentários de código?

Portanto, o hipertexto transformou o texto estático em texto com hiperlinks. A maneira mais fácil de entender os benefícios disso é lendo o artigo da Wikipedia. Por exemplo, sobre o Large Hadron Collider . Depois de começar a ler o artigo, a maioria das pessoas entenderá o que são prótons e íons se não perderem as aulas de física. Mas então a palavra "Hadron" aparece. O que é e como o leitor pode descobrir sobre isso? Se fosse um texto estático, não haveria muita escolha, exceto encontrar em algum lugar (na biblioteca?) Outro texto em que diga o que é Hadron. Mas graças a Deus isso não é verdade, e podemos simplesmente clicar no hiperlink.

Vamos pensar, existem situações na programação? Milhares deles. Para encontrar um exemplo, acesse quase qualquer repositório aberto, como o kernel do Linux. Entrei no primeiro arquivo que recebi

/** * irq_cpu_rmap_notify - callback for IRQ subsystem when IRQ affinity updated * @notify: struct irq_affinity_notify passed by irq/manage.c * @mask: cpu mask for new SMP affinity * * This is executed in workqueue context. */ static void irq_cpu_rmap_notify(/*   */) { /*   */ } 


Então, imagine que você entrou recentemente no projeto e de repente algo quebrou. O retorno leva a essa função, mas você não sabe nada sobre isso. O que você deve fazer? É isso mesmo - use tudo o que você precisa para entender do que se trata essa função - o próprio código e os comentários. O texto humano geralmente é mais fácil de entender do que o próprio código, certo? Portanto, começamos lendo o comentário. E então nosso humor cai abaixo do pedestal.

Que tipo de IRQ? Você não tem ideia do que é. Quais são os próximos passos? Entre em contato e distraia colegas mais experientes? Você pode, é claro, mas não quer mesmo. Ou eles estão de férias. Pesquisar por código? Você encontrará milhares de referências a essa abreviação e isso o deixará deprimido. Bem, digamos que você vasculhou metade da base de código e aparentemente encontrou uma explicação do que esse IRQ significa. Mas também acontece que essa explicação é para outra sigla IRQ, que tem um significado completamente diferente! Bem, o último caso é bastante raro, mas ainda assim.

Mas e se você clicasse na palavra IRQ e milagrosamente, seu IDE o levaria ao local de definição dessa abreviação? Isso seria ótimo, certo? E, além disso, simplesmente, não é mais complicado que o Hipertexto. Então, por que, em 2020, os próprios programadores não farão essa ferramenta? Eu destacaria a cápsula e a sentença anterior em negrito. A razão para isso é um grande mistério para mim. Talvez existam para outros IDEs, mas não encontrei nada para o VSCode. Portanto, eu mesmo fiz essa extensão . Convido você a testar e expressar sua opinião.

Mas vamos continuar.

Ao ler o fragmento de código acima, ou melhor, um comentário, surgem perguntas em quase todas as palavras. Por exemplo, onde está localizada essa estrutura irq_affinity_notify? Ou por que, em 2020, não posso clicar em irq / manage.c para que o IDE me transfira de maneira rápida e obediente a esse arquivo? Este também é um grande mistério para mim. Portanto, na minha extensão, o primeiro já foi resolvido, mas até agora apenas para JavaScript e TypeScript (o seguinte: C / C ++, Rust, Java, Go), e o segundo como menos significativo também será resolvido, mas um pouco mais tarde.

Não quero aborrecê-lo ainda mais com um monte de texto, então insira um gif com mais alguns exemplos de trabalho:

habr1.gif

Tenho muito medo de críticas e comentários tóxicos, mas quero saber ainda mais o que você pensa sobre isso?

Source: https://habr.com/ru/post/pt485162/


All Articles