Guia para digitar código de código para não programadores


13

fundo

Eu escrevi um artigo científico contendo código e recebi recentemente as provas, ou seja, o que os tipógrafos da revista criaram a partir do meu manuscrito. O resultado não foi aceitável: O recuo é inconsistente; há um ponto final no final de cada bloco de código; as aspas foram destruídas, etc. Observe que todos os erros não eram específicos da linguagem de programação que eu usei.

Agora, posso entender por que alguém que não tem experiência em programação nem recursos externos cometeria tais erros, mas em tempos da Internet ninguém deveria ficar sem recursos externos. Assim, consultei meu mecanismo de pesquisa favorito para procurar algo para sugerir e encontrar ... nada. Existem muitos guias para programadores sobre como digitar lindamente um código no LaTeX ou similar, o que é legal e adequado, mas isso obviamente não foi feito para o tipógrafo que precisa digitar o código de outra pessoa.

Questão

Estou procurando um recurso que:

  • explica os conceitos básicos de código de digitação,
  • é direcionado a tipógrafos sem experiência em programação.

A dificuldade com isto é que ele depende da linguagem e convenções usadas, então a questão é bastante amplo, mesmo se as respostas são apenas ligando um recurso
Zach Saucier

2
@ Scott Bem, em relação a aspas, espaços, caracteres - na verdade, pode-se generalizar bastante bem: eles devem ser preservados.
Mikhail V

1
@ MikhailV Apenas sinto que muitas linguagens de código têm mais em comum com línguas estrangeiras do que meramente diretrizes. Claro que você pode determinar aproximadamente onde os espaços e as linhas devem ser colocados. Mas, para ser preciso, você realmente precisa entender o idioma que está revisando. Sim, você pode dizer aos editores / revisores para deixarem "como estão", o que não significa que, no final, estará correto.
Scott

1
@Wrzlprmft O engraçado é que não se pode copiar e colar PDF em formato python sem perder todo o espaço em branco anterior no acrobat ou no leitor de acrobatas. "Inteligentemente" os remove. Da mesma forma, se você colar o código em muitos editores WYSIWYG, como o word ou o INdesign, eles substituirão as cotações por aspas de tipógrafos (a menos que você desative esse recurso), mas para o código realmente BAD. Também no idesign, você não pode realmente digitar o código corretamente sem introduzir um caractere diferente para quebra de linha, o que pode se tornar uma coisa ruim se você copiar o código novamente.
Joojaa

1
@ usr2564301: Antes de tudo, essa pergunta está sendo encontrada por alguns mecanismos de pesquisa e, portanto, é mais provável que qualquer tipógrafo que tenha os mesmos problemas que o meu possa encontrar uma resposta em potencial (e, se não, eu poderia ser convencido sobre isso). Segundo, sim, eu incluiria um link na resposta às minhas provas, porque ele pode evitar erros ainda não cometidos na segunda rodada de provas. Também não custa ter uma referência se o tipógrafo for teimoso. Por fim, este é um periódico / editor que raramente precisa lidar com código, por isso é um pouco diferente dos cenários que você descreve.
Wrzlprmft

Respostas:


7

Talvez o ponto real seja que o código não deva realmente ser digitado da maneira como as pessoas entendem a digitação. Portanto, ao colocar o código em um documento, ele deve ser colocado literalmente , como em todos os espaços, guias, caracteres especiais ou não especiais e quebras de linha intactas.

  • As guias devem ter até 4 ou 8 espaços (quatro sendo os mais comuns)
  • A fonte deve ser uma fonte de largura fixa. E quase universalmente tem que ser.
  • Verifique se o seu aplicativo não faz substituições!

    Isso significa que não há ligaduras.

    Muitos aplicativos (como Word e InDesign) também alteram aspas diretas para pares de tipógrafos. Verifique se essas opções estão desabilitadas antes de inserir o código no seu documento.

  • Não permita que o código flua automaticamente de uma linha para outra. Não toque no código, você não é o especialista!

Código não é texto do corpo, não segue nenhuma convenção tipográfica. Pergunte a si mesmo que você digitaria texto em uma ilustração?

Se você é um especialista

Se você é um especialista e conhece o idioma em questão, aplica-se o seguinte.

Nota : Não adivinhe ou deduza, leia o que foi dito. Muitos idiomas têm a mesma aparência e o código pode ser uma pseudo linguagem que se parece com um código real. Então você pode:

  • Editor como coloração / negrito / itálico de palavras-chave se e somente se sua substituição tiver a mesma largura fixa. É melhor deixar um editor fazer isso por você (editores como o scintilla podem exportar o código formatado). Lembre-se de que o editor precisa conhecer o idioma, talvez também as bibliotecas.

    Observe que se você fizer isso errado, causa mais mal do que bem.

Se você é um especialista em domínio. Como conhecer o idioma e a biblioteca e entender o código em questão:

  • Em seguida, você pode realinhar o código em várias linhas, se ele não se ajustar ao seu layout. Não faça isso a menos que você realmente saiba o que está fazendo, pois poderá acabar causando danos irreparáveis.

    O teste decisivo é: você poderia ter escrito o código em questão. Se não, então você não pode julgar. Pergunte ao autor.

    Como lidar com isso? Os programadores entendem os padrões de estilo de código. Basta escrever na diretriz de envio que você pode ajustar apenas X caracteres por linha. Os programadores podem fazer isso sozinhos. Os editores de código freqüentemente têm ferramentas para isso. Outro motivo para usar uma fonte mono espaçada.

Mas então você sabia tudo isso, afinal era um especialista. Melhor deixar o autor editar o código.

Números de linha?

Algumas linguagens de programação e casos de uso podem se beneficiar dos números de linha. Tenha cuidado aqui, porém, uma vez que este é um artigo falso em alguns idiomas.

Problemas.

Esteja ciente de que não importa o que você faça, você pode de fato enfrentar obstáculos técnicos impossíveis. O código não deve realmente ser digitado, deve ser apenas um texto não formatado. Isso leva a problemas surpreendentes.

Por exemplo: idiomas como Python não podem ser manipulados por muitos visualizadores de PDF, como o Adobe Acrobat. Se você colar o código do arquivo PDF, o editor decidirá não incluir o espaço anterior ao colar a cópia. Isso destrói a capacidade de colar o código do PDF no editor. Realmente não há uma boa maneira de lidar com isso!


@ usr2564301 ah sim tão verdadeiro
joojaa

1
@ usr2564301 Feito, de qualquer maneira, acho que uma escolha de fonte legível é algo que um tipógrafo deve entender. De qualquer forma, aquele que também distingue uma letra minúscula i sem ponto (sim, depuramos uma parte do código por um mês porque não sabíamos que um 'i' minúsculo é diferente de um 'I' maiúsculo em um código de idioma turco) e um 1 também
joojaa

"Não deixe o código fluir de uma linha para outra" é um bom conselho em teoria. Mas se você estiver digitando um formato de impressão 6x9 padrão e tiver uma linha de código com 600 caracteres, será difícil atendê-lo.
Janus Bahs Jacquet

1
O código @JanusBahsJacquet geralmente é escrito com menos de 80 caracteres por linha. Portanto, se você obtiver algo assim, talvez suas diretrizes de envio sejam ruins. Os programadores conhecem as diretrizes de envio, afinal de contas, o que são as bases de código. O problema é que, quebrando as linhas, você pode acabar alterando o significado do código.
Joojaa

1
@JanusBahsJacquet É por isso que você pergunta ao autor, atualiza as diretrizes para não precisar fazer isso com muita frequência. bem, em ambos os casos, se o código não puder ser dividido em linhas longas, o tipógrafo também não poderá fazer nada a respeito. A propósito, o que um tipógrafo faria com uma imagem muito ampla que não pode ser redimensionada ou cortada? De qualquer forma eu vou prever submissões de código será mais comum no futuro
joojaa

4

A resposta, é claro, pode depender de muitos fatores, mas se começarmos com um código de texto simples formatado, correto e correto, é possível generalizar mais ou menos as coisas aqui.

A 'formatação' inicial no texto de origem será: nova linha , espaço e caracteres de tabulação . Observe que a nova linha e a quebra manual de linha (como no software DTP) não são a mesma coisa, e vice-versa, alguns idiomas raros podem permitir outros caracteres de formatação, embora eu nunca tenha ouvido falar disso.

Os comentários não são parte executável do código; portanto, eles podem ser reformatados sem muito risco, se alguém souber se é realmente um comentário. Portanto, a primeira coisa a observar é como os comentários são marcados.

É bom saber alguns conceitos básicos sobre a formatação inicial de texto sem formatação. Por exemplo, para Python, existe o guia de estilo PEP8 . Embora tenha sido feito para Python, este guia de formatação pode ser usado como referência para as principais linguagens, como C / C ++ e Java. Examinar vários exemplos de projetos pode ajudar em caso de dúvida.

Assim, o primeiro princípio seria: não altere o texto fonte. Gostaria de passar por uma lista de verificação - verifique se:

  • Não há substituição automática de caractere em nenhum estágio.
  • Nenhuma edição no texto é feita (a menos que você tenha 100% de certeza de que deve ser feito).
  • Nenhuma quebra de linha aparece.
  • Os recuos são preservados visualmente e são consistentes (cerca de quatro x  larguras por nível de recuo).
  • O nível de recuo inicial (zero) deve estar visível.
  • Os estilos definidos não destroem a formatação da sintaxe (se o realce da sintaxe for usado).
  • Faça um backup da fonte em texto sem formatação, para poder verificar novamente a formatação original ou iniciar novamente.
  • Os números de linha, se presentes, devem estar intactos, especialmente se forem mencionados nas explicações.

Na verdade, se a fonte original estiver formatada corretamente, não haverá quebra de linha. Se as linhas quebradas ainda aparecerem e forem inevitáveis, um recuo suspenso de um nível é a solução mais comum (consulte o PEP vinculado acima). Se a quebra de linha for necessária - consulte melhor o guia de estilo ou o autor.

Ainda alguns caracteres menores de 'espaço em branco' podem exigir substituição. Como a fonte pode incluir caracteres de tabulação, é claro que o tipógrafo deve garantir que todas as guias no início de cada linha sejam consistentes, ou seja, os recuos aninhados são preservados visualmente e todos os próximos níveis de recuo têm a mesma largura (cerca de quatro x  larguras por um nível de recuo).

Idealmente, as indentações feitas com caracteres de espaço ou espaços e tabulações misturadas devem ser substituídas por tabulação (ou pelo que o software DTP pode fazer melhor para indentações aninhadas); portanto, se necessário, o ajuste das indentações pode ser mais fácil.
Obviamente, pode-se deixar espaços, mas pode ser mais difícil gerenciar sua largura ao alterar a fonte e mais difícil alinhar os recuos da linha interna, como nas colunas da tabela.

Fonte monoespaçada + espaços

Observe que, se a fonte for formatada com espaços intencionalmente e tiver a intenção de ser lida apenas em fonte monoespaçada, (por exemplo, diagramas ASCII ou arte ASCII), deve-se preservar os espaços totalmente inalterados , mas essa decisão deve ser tomada desde o início. A fonte "Courier New" é mais comum neste caso. Ainda assim, se não for realmente necessário, aconselho contra o monoespaçado, porque cada vez menos pessoas escolhem o monoespaço para a codificação hoje e, no caso de revisão, as fontes proporcionais proporcionam uma melhor experiência de leitura.

Em geral, as fontes condensadas (por exemplo, Arial narrow) ou menores podem funcionar melhor: dá mais ênfase ao contraste com o texto do corpo, tornam o código mais compacto e, portanto, menos provável que apareça linhas indesejadas.

Acho que aqui se pode traçar uma linha, e se o acima for feito, há 99% de probabilidade de que tudo esteja bem, pelo menos para um bloco de código simples de fonte única sem cores.


Ferramentas e formatação avançada

Além disso, a aparência pode ser significativamente aprimorada usando o realce da sintaxe.

  • impressão em cores ou visualização em tela: em um layout colorido, todos os recursos de destaque podem ser usados, por isso é o melhor cenário, mas a impressão pode causar algumas alterações de cores.

  • escala de cinza ou preto e branco: aqui é claro que se pode usar negrito (por exemplo, palavras-chave) ou itálico (por exemplo, comentários), mas observe que as cores serão convertidas em cinza com todas as consequências. Por exemplo, os comentários acinzentados podem parecer ótimos em uma tela, mas podem ficar muito claros no papel.

A questão mais importante é se o criador do layout possui ferramentas que podem representar o código de forma legível. Felizmente, existem muitas ferramentas gratuitas para edição de código, as mais importantes (para Windows) são: Notepad ++, VSCode, Visual Studio . Mas esteja ciente de possíveis conversões automáticas implícitas de guias em espaços.

No Notepad ++, há uma opção para exportar o código como RTF , o que preservará toda formatação e destaque de sintaxe da fonte.

Se o layout não exigir alteração do fluxo de texto na apresentação do código, é possível usar diretamente imagens (capturas de tela) - não é tão flexível quanto o texto, mas preservará a formatação e a numeração de linha 100%, além de economizar muito tempo. Por exemplo, números de linha podem ser difíceis de preservar em forma de texto. Também exportar para PDF é uma boa alternativa - mas nem todo software DTP pode incorporar PDFs e algumas formatações podem ser perdidas ao imprimir em PDF.

Por exemplo, minha configuração do código Python no Notepad ++ é assim:
insira a descrição da imagem aqui

Isso é apenas para ilustrar que é possível usar diretamente capturas de tela e que pode ser o método mais fácil. Existem várias ferramentas que podem ajudar na captura de tela - pode ser necessário 'unir' as telas para obter imagens de alta resolução.

É claro que o esquema de cores é individual, definido no configurador de estilos do editor, que já conhece o idioma suportado, dificultando a formatação falsa, mesmo que não se conheça a sintaxe. Aqui, as regras gerais de tipografia devem funcionar: poucas cores, fontes consistentes, recuos, espaçamento confortável entre linhas.

Ferramentas / plug-ins adicionais para definições de linguagem personalizadas também são comuns, mas requerem conhecimento de sintaxe.


Esta é uma resposta maravilhosa e cuidadosamente pensada. Mas as capturas de tela podem ficar abaixo do ideal se você planeja imprimi-las, por causa da resolução. Algo a ter em mente.
Jerry Carlson

1
@ JeremyCarlson no Np ++, o tamanho da fonte / espaçamento das linhas também pode ser ajustado - portanto, em teoria, não há limite para a resolução da captura de tela, mas será mais difícil criar, especialmente em uma tela pequena. Pode haver ainda algum truque para usar a tela virtual e definir tamanho muito grande janela
Mikhail V

porque cada vez menos pessoas escolhem o monoespaçado para codificação hoje - Pode ser, mas o monoespaço ainda é o usado pela grande maioria. Você não pode simplesmente converter convenções normais de digitação em código. Por exemplo, sinais de pontuação são mais importantes do que em textos normais (a maioria dos argumentos desta resposta é traduzida para isso). Um tipo de código não monoespaçado será diferente de um para o texto comum. Além disso, muitas vezes você deseja que certas estruturas semelhantes sejam alinhadas horizontalmente, por exemplo, a[i][j] = 1a[m][n] = 2.
Wrzlprmft

@Wrzlprmft obrigado pelas edições. E sim, não existem muitas fontes boas otimizadas para código e matemática (Verdana está ok). Na verdade, o Times tem um período pequeno e dois pontos e alguns outros problemas, mas eu o uso todo o tempo - 'os benefícios superam os custos'
Mikhail V

-5

No HTML, existe um conjunto de tags <code> ... </code> que informa ao leitor / intérprete para tratar o conteúdo absolutamente literalmente. Além disso, <pre> ... </pre> faz o mesmo. Como alguém que muitas vezes precisou digitar fórmulas, equações e códigos para publicação, também defendo o uso de IMAGES para fazer isso ... crie um .gif ou .jpg ou .png do item problemático.

Outro fator é que o código é tradicionalmente renderizado no Courier monospace, ou em outra fonte monospace, porque semáfora ou telégrafo para o leitor que não é um texto corporal. Eu assino essa escolha de estilo, acho que faz muito sentido.

Na maioria dos sistemas de composição "legados", as equações matemáticas de complexidade razoavelmente alta consomem muito tempo ... e estão repletas de erros.


é claro, as imagens não podem ser recortadas e coladas!
Dwoz 01/04/19

3
Eu não entendo como isso responde à questão que se coloca a todos
Zach Saucier
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.