Bagaimana cara aman menulis kode dalam 'kata-kata' saya sendiri dan tidak menjiplak tulisan?


18

Saya memahami plagiarisme dan parafrase dengan cukup baik ketika menulis makalah penelitian, tetapi bidang-bidang yang setara dalam pemrograman itu terasa asing bagi saya. Saya telah mencari topik secara online, dan secara mengejutkan tidak ada banyak materi tentang subjek seperti yang diharapkan.

Saat menulis kode dan harus mengimplementasikan sesuatu yang belum pernah saya implementasikan sebelumnya, saya akan online untuk mencari contoh. Saya mencoba membaca dokumentasi sebelumnya, tetapi kadang-kadang saya merasa sulit untuk mengikuti. Jadi jika itu gagal, saya akan mencari topik online dan disajikan dengan puluhan contoh (apakah mereka ada di blog pribadi seseorang atau situs tanya jawab seperti SO). Sekarang saya biasanya disajikan dengan 5-10 baris kode. Saya sudah dan tidak akan pernah menyalin dan menempelkannya ke dalam kode saya sendiri, tetapi saya masih khawatir tentang menyalinnya kata demi kata. Saya merasa sulit untuk menulis ulang sepotong kode tertentu, terutama ketika hanya ada begitu banyak cara untuk melakukannya. Saya pastikan untuk mengganti nama variabel, mengubah pemformatan, dll. - tetapi apakah ini cukup?

Saya selalu ingin memahami topik ini, tetapi sekarang saya bekerja dengan bahasa baru dan dalam lingkungan perusahaan saya pikir itu sangat relevan. Jika ada yang bisa menjelaskan atau menautkan ke penjelasan yang baik di tempat lain, saya akan sangat menghargai itu!

tl; dr Saya tidak mengerti berapa banyak yang harus Anda ubah dan tulis ulang 5-10 cuplikan kode yang ditemukan online untuk menghindari plagiarisme. Bagaimana jika ada sangat sedikit yang dapat Anda ubah?


Jika Anda harus secara aktif berpikir tentang menghindari plagiarisme, ada yang salah dengan sistem. Tentu, Anda tidak boleh hanya menyalin sesuatu, tetapi seharusnya tidak perlu memikirkannya.
Anto

1
@anto, saya pikir saya mengerti apa arti OP. OP telah mengambil beberapa kode dari suatu tempat, ingin menggunakannya atau mengintegrasikannya dengan pekerjaan yang sedang dilakukannya. saran saya, agar OP secara kredibel mengambil kepemilikan atas sesuatu yang diperoleh di tempat lain adalah untuk (1) belajar / memahaminya, (2) meningkatkan kode baik secara fungsional (refactoring) dan secara kosmetik (lebih baik, nama simbol yang lebih konsisten) dan (3) jalankan dalam proyeknya sendiri. Saya telah melakukan ini dengan algoritma max geser cepat (O (log2 (N)) ini. Kode saya adalah milik saya, tetapi saya belajar alg dari tempat lain.
robert bristow-johnson

Meskipun saya mengerti pertanyaannya menjadi lebih luas, tautan ini mungkin relevan: Dapatkah saya menggunakan kode yang saya temukan di forum?
John Wu

Jawaban:


30

Plagiarisme tidak sama dengan pelanggaran hak cipta. Plagiarisme melepaskan karya orang lain sebagai milik Anda. Dimungkinkan untuk melakukan pelanggaran hak cipta tanpa menjiplak:

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

dan dimungkinkan untuk melakukan plagiarisme tanpa pelanggaran hak cipta:

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

(Diangkat dari mesin database SQL serverless domain publik)

Untuk menghindari plagiarisme, Anda dapat mempertimbangkan untuk mengutip sumber Anda. Berikut ini sebuah contoh (yang ada banyak) dari 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

Menggunakan tutor / tutorial bukanlah plagiarisme. Jika saya menyalin jawaban orang lain di sini, itu adalah plagiarisme. Jika saya menautkannya, menunjukkan kutipan, itu bukan plagiarisme.

Periksa apakah sumber Anda mengizinkan penggunaan (kembali) (lisensi, izin tertulis). Saya pikir (perlu memeriksa) apa pun di SO secara implisit akan menjadi domain pub (atau commons kreatif, berbagi sama dll) atau itu tidak akan benar-benar dapat bekerja. (Apa gunanya mendapatkan jawaban yang Anda tahu tidak bisa Anda gunakan)

Singkatnya saya merasa bahwa mungkin Anda tidak memahami plagiarisme dengan baik, kecuali definisi berbeda secara liar di bidang akademik?

Aturan praktis saya: gunakan semua jawaban yang hanya mempercepat hasil yang Anda dapatkan. Namun, jika Anda menemukan sampel yang berfungsi secara ajaib tetapi Anda benar-benar tidak tahu bagaimana (atau mengapa) Anda melewati batas etika.

Pada subjek memodifikasi potongan kecil saya akan berdebat terbalik; bagaimana Anda mengintegrasikan snippet kecil ke dalam kode Anda tanpa mengatur ulang: peluang yang cocok cukup ramping dan saya memiliki pendapat yang cukup kuat tentang seperti apa kode saya seharusnya. Mungkin Anda tidak memiliki 'pendapat' (baca: pengalaman) dan saya sarankan menulis lebih banyak kode untuk mendapatkan kepercayaan diri. Teknik lain untuk mendapatkan pengalaman adalah membaca jawaban, lalu pergi dan menerapkannya tanpa mengakses kode sampel apa pun . Anda akan membuat kesalahan, tetapi Anda juga akan cukup belajar

  • mereproduksinya lain kali
  • dapatkan kepercayaan apakah Anda memahami kode tersebut
  • merasa baik tentang diri sendiri

dikirim dari HTC saya; silakan menikmati satu atau dua kesalahan ketik


SO posting dilisensikan sebagai CC-BY-SA 3.0 (gulir ke bawah ke bagian paling bawah halaman) jadi jika seseorang menulis solusi lengkap untuk masalah Anda, Anda hanya dapat menyalinnya kata demi kata jika Anda menyebut penulis dan Anda kode diterbitkan di bawah lisensi yang sama (atau tidak diterbitkan sama sekali). Tapi seperti yang Anda katakan, pengkodean copy & paste semacam itu adalah praktik yang buruk pada awalnya.
5gon12eder

4

Jika Anda mengubah dan menulis ulang kode hanya untuk menghindari plagiarisme, Anda hanya (mencoba) menghindari deteksi plagiarisme. Semuanya tergantung pada kode yang Anda salin. Salah satu kemungkinan adalah menilai cuplikan kode yang diberikan hanya sebagai panduan bermanfaat dengan orisinalitas kreatif terbatas atau sebagai praktik umum yang tidak seorang pun dapat mengklaim kepengarangan. Kemungkinan lainnya adalah menilai itu cukup penting untuk memberikan kredit. Anda dapat memberikan kredit pada beberapa tingkatan, dari komentar kode sederhana hingga menjadikan kode Anda cabang / cabang resmi dari kode asli. Singkatnya kurang tentang apa yang dapat Anda lakukan tetapi tentang seberapa orisinalnya Anda mempertimbangkan kode dan bagaimana Anda memberikan kredit jika diperlukan. Plagiarisme tidak menyalin tetapi menyalin tanpa memberikan kredit.


1

Saya sarankan agar Anda menggunakan sumber apa pun yang dapat Anda temukan untuk mencari tahu bagaimana menyelesaikan masalah. Dan setelah Anda menemukannya, Anda menghapus semua sumber ini dari layar dan menulis solusi Anda sendiri.

Kecuali jika Anda memiliki memori fotografis dan menyalin salah satu solusi yang ada, ini menyelesaikan masalah plagiarisme dan / atau pelanggaran hak cipta. Ini juga membantu Anda dengan memaksa Anda untuk benar-benar memahami masalahnya.

Anda dapat melangkah lebih jauh: Sebagian besar solusi yang Anda temukan di internet memiliki satu kesalahan atau lainnya. Hanya karena itu di internet tidak berarti itu sempurna. Cari tahu apa yang tidak cukup benar dan perbaiki. Dengan begitu Anda mendapatkan pemahaman yang lebih baik, memiliki kode yang lebih baik, dan jelas menghindari tuduhan pelanggaran hak cipta atau plagiarisme.


0

Jika Anda tidak membuat kode di lingkungan akademik, mengapa Anda khawatir tentang plagiarisme? Dalam lingkungan profesional, itu hanya masalah jika Anda menjiplak karyawan lain di perusahaan Anda. Plagiarisme adalah tentang siapa yang mendapat pujian. Bagaimanapun, solusi untuk plagiarisme sederhana - apa pun yang Anda ambil, berikan penghargaan kepada penulis asli. Jika itu dari halaman web, sertakan URL. Ini menguntungkan Anda, karena jika Anda memiliki pertanyaan, Anda mungkin dapat menemukan sumber aslinya lagi.

Jika pertanyaan Anda benar-benar tentang pelanggaran hak cipta, ingatlah bahwa hak cipta tidak mencakup aspek fungsional. Ini hanya mencakup pilihan kreatif di mana ada sejumlah besar pilihan yang sama-sama bermanfaat. Jika Anda tidak dapat dengan mudah mengubah kode tanpa merusak fungsinya, maka itu bukan sesuatu yang dilindungi oleh hak cipta (di bawah aturan merger atau scènes à faire).

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.