É errado copiar ideias de outros idiomas?

4

Na criação de uma linguagem de programação, é errado copiar recursos e idéias de outras linguagens de programação? Se não é um problema, porque não? É possível licenciar e autorizar essas coisas?

    
por Abbafei 29.04.2011 / 03:52
fonte

7 respostas

26

Está "errado"? Em que sentido poderia possivelmente estar errado? Todas as linguagens de programação já criadas (exceto, suponho, pelo mítico exemplo Ur), emprestaram conceitos e designs de outras linguagens. É possível (e bastante fácil) plotar todas as linguagens existentes em uma árvore genealógica que mostre sua derivação. Eu posso lhe dar exemplos quase infinitos de linguagens modernas e as idéias que eles copiaram de idiomas mais antigos. Pegue a Simula - > Smalltalk - > Linhagem rubi. Pegue o ML - > Caml - > Linhagem OCaml. Eu poderia continuar e continuar.

Quanto à sua última pergunta: você não pode criar uma ideia com direitos autorais. Você não pode licenciar uma ideia. As idéias são gratuitas no sentido mais verdadeiro (apesar da patológica lei de patentes dos EUA).

Os melhores idiomas disponíveis atualmente são construídos com base nas melhores idéias dos idiomas anteriores. Não só não é "errado", é a melhor (só?) Maneira de projetar uma linguagem.

Como Newton disse, ficamos nos ombros de gigantes.

    
por 29.04.2011 / 04:02
fonte
3

Dada a semelhança do C # com o Java, que foi influenciado pelo C ++, que é uma extensão do C, que foi derivada do B, que foi derivado do BCPL, etc., etc., etc., eu diria que a resposta é "não". É muito raro encontrar uma linguagem que não seja influenciada por ou uma extensão direta de idiomas existentes.

O design da linguagem é evolucionário; você pega algo que funciona e tenta melhorar.

    
por 29.04.2011 / 04:12
fonte
2

Acho que o principal ponto de decisão deve ser o recurso funcionar bem com os outros recursos do idioma e é um recurso que você acha que o idioma deve suportar.

Um exemplo seria Java em que a decisão de design foi feita para excluir a substituição do operador do idioma. Pessoalmente, sou ambivalente quanto a essa decisão, já que adoraria ter esse recurso disponível, mas também vi exemplos extremamente ruins de uso indevido.

Um contra-exemplo seria talvez a inclusão de "classes" no VB 4. Elas não foram totalmente implementadas ou integradas e provavelmente não deveriam ter sido incluídas.

O PL / X como uma linguagem era extremamente parecido com o PL / 1 (engraçado isso), mas incluía muitas funções embutidas que eram emprestadas diretamente do assembler. Também foi a única linguagem que eu acho que tinha duas versões de substring, uma substring (ponto inicial, ponto final) e uma substring (ponto inicial, número de caracteres) . Eu percebo que você pode sempre derivar um do outro, mas foi bom não ter que fazê-lo.

    
por 29.04.2011 / 04:35
fonte
1

Você quer dizer, você pode colocar um operador de incremento em seu idioma mesmo que já esteja em C e C ++ e Java? Sim, você pode - e obviamente deveria.

A maioria das linguagens é derivada de linguagens antecedentes (C vem de BCPL, C ++ vem de C, Java vem de C ++ e assim por diante). Se você quer inventar uma linguagem que é exatamente como Java, exceto que a instrução switch não entra em ação, vá em frente.

If I have seen a little further it is by standing on the shoulders of Giants. -- Isaac Newton

    
por 29.04.2011 / 04:19
fonte
1

Acima, os respondentes disseram o suficiente sobre a cópia. Embora minha sugestão seja, não copie recursos apenas porque "Java o possui". Pense em programadores que escreverão nesse programa. Você usaria essa nova linguagem para o trabalho de produção?

Para comentários sobre patentes de software: Nos EUA e em países onde as patentes de software são legais, você PODE patentear uma ideia (por exemplo, a RIM não pode usar o WiFi para transferir e-mails).

Concordo que é um absurdo, o Wi-Fi é apenas um tipo de conexão com a Internet, e patentear o envio de e-mails sem fio é o mesmo que patentear a entrega de e-mail em si.

É muito provável que a Suprema Corte dos EUA não permita mais o litígio de casos de patenteamento de software, mas o tempo nos mostrará.

    
por 29.04.2011 / 11:29
fonte
0

Os algoritmos de copyrighting e o código em geral tendem a ser um assunto muito doloroso no mundo do SE. A ideia é que, se você encontrar uma maneira de resolver o problema X, você não deve ser impedido de resolver o problema apenas porque alguém já usou uma abordagem semelhante.

Se você permitisse o copyright dos recursos de idioma, onde a linha seria desenhada? (por exemplo, a primeira linguagem que surgiu com a idéia de matrizes reivindicou a propriedade sobre qualquer reimplementação futura?) Ela tem o potencial de ser uma bagunça muito feia se for permitida.

Eu acho que no nível básico a questão realmente não se encaixa no assunto. Os idiomas normalmente não são criados com a intenção de comercializar e licenciar o uso do idioma.

    
por 29.04.2011 / 03:56
fonte
0

Você deve copiar as ideias. No entanto, você deve copiar apenas os que parecerem bons e não tornarão sua linguagem inconsistente.

A nota lateral: outra linguagem de programação? Hm ... Talvez eu deva inventar um (ou dois);)

    
por 29.04.2011 / 08:41
fonte