it-swarm.asia

Kodu kendi 'kelimelerim' içinde güvenli bir şekilde nasıl yazarım ve intihal etmem?

Bir araştırma makalesi yazmak söz konusu olduğunda intihal ve yorumlamayı gayet iyi anlıyorum, ancak programlamadaki bu eşdeğer alanlar benim için yabancı görünüyor. Konuları çevrimiçi olarak aradım ve şaşırtıcı bir şekilde konu hakkında beklendiği kadar malzeme yok.

Kod yazarken ve daha önce hiç uygulamadığım bir şeyi uygulamak zorunda kaldığımda, bir örnek aramak için çevrimiçi olacağım. Önceden belgeleri okumaya çalışıyorum, ancak bazen takip etmeyi zor buluyorum. Bu başarısız olursa, konuyu çevrimiçi olarak arayacağım ve düzinelerce örnek sunacağım (ister birinin kişisel blogunda ister SO gibi bir Soru-Cevap sitesinde olsun). Şimdi genellikle 5-10 satır kodla karşılaşıyorum. ASLA bunu kendi koduma kopyalayıp yapıştıracağım, ancak yine de kelimesi kelimesine kopyalama konusunda endişeleniyorum. Belirli bir kod parçasını yeniden yazmakta zorlanıyorum, özellikle bunu yapmanın çok fazla yolu olduğunda. Değişkenleri yeniden adlandırdığınızdan, biçimlendirmeyi değiştirdiğimden vb. Emin olun - ama bu yeterli mi?

Her zaman bu konuyu anlamak istedim, ancak şimdi yeni bir dil ile çalıştığım ve kurumsal bir ortamda özellikle uygun olduğunu düşünüyorum. Herkes başka bir yerde iyi bir açıklama açıklamak veya bağlantı olabilir, ben çok takdir ediyorum!

tl; dr İntihalden kaçınmak için çevrimiçi olarak bulunan 5-10 kod parçacığını ne kadar değiştirmek ve yeniden yazmak zorunda olduğunuzu anlamıyorum. Ya değiştirebileceğiniz çok az şey varsa?

18
Anonymous

İntihal, telif hakkı ihlaliyle aynı şey değildir. İntihal, bir başkasının çalışmasını kendinizinkinden çıkarıyor. İntihal yapmadan telif hakkı ihlali yapmak mümkündür:

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

ve telif hakkı ihlali olmadan intihal yapmak mümkündür:

/* 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);
}

(bir kamu malı sunucusuz SQL veritabanı motorundan kaldırıldı

İntihalden kaçınmak için kaynağınızdan alıntı yapmayı düşünebilirsiniz. İşte (bunlardan çok olan) bir örnek PostgreSQL'den :

/* 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)
30
Joey Adams

Eğitmenleri/öğreticileri kullanmak intihal değildir. Başka birinin cevabını buraya kopyalasaydım, bu intihal olurdu. Eğer bir alıntı yaparak ona bağlanırsam intihal olmazdı.

Kaynağınızın (yeniden) kullanıma (lisans, yazılı izin) izin verdiğini kontrol edin. Bence (bir şey kontrol etmek gerekir) SO dolaylı olarak pub etki alanı (veya yaratıcı müşterekler, benzer paylaşım vb) olacak ya da gerçekten işe yaramaz. kullanamayacağını bildiğin cevap)

Kısacası, tanımlar akademisyenler alanında çılgınca farklı olmadıkça, belki de intiharı o kadar iyi anlayamayacağınızı hissediyorum.

Temel kuralım: Sadece aldığınız sonuçları hızlandıran tüm cevapları kullanın. Ancak, sihirli bir şekilde çalışır bir örnek bulursanız, ancak Etik çizgisini nasıl aştığınızı (veya nedenini) gerçekten bilmiyorsanız.

Küçük parçacıkları değiştirme konusunda tersi tartıştım; küçük parçacıkları kodunuza nasıl entegre edersiniz olmadan yeniden düzenleme: uygun olma şansı oldukça zayıf ve kodumun nasıl görünmesi gerektiği konusunda oldukça güçlü bir fikrim var. Belki de 'görüşten' (okuma: deneyim) yoksundur ve ben güven kazanmak için daha fazla kod yazmanızı öneririm. Tecrübe kazanmak için başka bir teknik de bir cevabı okumak ve sonra gidip uygulamaktır herhangi bir örnek koda erişmeden. Hatalar yapacaksınız, ama aynı zamanda

  • bir dahaki sefere çoğalt
  • kodu anladığınızdan emin olun
  • kendin hakkında iyi hisset

hTC cihazımdan gönderildi; lütfen bir veya iki yazım hatasını şımartın

4
sehe

Kodu yalnızca intihalden kaçınmak için değiştirir ve yeniden yazarsanız, intihal tespitinden yalnızca kaçınmaya çalışırsınız. Her şey kopyaladığınız koda bağlıdır. Bir olasılık, belirli bir kod snippet'ini yalnızca sınırlı yaratıcı özgünlüğe sahip yararlı bir rehber veya hiç kimsenin yazarlık talep edemeyeceği ortak bir uygulama olarak değerlendirmektir. Diğer olasılık, kredi vermenin yeterince önemli olduğunu belirtmek. Basit bir kod yorumundan, kodunuzu orijinal kodun resmi bir çatalı/dalı haline getirmeye kadar çeşitli seviyelerde kredi verebilirsiniz. Özetle, ne yapabileceğinizle ilgili değil, kodu nasıl orijinal olarak değerlendirdiğiniz ve gerekirse nasıl kredi verdiğiniz hakkında. İntihal, kredi vermeksizin kopyalama değil kopyalamadır.

4
Jakob

Bir sorunu nasıl çözeceğinizi bulmak için bulabileceğiniz kaynakları kullanmanızı öneririm. Ve bir kez anladıktan sonra, tüm bu kaynakları ekrandan kaldırır ve kendi çözümünüzü yazarsınız.

Fotoğrafik bir belleğiniz yoksa ve mevcut çözümlerden birini kopyalamazsanız, bu intihal ve/veya telif hakkı ihlali sorununu çözer. Ayrıca, sorunu gerçekten anlamaya zorlayarak size yardımcı olur.

Küçük bir adım daha ileri gidebilirsiniz: İnternette bulduğunuz çoğu çözümde bir hata veya başka bir hata var. İnternette olması mükemmel olduğu anlamına gelmez. Neyin doğru olmadığını anlayın ve düzeltin. Bu şekilde daha iyi bir anlayışa sahip olursunuz, daha iyi kodlara sahip olursunuz ve kesinlikle herhangi bir telif hakkı ihlali veya intihal suçlamasından kaçınırsınız.

1
gnasher729

Akademik bir ortamda kodlama yapmıyorsanız, neden intihal konusunda endişelenesiniz ki? Profesyonel bir ortamda, yalnızca şirketinizdeki diğer çalışanları intihal etmeniz durumunda önemlidir. İntihal kimin kredi alacağı ile ilgilidir. Her durumda, intihal çözümü basittir - aldığınız her şey, orijinal yazara kredi verin. Bir web sayfasından geliyorsa, URL'yi ekleyin. Bu size fayda sağlar, çünkü herhangi bir sorunuz varsa orijinal kaynağı tekrar bulabilirsiniz.

Sorunuz gerçekten telif hakkı ihlaliyle ilgiliyse, telif hakkının işlevsel yönleri kapsamadığını unutmayın. Yalnızca, çok sayıda eşit derecede yararlı seçeneğin olduğu yaratıcı seçimleri kapsar. Kodu işlevselliği bozmadan kolayca değiştiremezseniz, bu telif hakkı kapsamındaki bir şey değildir (birleşme veya scènes à faire kuralının altında).

0
David Schwartz