Como escrevo código com segurança em minhas próprias 'palavras' e não plágio?

18

Entendo plágio e parafraseando bastante bem quando se trata de escrever um trabalho de pesquisa, mas essas áreas equivalentes em programação parecem estranhas para mim. Eu procurei os tópicos on-line e, surpreendentemente, não há tanto material sobre o assunto quanto seria de se esperar.

Ao escrever código e ter que implementar algo que eu nunca havia implementado antes, ficarei on-line para procurar um exemplo. Tento ler a documentação com antecedência, mas às vezes acho difícil seguir. Portanto, se isso falhar, procurarei o tópico on-line e apresentarei dezenas de exemplos (estejam no blog pessoal de alguém ou em um site de perguntas e respostas como SO). Agora, geralmente, são apresentados de 5 a 10 linhas de código. Eu nunca copiei e colei isso no meu próprio código, mas ainda me preocupo em copiá-lo literalmente. Acho difícil reformular um determinado trecho de código, especialmente quando existem tantas maneiras de fazê-lo. Certifique-se de renomear variáveis, alterar a formatação etc. - mas isso é suficiente?

Eu sempre quis entender esse tópico, mas agora que estou trabalhando com um novo idioma e em um ambiente corporativo, acho que é especialmente pertinente. Se alguém pudesse explicar ou criar um link para uma boa explicação em outro lugar, eu agradeceria muito!

tl; dr Eu não entendo o quanto você precisa alterar e reformular de 5 a 10 trechos de código encontrados on-line para evitar plágio. E se houver muito pouco que você possa mudar?

Ixrec
fonte
Se você precisa pensar ativamente em evitar o plágio, algo está errado com o sistema. Claro, você nunca deve copiar apenas algo, mas não deve pensar nisso.
Anto 29/05
1
@anto, acho que entendo o que significa o OP. O OP pegou algum código de algum lugar, quer usá-lo ou integrá-lo a algum trabalho que está fazendo. minha sugestão, para que o OP se aproprie com credibilidade de algo obtido em outro lugar é (1) aprender / entender, (2) melhorar o código tanto funcionalmente (refatoração) quanto esteticamente (nomes de símbolos melhores e mais consistentes) e (3) executá-lo dentro de seu próprio projeto. Eu fiz isso com este rápido (O (log2 (N)) deslizante algoritmo max meu código é minha, mas eu aprendi a alg de outro lugar..
Robert Bristow-johnson
Embora eu entenda a questão como mais ampla, este link pode ser relevante: Posso usar legalmente o código encontrado em um fórum?
John Wu

Respostas:

30

Plágio não é o mesmo que violação de direitos autorais. Plágio é passar o trabalho de outra pessoa como seu. É possível cometer violação de direitos autorais sem plágio:

// The following code is lifted, without permission, from Windows 2000.
// Copyright © 2000 Company-metonymous-with-Redmond.
// ...

e é possível cometer plágio sem violação de direitos autorais:

/* I wrote this function. */
int sqlite3Strlen30(const char *z){
  const char *z2 = z;
  if( z==0 ) return 0;
  while( *z2 ){ z2++; }
  return 0x3fffffff & (int)(z2 - z);
}

(extraído de um mecanismo de banco de dados SQL sem servidor de domínio público)

Para evitar plágio, considere citar sua fonte. Aqui está um exemplo (dos quais existem muitos) do PostgreSQL :

/* datebsearch()
 * Binary search -- from Knuth (6.2.1) Algorithm B.  Special case like this
 * is WAY faster than the generic bsearch().
 */
static const datetkn *
datebsearch(const char *key, const datetkn *base, int nel)
Joey Adams
fonte
4

Usar tutores / tutoriais não é plágio. Se eu copiasse a resposta de outra pessoa aqui, isso seria plágio. Se eu o vinculasse, mostrando uma citação, isso não seria plágio.

Verifique se sua fonte permite o (re) uso (licença, permissão por escrito). Eu acho que (preciso verificar) qualquer coisa no SO implicitamente será domínio de pub (ou bens comuns criativos, compartilhamento etc.) ou não seria realmente capaz de funcionar. (Para que serve obter uma resposta que você sabe que não pode usar)

Em resumo, acho que talvez você não entenda muito bem o plágio, a menos que as definições diferam muito no campo acadêmico?

Minha regra de ouro: use todas as respostas que simplesmente aceleram os resultados que você estava obtendo de qualquer maneira. No entanto, se você encontrar uma amostra que funciona magicamente, mas realmente não sabe como (ou por que) está cruzando a linha de ética.

Sobre o assunto de modificar pequenos trechos, eu argumentaria o inverso; como você integra pequenos trechos ao seu código sem se reorganizar: as chances de ele se encaixar são muito pequenas e eu tenho uma opinião bastante forte sobre como deve ser o meu código. Talvez você não tenha essa "opinião" (leia-se: experiência) e sugiro escrever mais código para ganhar confiança. Outra técnica para obter experiência é ler uma resposta e depois aplicá-la sem acessar nenhum código de amostra . Você cometerá erros, mas também aprenderá o suficiente para

  • reproduzi-lo da próxima vez
  • tenha confiança se entende o código
  • sinta-se bem consigo mesmo

enviado do meu HTC; favor, digite um erro de digitação ou dois

ver
fonte
As postagens do SO são licenciadas como CC-BY-SA 3.0 (role a página até o final da página). Portanto, se alguém escrever uma solução completa para o seu problema, você poderá copiá-la apenas se você mencionar o autor e seu o código é publicado sob a mesma licença (ou não é publicado). Mas, como você diz, esse tipo de codificação de copiar e colar é uma prática ruim em primeiro lugar.
5gon12eder
4

Se você alterar e reformular o código apenas para evitar plágio, apenas (tente) evitar a detecção de plágio. Tudo depende de qual parte do código você copia. Uma possibilidade é avaliar um determinado trecho de código como apenas um guia útil com originalidade criativa limitada ou como prática comum que ninguém pode reivindicar autoria. A outra possibilidade é valorizá-la suficientemente importante para dar crédito. Você pode dar crédito em vários níveis, desde um simples comentário de código até tornar seu código um fork / ramificação oficial do código original. Em resumo, é menos o que você pode fazer, mas o quão original você considera o código e como você dá crédito, se necessário. Plágio não é copiar, mas copiar sem dar crédito.

Jakob
fonte
1

Eu sugiro que você use as fontes que encontrar para descobrir como resolver um problema. E depois de descobrir isso, você remove todas essas fontes da tela e escreve sua própria solução.

A menos que você tenha uma memória fotográfica e copie uma das soluções existentes, isso resolve o problema de plágio e / ou violação de direitos autorais. Também ajuda você, forçando-o a realmente entender o problema.

Você pode dar um pequeno passo adiante: a maioria das soluções encontradas na Internet tem uma falha ou outra. Só porque está na internet não significa que seja perfeito. Descubra o que não está correto e corrija-o. Dessa forma, você obtém uma melhor compreensão, um código melhor e evita definitivamente qualquer acusação de violação de direitos autorais ou plágio.

gnasher729
fonte
0

Se você não está codificando em um ambiente acadêmico, por que se preocupar com plágio? Em um ambiente profissional, só importa se você plagiar outros funcionários da sua empresa. Plágio é sobre quem recebe crédito. De qualquer forma, a solução para o plágio é simples - qualquer coisa que você aceite, dê crédito ao autor original. Se fosse de uma página da web, inclua o URL. Isso beneficia você, porque se você tiver alguma dúvida, poderá encontrar a fonte original novamente.

Se sua pergunta for realmente sobre violação de direitos autorais, lembre-se de que os direitos autorais não cobrem aspectos funcionais. Ele abrange apenas opções criativas onde há um número muito grande de opções igualmente úteis. Se você não pode alterar facilmente o código sem interromper a funcionalidade, isso não é algo coberto por direitos autorais (de acordo com a regra de fusão ou exclusão à vista).

David Schwartz
fonte