Як я сміливо пишу код у своїх власних словах, а не плагіат?


18

Я розумію плагіат і перефразовування досить добре, коли справа стосується написання науково-дослідної роботи, але ці еквівалентні області програмування мені здаються чужими. Я переглянув теми в Інтернеті, і дивно, що на цю тему не так багато матеріалів, як можна було б очікувати.

Коли пишуть код і потрібно реалізувати те, що я ніколи раніше не реалізовував, я піду в Інтернеті шукати приклад. Я намагаюся заздалегідь прочитати документацію, але іноді мені здається, що це слідкувати. Тож якщо цього не вдасться, я шукаю тему в Інтернеті і буду подавати десятки прикладів (будь то в чиємусь особистому блозі чи на веб-сайті Q&A, як ТА) Зараз мені зазвичай подають 5-10 рядків коду. У мене є і НІКОЛИ не скопіюйте та вставте це у свій власний код, але я все одно переживаю, щоб його копіювати дослівно. Мені важко переробити певний фрагмент коду, особливо коли існує лише так багато способів зробити це. Я переконуюсь у перейменуванні змінних, зміні форматування тощо - але чи цього достатньо?

Я завжди хотів зрозуміти цю тему, але тепер, коли я працюю з новою мовою та в корпоративному середовищі, я думаю, що це особливо доречно. Якщо хтось міг би пояснити або посилатися на гарне пояснення в іншому місці, я б дуже вдячний за це!

tl; dr. Я не розумію, скільки потрібно змінити та переробити 5-10 фрагментів коду, знайденого в Інтернеті, щоб уникнути плагіату. Що робити, якщо дуже мало, що можна змінити?


Якщо вам доведеться активно думати про те, щоб уникнути плагіату, із системою щось не так. Звичайно, ви ніколи не повинні просто щось копіювати, але це не повинно думати про це.
Анто

1
@anto, я думаю, я розумію, що означає ОП. ОП схопив звідкись якийсь код, хоче використовувати його або інтегрувати його в якусь роботу, яку він / вона проводить. Моя пропозиція, щоб ОП достовірно брати участь у чомусь отриманому десь ще - це (1) вивчити / зрозуміти це, (2) покращити код як функціонально (рефакторинг), так і косметично (краще, більш узгоджені назви символів) та (3) запустити його в рамках свого власного проекту. Я зробив це за допомогою цього швидкого (O (log2 (N)) ковзаючого алгоритму max. мій код мій, але я дізнався alg десь із іншого.
Роберт Брістоу-Джонсон

Хоча я розумію, що питання є ширшим, це посилання може бути актуальним: Чи можна юридично використовувати код, який я знайшов на форумі?
Джон Ву

Відповіді:


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

.

Щоб уникнути плагіату, ви можете поцікавитись своїм джерелом. Ось приклад (яких існує багато) з 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

Якщо ви змінюєте та переформулюєте код лише для уникнення плагіату, ви лише (намагаєтесь) уникати виявлення плагіату. Все залежить від того, який фрагмент коду ви копіюєте. Одна з можливостей - оцінити даний фрагмент коду як просто корисний посібник з обмеженою творчою оригінальністю або як звичайну практику, на яку ніхто не може претендувати на авторство. Інша можливість - це оцінити його досить важливо, щоб дати кредит. Ви можете надати кредит на кількох рівнях, від простого коментування коду до того, щоб зробити свій код офіційною форкою / гілкою вихідного коду. Підводячи підсумок, це менше про те, що ви можете зробити, але про те, наскільки оригінально ви вважаєте код і як надаєте кредит, якщо це потрібно. Плагіат - це не копіювання, а копіювання без надання кредиту.


1

Я б запропонував вам використовувати будь-які джерела, які ви знайдете, щоб вирішити, як вирішити проблему. І як тільки ви це зрозуміли, ви виймаєте всі ці джерела з екрану і пишете власне рішення.

Якщо у вас немає фотографічної пам’яті та не скопійовано одне із існуючих рішень, це вирішує проблему плагіату та / або порушення авторських прав. Це також допомагає вам, змушуючи насправді зрозуміти проблему.

Ви можете піти на невеликий крок далі: у більшості рішень, які ви знайдете в Інтернеті, є одна чи інша помилка. Тільки тому, що це в Інтернеті, не означає, що він ідеальний. З’ясуйте, що не зовсім правильно, і виправте це. Таким чином ви краще розумієте, маєте кращий код і, безумовно, уникаєте звинувачення у порушенні авторських прав чи плагіаті.


0

Якщо ви не кодуєте в академічному середовищі, чому б ви турбувалися про плагіат? У професійному середовищі це має значення лише в тому випадку, якщо ви піддаєте плагіату інших працівників вашої компанії. Плагіат - це те, хто отримує кредит. У будь-якому випадку рішення плагіату просте - все, що ви візьмете, віддати кредит оригіналу автора. Якщо це було з веб-сторінки, включіть URL-адресу. Це корисно для вас, адже якщо у вас виникнуть запитання, ви зможете знову знайти оригінальне джерело.

Якщо ваше питання стосується порушення авторських прав, пам’ятайте, що авторські права не охоплюють функціональних аспектів. Він охоплює лише творчий вибір, коли існує дуже велика кількість однаково корисних варіантів. Якщо ви не можете легко змінити код, не порушивши функціональність, це не щось, що стосується авторських прав (за правилом злиття або scènes à faire).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.