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


18

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 de 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 snippet'ini ne kadar değiştirmek ve yeniden yazmak zorunda olduğunuzu anlamıyorum. Ya değiştirebileceğiniz çok az şey varsa?


Eğer gerekiyorsa aktif olarak intihal önlemek düşünmek, bir şey sistemiyle yanlıştır. Tabii, asla sadece bir şey kopyalamamalısınız, ama bunu düşünmek zorunda kalmamalısınız.
Anto

1
@anto, bence OP'nin ne anlama geldiğini anlıyorum. OP bir yerden bazı kodlar aldı, kullanmak ya da yaptığı bazı çalışmalarla bütünleştirmek istiyor. OP'nin başka bir yerde elde edilen bir şeyi güvenilir bir şekilde ele geçirmesi için önerim (1) onu öğrenmek / anlamak, (2) hem işlevsel (yeniden düzenleme) hem de kozmetik olarak (daha iyi, daha tutarlı sembol adları) ve (3) kodu geliştirmektir . kendi projesi içinde yürütmek. Ben bu hızlı (O (log2 (N)) sürgülü max algoritması ile
yaptım.Kodum

Sorunun daha geniş olduğunu anlasam da, bu bağlantı alakalı olabilir: Bir forumda bulduğum kodu yasal olarak kullanabilir miyim?
John Wu

Yanıtlar:


30

İntihal, telif hakkı ihlali ile aynı değildir. İntihal, başkasının işini kendiniz gibi geçiriyor. İ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);
}

(ortak etki alanı sunucusuz bir SQL veritabanı motorundan kaldırıldı)

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

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

4

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. Ben SO (bir şey kontrol etmek gerekir) SO dolaylı olarak pub etki alanı (ya da yaratıcı müşterekler, benzer paylaşım vb) olacağını düşünüyorum ya da gerçekten çalışmak mümkün olmaz. (Kullanamayacağınızı bildiğiniz bir yanıt almak ne işe yarar?)

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ışan 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ı yeniden organize etmeden kodunuza nasıl entegre edersiniz : 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 bu 'görüşten' (okuma: deneyim) yoksundur ve ben güven kazanmak için daha fazla kod yazmanızı öneririm. Deneyim kazanmak için başka bir teknik, bir cevabı okumak ve daha sonra herhangi bir örnek koda erişmeden uygulamak ve uygulamaktır . 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


SO yayınları CC-BY-SA 3.0 olarak lisanslanır (sayfanın en altına doğru kaydırın), böylece birisi sorununuz için eksiksiz bir çözüm yazarsa, yalnızca yazardan ve kodu aynı lisans altında yayınlanır (veya hiç yayınlanmaz). Ama dediğin gibi, bu tür kopyala ve yapıştır kodlaması ilk etapta kötü bir uygulamadır.
5gon12eder

4

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 olmasına değer vermek. Basit bir kod yorumundan, kodunuzu orijinal kodun resmi bir çatalına / şubesine dönüştürmeye kadar çeşitli düzeylerde 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.


1

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 telif hakkı ihlali veya intihal suçlamasından kaçınırsınız.


0

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).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.