È sbagliato copiare idee da altre lingue?

4

Nella creazione di un linguaggio di programmazione, è sbagliato copiare funzionalità e idee da altri linguaggi di programmazione? Se non è un problema, perché no? È possibile concedere in licenza e copyright queste cose?

    
posta Abbafei 29.04.2011 - 03:52
fonte

7 risposte

26

È "sbagliato"? In che senso potrebbe possibilmente essere sbagliato? Ogni linguaggio di programmazione mai progettato (tranne, suppongo, per il mitico esempio di Ur) ha preso in prestito concetti e disegni da altre lingue. È possibile (e piuttosto facile) tracciare tutte le lingue esistenti su un albero genealogico che mostri la loro derivazione. Posso darti esempi quasi infiniti di lingue moderne e le idee che hanno copiato da lingue più vecchie. Prendi la Simula - > Smalltalk - > Lignaggio rubino. Prendi la ML - > Caml - > Lignaggio OCAML. Potrei andare avanti ancora.

Per quanto riguarda la tua ultima domanda: non puoi copyright un'idea. Non puoi dare una licenza a un'idea. Le idee sono libere nel vero senso della parola (nonostante la patologica legge sui brevetti degli Stati Uniti).

Le migliori lingue disponibili oggi sono basate sulle migliori idee delle lingue precedenti. Non solo non è "sbagliato", è il modo migliore (solo?) Per progettare una lingua.

Come Newton ha detto, siamo sulle spalle dei giganti.

    
risposta data 29.04.2011 - 04:02
fonte
3

Data la somiglianza di C # con Java, che era influenzata dal C ++, che è un'estensione di C, che era derivata da B, che era derivata da BCPL, ecc. ecc., ecc., direi che la risposta è "no". È molto raro trovare una lingua non influenzata da o un'estensione diretta delle lingue esistenti.

Il design della lingua è evolutivo; prendi qualcosa che funziona e cerchi di migliorarlo.

    
risposta data 29.04.2011 - 04:12
fonte
2

Penso che il principale punto di decisione dovrebbe essere che la funzione funzioni bene con le altre funzionalità nella lingua ed è una funzionalità che si ritiene che la lingua dovrebbe supportare.

Un esempio potrebbe essere Java in cui è stata presa la decisione di progettazione per escludere l'operatore che ignora la lingua. Personalmente sono ambivalente riguardo a questa decisione, poiché mi piacerebbe avere questa funzione disponibile, ma ho anche visto esempi estremamente negativi di uso improprio.

Un esempio contrario potrebbe essere l'inclusione di "classi" in VB 4. Non erano completamente implementate o integrate e probabilmente non avrebbero dovuto essere incluse.

PL / X come linguaggio era estremamente simile a PL / 1 (divertente) ma includeva molte funzioni incorporate che erano state prese in prestito direttamente dall'assemblatore. Era anche l'unica lingua che mi veniva in mente con due versioni di sottostringa, una sottostringa (punto iniziale, punto finale) e una sottostringa (punto iniziale, numero di caratteri) . Mi rendo conto che puoi sempre derivarne uno dall'altro, ma è stato bello non doverlo fare.

    
risposta data 29.04.2011 - 04:35
fonte
1

Vuoi dire, puoi inserire un operatore di incremento nella tua lingua anche se è già in C e C ++ e Java? Sì, puoi - e ovviamente dovrebbe.

Gran parte della lingua deriva molto da linguaggi antecedenti (C proviene da BCPL, C ++ proviene da C, Java deriva da C ++ e così via.) Se vuoi inventare un linguaggio che è proprio come Java tranne per il fatto che l'istruzione switch non cade, vai avanti.

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

    
risposta data 29.04.2011 - 04:19
fonte
1

I rispondenti di cui sopra hanno detto abbastanza sulla copia. Anche se il mio suggerimento sarebbe, non copiare le funzionalità solo perché 'Java ce l'ha'. Pensa ai programmatori che scriveranno in quel programma. Useresti quella nuova lingua per il lavoro di produzione?

Ai commenti sui brevetti software: Negli Stati Uniti e nei paesi in cui i brevetti software sono legali, si può brevettare un'idea (ad esempio, a RIM non è stato permesso di utilizzare il WiFi per trasferire le e-mail).

Sono d'accordo che è un assurdo, il Wi-Fi è solo un tipo di connessione Internet e brevettare la consegna di e-mail wireless equivale a brevettare la consegna di e-mail stessa.

È molto probabile che la Corte Suprema degli Stati Uniti non permetta più il contenzioso sui casi di brevettazione del software, ma il tempo ci mostrerà.

    
risposta data 29.04.2011 - 11:29
fonte
0

Gli algoritmi e il codice di copyright in generale tendono ad essere un argomento molto doloroso nel mondo SE. L'idea è che se ti viene in mente un modo per risolvere il problema X, non ti dovrebbe essere impedito di risolvere quel problema solo perché qualcuno in precedenza ha usato un approccio simile.

Se hai autorizzato il copyright delle funzionalità linguistiche dove verrebbe tracciata la linea? (ad esempio, il primo linguaggio che ha avuto l'idea di matrici rivendicare la proprietà su qualsiasi futura reimplementazione?) Se potenzialmente, potrebbe potenzialmente essere un brutto pasticcio.

Penso che a livello di base la domanda non sia adatta all'argomento. Le lingue non sono in genere create con l'intenzione di commercializzare e concedere in licenza l'uso della lingua.

    
risposta data 29.04.2011 - 03:56
fonte
0

Dovresti copiare le idee. Tuttavia, dovresti copiare solo quelli che sembrano buoni e non renderanno la tua lingua incoerente.

La nota a margine: un altro linguaggio di programmazione? Hm ... Forse dovrei inventarne uno (o due);)

    
risposta data 29.04.2011 - 08:41
fonte

Leggi altre domande sui tag