Copy programmer bagus, programmer hebat mencuri

Hanya menyalin kode bisa berbahaya. Namun, ini dapat dikatakan tentang banyak aspek lain dalam pengembangan perangkat lunak, asalkan mereka ditangani dengan ceroboh. Dalam posting ini saya akan membahas masalah-masalah seperti:

  • Apa artinya menyalin kode dalam pengembangan perangkat lunak?
  • Apa arti pencurian kode yang benar?
  • Apa jebakan dari penyalinan yang salah?

Bukan rahasia bagi pemrogram mana pun bahwa kode sampel yang diterbitkan sebagai jawaban atas pertanyaan di Stack Overflow sering berakhir di versi akhir program. Mungkin Anda mengajukan pertanyaan, dan mereka mengirimi Anda diagram siklus yang ideal dalam jawaban Anda for. Mungkin Anda menemukan jawaban yang bagus, di mana ada sepotong kode c async awaityang cocok untuk aplikasi Anda.

Buku pemrograman terakhir yang Anda butuhkan:

gambar


Ketika saya menemukan tweet yang berbicara tentang manfaat pencurian, saya bertanya-tanya apakah menyalin kode bisa bermanfaat?


Catatan untuk Anda, saya tidak mendukung Anda menyalin kode tanpa pandang bulu dari bagian Tanya Jawab kami. Terkadang Anda mungkin memiliki masalah karena ini. Tetapi, seperti yang ditunjukkan oleh tamu kami di podcast Anna Lytical, pendekatan ini dapat digunakan untuk dengan cepat mengembangkan prototipe yang berfungsi.

Jika Anda menyalin contoh kode, silakan tinggalkan tautan ke lisensi. Tergantung pada terakhir kali kode diedit di Stack Overflow, kode ini dilisensikan dengan versi lisensi Creative Commons. Kode terbaru dilisensikan oleh CC BY-SA 4.0, yang memerlukan referensi.

Tulis kodenya sekali, aktifkan sejuta kali


Menyalin kode dari Stack Overflow adalah bentuk plagiarisme, yaitu duplikasi kode dari satu atau lebih proyek dan penggunaannya kembali. Melihat programmer yang Anda tanyakan, tetapi mungkin ternyata dalam karyanya dari 5 hingga 10 atau bahkan 7 hingga 23 persen dari kode disalin dari beberapa sumber lain. Apakah pinjaman dilakukan dengan benar atau tidak sudah menjadi pertanyaan untuk diskusi.

Terlepas dari persentase pinjaman aktual dalam proyek individu, kami dapat mengatakan dengan pasti bahwa duplikasi kode sangat umum. Kode boiler adalah kode yang secara teratur diulangi sepanjang proyek. Kemungkinan besar programmer tidak mengetiknya sendiri setiap kali. Perpustakaan seperti Lombok memungkinkan untuk mengurangi kebutuhan untuk menulis boilerplate, tetapi faktanya tetap:

  • Akan selalu ada bagian dari kode yang harus muncul berulang kali sepanjang proyek.

DAN

  • Karena kenyataan bahwa bagian-bagian ini kemungkinan besar masih membutuhkan perubahan kecil, fragmen kode ini tidak dapat dihapus ke dalam fungsi atau ketergantungan yang terpisah.

Berbicara tentang dependensi, kita dapat menyebutkan perpustakaan dan dependensi eksternal, yang merupakan cara efektif untuk menggunakan kembali fungsionalitas kode tanpa menyalinnya. Ini berfungsi hampir seperti menyalin kode, dengan satu-satunya perbedaan adalah bahwa dalam hal ini Anda tidak bertanggung jawab untuk menjaga operasi bagian yang disalin dari kode. Hell, sekarang sebagian besar Internet berjalan di berbagai platform dan perpustakaan plugin yang menyederhanakan pengembangan. Menggunakan kembali kode di perpustakaan sangat efektif, karena memungkinkan setiap perpustakaan untuk melakukan satu hal, dan masih melakukannya dengan baik. Dan tidak seperti cara semua sumber harus diindikasikan ketika menulis bekerja di komunitas ilmiah, banyak dari perpustakaan ini tidak memerlukan apa pun dari Anda untuk mengindikasikanbahwa Anda memprogram menggunakan kode orang lain atau bahwa Anda menggunakan kode orang lain sebagai dasarnya.

Pengelola Paket JavaScript npm membawa ini ke ekstrem. Anda dapat menginstal pustaka fungsi tunggal yang kecil ( beberapa ukuran hanya sebaris kode ) ke proyek Anda melalui baris perintah. Anda dapat mengambil sendiri salah satu dari lebih dari satu juta paket sumber terbuka gratis dan mulai menanamkan fitur dalam aplikasi Anda.

Tentu saja, seperti pendekatan apa pun, metode ini juga memiliki minus. Setelah menginstal paket, Anda kehilangan kontrol atas kode. Beberapa penyerang membuat paket yang sangat berguna, menunggu sampai mereka mendapatkan tingkat unduhan yang layak, dan kemudian mengubah kode untuk mencuri dompet bitcoin. Kami harus membayar upeti kepada staf npm, karena mereka berhasil dengan cepat mengusir serangan tersebut. Namun, semakin banyak ketergantungan eksternal yang Anda miliki, semakin banyak area serangan yang Anda bayangkan.

Bahkan jawaban Stack Overflow tidak dilindungi dari duplikasi kode. Seorang peneliti independen menemukan beberapa tanggapan terhadap Stack Overflow di mana kode tersebut disalin dari sumber lain. Sepotong kode Java ditemukan di lebih dari 40 respons.

Artis yang bagus meniru, seniman hebat mencuri


Di dunia seni, pencurian juga merupakan bagian dari kreasi ciptaan yang hebat. Saya ingat bagaimana saya pergi ke Museum Van Gogh di Amsterdam dan melihat karya awalnya di sana. Saya terkejut. Tapi kemudian saya tidak tahu bahwa sebenarnya lukisan-lukisan itu terinspirasi oleh lukisan dan potongan kayu Jepang (ukiran kayu) . Apa yang saya pikir merupakan gaya yang unik pada masanya sebenarnya adalah bagian dari sejarah perkembangan, tetapi bukan yang saya pikirkan. Alih-alih mengikuti jalur perkembangan yang telah diambil oleh seniman Denmark, Van Gogh menggunakan ide-ide dari cetakan Jepang yang ia temukan di Paris (ia menggunakan ide-ide komposisi bangunan dan gaya sapuan kuas) dan menggabungkannya dalam karya-karyanya.

Picasso dikreditkan dengan mengatakan: "Artis yang bagus menyalin, seniman hebat mencuri." Picasso sendiri mendapat banyak ide dari seni Afrika dan Polinesia dan menggabungkannya dengan sketsa-sketsanya. Gagasan pencurian itu sendiri salah. Memang, menyebut karya orang lain sebagai milik mereka adalah plagiarisme. Benda pinjaman itu masih milik orang lain. Anda menyalin gaya, dan itu masih milik pemilik. Namun, untuk mencuri, Anda harus menjadikan ide ini milik Anda. Untuk menyatakan diri Anda sebagai pencipta ide seseorang adalah meminjam. Tetapi Picasso berpikir bahwa dia perlu memahami dan menenun ide itu ke dalam karyanya untuk "mencurinya". Steve Jobs menyukai kutipan ini , dan Apple berhasil di bawah kepemimpinannya karena mereka mencuri ide, menggabungkannya, dan memperbaikinya.

Saat Anda menyalin kode, Anda berisiko meminjamnya saja. Kode yang dipinjam ditempatkan dalam proyek sepenuhnya jika tertanam dengan baik dan tidak menyebabkan kesalahan, tetapi dapat mengandung bug atau dapat dibuat oleh penyerang dengan kemungkinan menggunakannya untuk tujuan mereka, yang tidak akan Anda ketahui. Jumlah risiko yang terkait dengan kode yang disalin secara tidak benar (atau disalin sebagaimana diubah) sangat besar. Bahkan, keluhan kode duplikat dapat melacak penjiplak. Jika Anda tidak memahami kode tersebut, Anda kemungkinan akan meninggalkan lubang dalam perlindungan dari apa yang semula hanya merupakan demonstrasi konsep tersebut. Bahkan bagian kode yang paling banyak disalin di Stack Overflow tidak kekurangan bug .

Di sisi lain, ketika Anda mencuri kode, Anda pasti tahu apa fungsinya. Inti dan fiturnya sesuai dengan kode Anda sendiri. Jika Anda dapat menulis lagi dari memori, maka ini adalah tanda bahwa kode dicuri dengan benar. Ini berarti bahwa pengerjaan ulang kode telah memberi Anda lebih dari sekadar salinan. Dia memberimu sesuatu yang baru dan asli.
Jadi ya, curi kodenya. Ambillah, pahami, dan terapkan dalam proyek Anda. Jadikan milikmu. Anda dapat memperoleh pengalaman, meningkatkan proyek Anda, dan bahkan mungkin resume Anda (alias ctrl + C ctrl + V). Tetapi jika Anda menyalin tanpa pemahaman mutlak tentang kode yang baru ditemukan dan apa fungsinya, Anda berisiko memperburuk kode Anda sendiri.



gambar
Pelajari detail tentang cara mendapatkan profesi yang dicari dari awal atau Tingkatkan keterampilan dan gaji dengan mengambil kursus online SkillFactory:





All Articles