O código aberto leva a codificação incorreta? [fechadas]

4

Eu tenho um pensamento que tentei perguntar no SO, mas não parecia o lugar apropriado. Eu acho que sites de código-fonte como o Google Code, GitHub, SourceForge ... tiveram um papel importante na história da programação. No entanto, descobri que há outra coisa ruim para esses tipos de sites e é que você pode simplesmente "copiar" o código de quase todos, sem saber se é uma boa fonte (testada) ou não.

Essa linha de pensamento me levou a acreditar que os sites de código-fonte tendem a levar muitos desenvolvedores (provavelmente inexperientes) a copiar / colar grandes quantidades de código, o que acho errado.

Eu realmente não sei como focar bem a questão, mas o pensamento básico seria:

Está tudo bem? O Open Source está contribuindo para isso ou estou apenas vendo fantasmas ...

Espero que as pessoas se interessem porque acho que esse é um tema importante.

    
por David Conde 29.11.2010 / 06:50
fonte

10 respostas

45

Correlação não implica causação. Os desenvolvedores copiam / copiam o código que não entendem porque são desenvolvedores ruins. A disponibilidade de tal código não torna bons desenvolvedores.

Se não houvesse projetos de código aberto, ainda haveria postagens no fórum com trechos de código ou livros de programação com exemplos. Então, estamos de volta ao meu primeiro parágrafo: desenvolvedores ruins encontrarão uma maneira de serem ruins em escrever código. A culpa por copiar e colar código é dos desenvolvedores que fazem isso, não dos repositórios de código-fonte.

    
por 29.11.2010 / 06:56
fonte
7

Não acho que muitos desenvolvedores copiem e colem de grandes projetos de código aberto. É muito trabalho para encontrar o ponto certo em milhares de linhas de código, e pode ser diferente (pelo menos para um desenvolvedor ruim) descobrir qual parte copiar. Eles copiam e colam pequenos snipplets encontrados em fóruns, artigos, exemplos etc., onde tudo é bem organizado.

    
por 29.11.2010 / 08:20
fonte
5

Para cada 100 programadores que apenas copia / cola o código sem saber o que está fazendo, há quase um que não o faz.

Antes do Google Code et similia , havia fragmentos em toda a web que as pessoas copiaram / colaram, então não vejo o problema como sendo relacionado a esse tipo de site.

    
por 29.11.2010 / 06:56
fonte
1

Não é um dos grandes princípios da codificação "não reinventar a roda"?

Se você copiar um código incorreto e não aprender com ele, então é ruim. Se você copiar um ótimo código e aprender com ele, então você é um bom programador que está indo muito bem.

    
por 29.11.2010 / 07:04
fonte
1

Minha opinião é que existem bons projetos de código aberto e projetos ruins de código aberto. A disponibilidade de bons projetos de código aberto que podem ser encontrados em sites como o Git Hub permitem o tipo de programador iniciante que um dia acabará como um bom programador para ter uma fonte quase infinita de bom código para analisar e estudar e (se desejado ) cópia de. A coisa é que o tipo de pessoa que acaba sendo um bom programador é quase incapaz de simplesmente copiar e colar código. Eles querem olhar para isso e desmontá-lo, modificar e entender o que o torna bom e o que poderia torná-lo melhor e o que o tornaria pior. Quando terminam, é o código deles e eles entendem como funciona.

Isso torna mais conveniente para os programadores ruins serem maus programadores, mas e daí? É uma espécie de falha em javascript onde

i = 1

cria uma variável global i e

var i = 1

cria uma variável local adequada. Isso torna possível identificar código porcaria em um segundo por todas as variáveis globais inadvertidas, que estão em todo lugar 1 . O fato de ser mais fácil copiar e colar projetos juntos significa que é mais fácil identificar o código porcaria, porque ele estará repleto do tipo de membros vestigiais que foram adaptados às condições de onde veio e não às condições em que está vivendo atualmente. / p>

1 A falta de variáveis globais não implica, é claro, que o código é bom, mas é um sinal promissor

    
por 29.11.2010 / 07:37
fonte
1

Todo mundo tem algum tipo de motivação para liberar o código de maneira que permita que outras pessoas o usem, modifiquem e redistribuam.

Algumas das razões:

  • Você acha que o código é útil e seria útil para outras pessoas
  • Você acha que a ideia é útil e espera que as pessoas mais experientes refinem a implementação
  • Você é obrigado por uma licença a liberar o código para executáveis binários modificados que você distribuiu
  • Você espera que a disponibilidade do código ajude a impulsionar seus negócios

Outras razões, é claro, entram em jogo, ou talvez uma combinação de razões. Sua pergunta parece depender de uma suposição de que o código liberado para o estado selvagem deveria ser de qualidade mínima, o que eu acho excessivamente idealista.

Além disso, acho que mais resultados de codificação 'copiar e colar' são a leitura de um 'tutorial' que alguém postou em um blog com snippets, não de alguém que usou o github para encontrar algo que pudesse resolver um problema. No entanto, usar exemplos de um guia de 'início rápido' de cinco anos que você comprou em uma livraria usada pode ser igualmente perigoso.

Bons programadores evitam os erros que os programadores inexperientes tendem a cometer, o que sempre será o caso. Você costuma aprender como evitar essas armadilhas ao cair nelas.

    
por 29.11.2010 / 09:14
fonte
1

No começo, não há definição exata de código bom. Você pode pegar duas partes do código bom e combiná-las e obter um código ruim. Só porque os estilos de código são diferentes.

Programador incorreto copia e cola código incorreto, escreve código incorreto.

Bom programador copie e cole o código bom, escreva um código bom. Bom programador não irá colar código ruim.

Mas o código aberto nos dá uma grande chance de não escrever o mesmo código várias vezes, mas

    
por 29.11.2010 / 12:38
fonte
1

Esta pergunta é impossível de responder.

No entanto, se você estiver perguntando a respeito de si mesmo, por exemplo "A presença de código livremente disponível que resolve problemas com os quais estou lidando me torna um desenvolvedor mais desleixado ou pior", então há uma solução muito simples e colaborativa para sua ansiedade.

Encontre um projeto que você use, suporte ou encontre interessante, e veja se você pode se envolver com ele. Escreva algum código, escreva alguns casos de teste ou forneça alguma documentação. Seja o que for que você faça, você estará trabalhando e avaliando o código que está usando e ajudando em um projeto que você apóia.

    
por 29.11.2010 / 13:24
fonte
0

O código aberto tende a uma boa codificação, já que você não pode esconder seu código ruim por trás de um aplicativo em funcionamento, você precisa codificar bem, senão você está fora do jogo. Entender e copiar / colar um bom código não agrava o desenvolvedor (não confunda com copiar / colar em vez de fazer um design adequado). E, como mencionado em outra resposta, um mau programador encontrará outras maneiras de produzir códigos ruins se não houver códigos-fonte disponíveis.

    
por 29.11.2010 / 11:49
fonte
0

Theodore Sturgeon disse que "90% de tudo é ruim" e que se aplica ao software de código aberto, tanto quanto qualquer outra coisa. Existem muitos, muitos projetos no Sourceforge que são um despejo de código inacabado de uma ou duas pessoas, e nada aconteceu desde o primeiro upload.

Isso não significa que o software de código aberto seja intrinsecamente ruim ou de qualidade inferior. Bons projetos têm qualidade maior porque

  • se você não está sendo pago em dinheiro, a recompensa que você está ganhando é o respeito de seus colaboradores
  • todos podem ver seu trabalho
  • As versões
  • são liberadas quando estão prontas, não porque algum imperativo comercial as force a serem liberadas pela metade

Se você está avaliando software de código aberto que você pode querer adotar, você quer descobrir se houver uma comunidade grande o suficiente para usá-la, se os desenvolvedores atuais não puderem ou não apoiarem, haverá interesse e demanda suficientes em formas alternativas de mantê-la e desenvolvê-la. Você faria a mesma pergunta sobre software comercial.

Gostaria de destacar o trabalho da Apache Software Foundation para identificar projetos promissores de código aberto, dar-lhes recursos e ajudar a apoiá-los por meio de um estágio de "incubadora", para que possam desenvolver um dinamismo suficiente para serem viáveis a longo prazo. Embora, é claro, existam muitos outros excelentes projetos de código aberto, se um projeto alcançou o status de nível superior do ASF, você pode ter alguma confiança sobre sua qualidade e viabilidade.

    
por 01.03.2011 / 07:07
fonte