ฉันจะเขียนรหัสอย่างปลอดภัยใน 'คำพูด' ของตัวเองและไม่ขโมยความคิดได้อย่างไร


18

ฉันเข้าใจว่าการลอกเลียนแบบและการถอดความค่อนข้างดีเมื่อพูดถึงการเขียนรายงานการวิจัย ฉันค้นหาหัวข้อออนไลน์และน่าประหลาดใจที่มีเนื้อหาไม่มากเท่ากับที่คาดไว้

เมื่อเขียนโค้ดและต้องใช้บางสิ่งที่ฉันไม่เคยทำมาก่อนฉันจะออนไลน์เพื่อค้นหาตัวอย่าง ฉันพยายามอ่านเอกสารก่อน แต่บางครั้งฉันก็รู้สึกท้าทายที่จะติดตาม ดังนั้นหากล้มเหลวฉันจะค้นหาหัวข้อออนไลน์และนำเสนอด้วยตัวอย่างมากมาย (ไม่ว่าจะเป็นในบล็อกส่วนตัวของใครบางคนหรือไซต์ถามตอบเช่น SO) ตอนนี้ฉันมักจะนำเสนอด้วยรหัส 5-10 บรรทัด ฉันมีและจะไม่คัดลอกและวางลงในรหัสของฉัน แต่ฉันยังคงกังวลเกี่ยวกับการคัดลอกคำต่อคำ ฉันพบว่ามันยากที่จะใส่รหัสใหม่ให้กับรหัสโดยเฉพาะอย่างยิ่งเมื่อมีหลายวิธี ฉันแน่ใจว่าได้เปลี่ยนชื่อตัวแปรเปลี่ยนการจัดรูปแบบ ฯลฯ - แต่นี่เพียงพอหรือไม่

ฉันต้องการที่จะเข้าใจหัวข้อนี้เสมอ แต่ตอนนี้ฉันทำงานกับภาษาใหม่และในสภาพแวดล้อมขององค์กรฉันคิดว่ามันเป็นเรื่องที่เกี่ยวข้องโดยเฉพาะ หากใครสามารถอธิบายหรือเชื่อมโยงไปยังคำอธิบายที่ดีที่อื่นฉันจะขอบคุณอย่างมากที่!

tl; dr ฉันไม่เข้าใจว่าคุณต้องเปลี่ยนมากแค่ไหนและใส่รหัสใหม่อีก 5-10 ตัวอย่างของรหัสที่พบทางออนไลน์เพื่อหลีกเลี่ยงการลอกเลียนแบบ เกิดอะไรขึ้นถ้ามีน้อยมากที่คุณสามารถเปลี่ยนได้


หากคุณต้องคิดอย่างจริงจังเกี่ยวกับการหลีกเลี่ยงการขโมยความคิดสิ่งผิดปกติกับระบบ แน่นอนคุณไม่ควรคัดลอกบางสิ่ง แต่ไม่ควรคิดเกี่ยวกับมัน
Anto

1
@anto ฉันคิดว่าฉันเข้าใจความหมายของ OP OP หยิบรหัสจากที่ใดที่หนึ่งต้องการใช้หรือรวมเข้ากับงานที่เขา / เธอกำลังทำอยู่ ข้อเสนอแนะของฉันสำหรับ OP เพื่อเป็นเจ้าของสิ่งที่ได้รับอย่างน่าเชื่อถือคือ (1) เรียนรู้ / เข้าใจ (2) ปรับปรุงรหัสทั้งการใช้งาน (refactoring) และ cosmetically (ดีกว่าชื่อสัญลักษณ์ที่สอดคล้องกันมากขึ้น) และ (3) เรียกใช้ภายในโครงการของเขา / เธอ ฉันได้ทำสิ่งนี้ด้วยอัลกอริธึมเลื่อนสูงสุดแบบเร็ว (O (log2 (N)) รหัสของฉันเป็นของฉัน แต่ฉันได้เรียนรู้แอลจีจากที่อื่น
robert bristow-johnson

ในขณะที่ฉันเข้าใจคำถามที่กว้างขึ้นลิงค์นี้อาจเกี่ยวข้อง: ฉันสามารถใช้รหัสที่ฉันพบในฟอรัมได้หรือไม่
John Wu

คำตอบ:


30

การคัดลอกผลงานไม่เหมือนกับการละเมิดลิขสิทธิ์ การคัดลอกผลงานกำลังส่งผลงานของคนอื่นในแบบของคุณเอง เป็นไปได้ที่จะกระทำการละเมิดลิขสิทธิ์โดยไม่ต้องคัดลอกผลงาน:

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

และเป็นไปได้ที่จะกระทำการลอกเลียนแบบโดยไม่ละเมิดลิขสิทธิ์:

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

(ถูกยกขึ้นจากเอ็นจิ้นฐานข้อมูล SQL แบบไม่มีเซิร์ฟเวอร์สาธารณะ)

เพื่อหลีกเลี่ยงการลอกเลียนแบบคุณสามารถลองอ้างอิงแหล่งที่มาของคุณ นี่คือตัวอย่าง (ซึ่งมีจำนวนมาก) จาก PostgreSQL :

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

การใช้ผู้สอน / บทช่วยสอนไม่ใช่การลอกเลียนแบบ ถ้าฉันจะคัดลอกคำตอบของคนอื่นที่นี่นั่นจะเป็นการลอกเลียนแบบ ถ้าฉันเชื่อมโยงมันแสดงคำพูดนั่นไม่ใช่การลอกเลียนแบบ

ตรวจสอบว่าแหล่งที่มาของคุณอนุญาตให้ใช้ (อีกครั้ง) (ใบอนุญาต, สิทธิ์เป็นลายลักษณ์อักษร) ฉันคิดว่า (จำเป็นต้องตรวจสอบ) สิ่งใดก็ตามบน SO จะเป็นโดเมนสาธารณะ (หรือสาธารณะทั่วไป, ใช้ร่วมกัน ฯลฯ ) ไม่อย่างนั้นมันจะไม่สามารถทำงานได้ (สิ่งที่ใช้คือการได้รับคำตอบที่คุณรู้ว่าคุณไม่สามารถใช้)

ในระยะสั้นฉันรู้สึกว่าบางทีคุณอาจไม่เข้าใจการลอกเลียนแบบทั้งหมดที่ดียกเว้นว่าคำจำกัดความแตกต่างกันอย่างดุเดือดในสาขาวิชาการ?

กฎง่ายๆของฉัน: ใช้คำตอบทั้งหมดที่เพียงเร่งผลลัพธ์ที่คุณได้รับ อย่างไรก็ตามหากคุณพบตัวอย่างที่ใช้งานได้อย่างน่าอัศจรรย์แต่คุณไม่รู้จริงๆว่า (หรือทำไม) คุณจึงข้ามเส้นจริยธรรม

ในเรื่องของการดัดแปลงตัวอย่างเล็ก ๆ ฉันจะโต้แย้งสิ่งที่ตรงกันข้าม; คุณจะรวมข้อมูลโค้ดขนาดเล็กลงในรหัสของคุณอย่างไรโดยไม่ต้องจัดระเบียบใหม่: โอกาสที่มันจะพอดีมีขนาดที่ค่อนข้างเล็กและฉันมีความเห็นที่แข็งแกร่งเกี่ยวกับสิ่งที่รหัสของฉันควรมีลักษณะอย่างไร บางทีคุณอาจขาด 'ความคิดเห็น' (อ่าน: ประสบการณ์) และฉันขอแนะนำให้เขียนรหัสเพิ่มเติมเพื่อเพิ่มความมั่นใจ เทคนิคที่จะได้รับประสบการณ์ก็คือการอ่านคำตอบแล้วไปและนำไปใช้โดยไม่ต้องเข้าถึงโค้ดตัวอย่างใดคุณจะทำผิดพลาด แต่คุณจะได้เรียนรู้มากพอ

  • ทำซ้ำในครั้งต่อไป
  • รับความมั่นใจว่าคุณเข้าใจรหัสหรือไม่
  • รู้สึกดีกับตัวเอง

ส่งจาก HTC ของฉัน โปรดปล่อยให้พิมพ์ผิดหรือสอง


ดังนั้นโพสต์ได้รับอนุญาตเป็น CC-BY-SA 3.0 (เลื่อนลงไปที่ด้านล่างสุดของหน้า) ดังนั้นหากใครเขียนวิธีแก้ปัญหาของคุณอย่างสมบูรณ์คุณจะได้รับอนุญาตให้คัดลอกคำต่อคำหากคุณพูดถึงผู้เขียนและ รหัสมีการเผยแพร่ภายใต้ใบอนุญาตเดียวกัน (หรือไม่เผยแพร่เลย) แต่อย่างที่คุณบอกว่าการคัดลอกและวางโค้ดนั้นเป็นวิธีที่ไม่ดีในตอนแรก
5gon12eder

4

หากคุณเปลี่ยนและใส่รหัส reword เท่านั้นเพื่อหลีกเลี่ยงการลอกเลียนแบบคุณเท่านั้น (พยายาม) หลีกเลี่ยงการตรวจจับการลอกเลียนแบบ ทุกอย่างขึ้นอยู่กับรหัสส่วนที่คุณคัดลอก ความเป็นไปได้อย่างหนึ่งคือการให้คุณค่าข้อมูลโค้ดที่ให้ไว้เป็นเพียงแนวทางที่เป็นประโยชน์พร้อมความคิดริเริ่มสร้างสรรค์ที่ จำกัด หรือเป็นวิธีปฏิบัติทั่วไปที่ไม่มีใครสามารถเรียกร้องการประพันธ์ ความเป็นไปได้อื่นคือการให้ความสำคัญกับการให้เครดิต คุณสามารถให้เครดิตในหลาย ๆ ระดับตั้งแต่ความคิดเห็นเกี่ยวกับรหัสอย่างง่ายไปจนถึงการทำให้โค้ดของคุณเป็นทางแยกอย่างเป็นทางการ / สาขาของรหัสดั้งเดิม โดยสรุปมันน้อยกว่าเกี่ยวกับสิ่งที่คุณสามารถทำได้ แต่เกี่ยวกับวิธีการดั้งเดิมที่คุณพิจารณารหัสและวิธีการให้เครดิตหากจำเป็น การคัดลอกผลงานไม่ได้เป็นการคัดลอก แต่เป็นการทำสำเนาโดยไม่ให้เครดิต


1

ฉันขอแนะนำให้คุณใช้แหล่งข้อมูลที่คุณสามารถหาวิธีแก้ปัญหาได้ และเมื่อคุณคิดออกแล้วคุณจะลบแหล่งข้อมูลเหล่านี้ทั้งหมดออกจากหน้าจอและเขียนวิธีแก้ปัญหาของคุณเอง

หากคุณไม่มีหน่วยความจำภาพถ่ายและคัดลอกหนึ่งในวิธีแก้ไขปัญหาที่มีอยู่วิธีนี้จะช่วยแก้ปัญหาการลอกเลียนแบบและ / หรือการละเมิดลิขสิทธิ์ นอกจากนี้ยังช่วยให้คุณบังคับให้คุณเข้าใจปัญหาที่เกิดขึ้นจริง

คุณสามารถก้าวต่อไปอีกเล็กน้อย: โซลูชันส่วนใหญ่ที่คุณพบบนอินเทอร์เน็ตมีข้อบกพร่องอย่างใดอย่างหนึ่งหรืออย่างอื่น เพียงเพราะบนอินเทอร์เน็ตไม่ได้หมายความว่าสมบูรณ์แบบ คิดออกสิ่งที่ค่อนข้างไม่ถูกต้องและแก้ไข วิธีการที่คุณจะได้รับความเข้าใจที่ดีขึ้นมีรหัสที่ดีขึ้นและแน่นอนหลีกเลี่ยงข้อกล่าวหาการละเมิดลิขสิทธิ์หรือการขโมยความคิดใด ๆ


0

หากคุณไม่ได้เข้ารหัสในสภาพแวดล้อมทางวิชาการทำไมคุณถึงต้องกังวลเกี่ยวกับการลอกเลียนแบบ ในสภาพแวดล้อมแบบมืออาชีพจะมีความสำคัญถ้าคุณลอกเลียนพนักงานคนอื่นใน บริษัท ของคุณ การขโมยความคิดเป็นเรื่องเกี่ยวกับผู้ที่ได้รับเครดิต ไม่ว่าในกรณีใดวิธีแก้ปัญหาการลอกเลียนแบบง่าย ๆ ไม่ว่าคุณจะทำอะไรให้เครดิตกับผู้แต่งคนแรก หากมาจากหน้าเว็บให้ใส่ URL สิ่งนี้มีประโยชน์สำหรับคุณเพราะหากคุณมีคำถามใด ๆ คุณอาจจะสามารถค้นหาแหล่งต้นฉบับได้อีกครั้ง

หากคำถามของคุณเกี่ยวกับการละเมิดลิขสิทธิ์โปรดจำไว้ว่าลิขสิทธิ์นั้นไม่ครอบคลุมถึงหน้าที่การใช้งาน ครอบคลุมเฉพาะตัวเลือกสร้างสรรค์ที่มีตัวเลือกที่มีประโยชน์เท่ากันจำนวนมาก หากคุณไม่สามารถเปลี่ยนรหัสได้อย่างง่ายดายโดยไม่ทำให้ฟังก์ชั่นหยุดทำงานแสดงว่าไม่ใช่สิ่งที่มีลิขสิทธิ์คุ้มครอง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.