نسخ مبرمجين جيدين ، سرقة مبرمجين جيدين

يمكن أن يكون مجرد نسخ الرمز أمرًا خطيرًا. ومع ذلك ، يمكن أن يقال هذا عن العديد من الجوانب الأخرى في تطوير البرمجيات ، شريطة أن يتم التعامل معها بلا مبالاة. في هذا المنشور سأناقش قضايا مثل:

  • ماذا يعني نسخ التعليمات البرمجية في تطوير البرمجيات؟
  • ماذا تعني سرقة التعليمات البرمجية الصحيحة؟
  • ما هي مخاطر النسخ غير الصحيح؟

لا يخفى على أي مبرمج أن نموذج التعليمات البرمجية الذي يتم نشره كإجابات على الأسئلة هنا على Stack Overflow غالبًا ما ينتهي به المطاف في الإصدار النهائي من البرامج. ربما سألت سؤالًا ، وأرسلوا إليك رسمًا بيانيًا مثاليًا للدورة في إجابتك for. ربما وجدت إجابة رائعة ، حيث كان هناك قطعة من الرمز c async awaitمناسبة لتطبيقك.

آخر كتاب برمجة ستحتاجه:

صورة


عندما صادفت تغريدة تحدثت عن فوائد السرقة ، تساءلت عما إذا كان نسخ الرمز مفيدًا؟


ملاحظة لك ، أنا لا أفضّل قيامك بنسخ الشفرة بشكل عشوائي من قسم الأسئلة والأجوبة. في بعض الأحيان قد تواجه مشاكل بسبب هذا. ولكن ، كما أظهر لنا ضيفنا في بودكاست Anna Lytical ، يمكن استخدام هذا النهج لتطوير النماذج الأولية العاملة بسرعة.

إذا قمت بنسخ أمثلة التعليمات البرمجية ، يرجى ترك رابط إلى الترخيص. اعتمادًا على آخر مرة تم فيها تعديل الرمز على Stack Overflow ، تم ترخيصه بإصدار من ترخيص Creative Commons. يتم ترخيص أحدث الرموز بواسطة CC BY-SA 4.0 ، والتي يلزم الرجوع إليها.

اكتب الرمز مرة واحدة ، وضعها في العمل مليون مرة


نسخ التعليمات البرمجية من Stack Overflow هو شكل من أشكال الانتحال ، أي ازدواجية التعليمات البرمجية من مشروع واحد أو أكثر وإعادة استخدامه. بالنظر إلى المبرمج الذي تسأل عنه ، ولكن قد يتبين أنه في عمله من 5 إلى 10 أو حتى من 7 إلى 23 بالمائة من الكود يتم نسخه من مصدر آخر. ما إذا كان الاقتراض يتم بشكل صحيح أم لا هو بالفعل سؤال للنقاش.

بغض النظر عن النسبة المئوية للاقتراض الفعلي في المشاريع الفردية ، يمكننا القول على وجه اليقين أن تكرار الكود شائع للغاية. رمز Boilerplate هو رمز يتكرر بانتظام طوال المشروع. من المحتمل أن المبرمجين لا يكتبونها في كل مرة بأنفسهم. مكتبات مثل لومبوك تجعل من الممكن تقليل الحاجة إلى كتابة لوحة مرجعية ، لكن الحقيقة تبقى:

  • سيكون هناك دائمًا أجزاء من الرمز يجب أن تظهر مرارًا وتكرارًا طوال المشروع.

و

  • نظرًا لحقيقة أن هذه الأجزاء ستظل على الأرجح بحاجة إلى تغييرات صغيرة ، لا يمكن إزالة أجزاء التعليمات البرمجية هذه في وظيفة منفصلة أو تبعية.

بالحديث عن التبعيات ، يمكننا أن نذكر المكتبات والتبعيات الخارجية ، وهي وسيلة فعالة لإعادة استخدام وظائف التعليمات البرمجية دون نسخها. إنه يعمل تقريبًا مثل نسخ التعليمات البرمجية ، والفرق الوحيد هو أنك في هذه الحالة لست مسؤولاً عن الحفاظ على تشغيل الجزء المنسوخ من التعليمات البرمجية. الجحيم ، الآن معظم الإنترنت يعمل على منصات مختلفة ومكتبات المكونات الإضافية التي تبسط التطوير. تعد إعادة استخدام التعليمات البرمجية في المكتبات فعالة بشكل لا يصدق ، لأنها تتيح لكل مكتبة القيام بشيء واحد ، ولا تزال تفعل ذلك بشكل جيد. وخلافا للطريقة التي يجب أن تشير بها جميع المصادر عند كتابة الأعمال في المجتمع العلمي ، فإن العديد من هذه المكتبات لا تحتاج إلى أي شيء من جانبك للإشارةأنك تبرمج باستخدام رمز شخص آخر أو أنك تستخدم رمز شخص آخر كأساس.

يأخذ مدير حزمة جافا سكريبت npm هذا إلى أقصى الحدود. يمكنك تثبيت مكتبات صغيرة أحادية الوظيفة ( بعضها بحجم سطر التعليمات البرمجية فقط ) في مشروعك عبر سطر الأوامر. يمكنك الحصول على أي من أكثر من مليون حزمة مجانية مفتوحة المصدر وبدء تضمين الميزات في تطبيقك.

بالطبع ، مثل أي نهج ، فإن هذه الطريقة لها أيضًا ناقص. بعد تثبيت الحزمة ، تفقد بعض التحكم في الرمز. أنشأ بعض المهاجمين حزمًا مفيدة حقًا ، وانتظروا حتى حصلوا على مستوى تنزيل لائق ، ثم قاموا بتعديل الرمز لسرقة محافظ البيتكوين. يجب أن نشيد بموظفي الآلية الوقائية الوطنية ، حيث تمكنوا من صد مثل هذه الهجمات بسرعة. ومع ذلك ، كلما زاد عدد التبعيات الخارجية لديك ، زادت مساحة الهجوم التي تتخيلها.

حتى إجابات Stack Overflow غير محمية من تكرار التعليمات البرمجية. وجد باحث مستقل العديد من الردود على Stack Overflow حيث تم نسخ الشفرة من مصادر أخرى. تم العثور على قطعة واحدة من كود Java في أكثر من 40 رد.

نسخ الفنانين الجيدين ، سرقة الفنانين العظماء


في عالم الفن ، تعد السرقة أيضًا جزءًا من إبداعات رائعة. أتذكر كيف ذهبت إلى متحف فان جوخ في أمستردام ورأيت أعماله المبكرة هناك. لقد صدمت. ولكن بعد ذلك لم أكن أعلم أنه في الواقع كانت هذه اللوحات مستوحاة من الرسم الياباني والقطع الخشبية (نقش الخشب) . ما اعتقدت أنه أسلوب فريد من نوعه في عصره ، كان في الواقع جزءًا من تاريخ التطور ، ولكن ليس الذي كنت أفكر فيه. بدلاً من اتباع مسار التطور الذي سلكه الفنانون الدنماركيون بالفعل ، استخدم فان جوخ الأفكار من المطبوعات اليابانية التي وجدها في باريس (استخدم أفكار تكوين المبنى وأسلوب ضربات الفرشاة) ودمجها في أعماله.

ويعود الفضل إلى بيكاسو بالقول: "نسخة الفنانين الجيدين ، سرقة الفنانين العظماء". استخلص بيكاسو نفسه العديد من الأفكار من الفن الأفريقي والبولينيزي ودمجها مع رسوماته. فكرة السرقة نفسها خاطئة. في الواقع ، إن استدعاء عمل شخص آخر لهم هو سرقة أدبية. الشيء المقترض لا يزال ينتمي إلى شخص آخر. قمت بنسخ النمط ، ولا يزال ملكًا للمالك. ومع ذلك ، للسرقة ، تحتاج إلى جعل هذه الفكرة خاصة بك. أن تعلن عن نفسك مبدع فكرة شخص ما هو الاقتراض. لكن بيكاسو كان يفكر في أنه بحاجة إلى فهم الفكرة ونسجها في عمله من أجل "سرقتها". أحب ستيف جوبز هذا الاقتباس ، وكانت أبل ناجحة تحت قيادته لأنها سرقت الأفكار ، ودمجتها ، وتحسينها.

عند نسخ الرمز ، فإنك تخاطر باقتراضه ببساطة. يتم وضع الشفرة المستعارة في المشروع تمامًا إذا كانت مدمجة جيدًا ولا تسبب أخطاء ، ولكن يمكن أن تحتوي على أخطاء أو يمكن إنشاؤها بواسطة مجرمي الإنترنت مع إمكانية استخدامها لأغراضهم ، والتي لن تعرف عنها. عدد المخاطر المصاحبة للرمز المنسوخ بشكل غير صحيح (أو المنسوخة بصيغتها المعدلة) كبير. في الواقع ، يمكن للشكاوى من كود مكرر تتبع الانتحال. إذا كنت لا تفهم الرمز ، فمن المحتمل أن تترك ثقوبًا في حماية ما كان من المفترض أن يكون في الأساس مجرد عرض للمفهوم. حتى الجزء الأكثر نسخًا من التعليمات البرمجية في Stack Overflow لا يُحرم من الخطأ .

من ناحية أخرى ، عندما تسرق الشفرة ، فأنت تعرف بالتأكيد ما تفعله. جوهرها وميزاتها تتناسب مع التعليمات البرمجية الخاصة بك. إذا كان بإمكانك كتابته مرة أخرى من الذاكرة ، فهذه علامة على سرقة الرمز بشكل صحيح. وهذا يعني أن إعادة صياغة التعليمات البرمجية أعطتك أكثر من مجرد نسخة. أعطتك شيئًا جديدًا وأصليًا.
لذا نعم ، سرقة الرمز. خذها وفهمها وتطبيقها في مشاريعك. جعله لك. يمكنك اكتساب الخبرة وتحسين مشاريعك ، وربما حتى سيرتك الذاتية (تعرف أيضًا باسم ctrl + C ctrl + V). ولكن إذا قمت بالنسخ دون فهم مطلق لكود المكتشف الجديد وما يفعله ، فإنك تخاطر بجعل الكود الخاص بك أسوأ.



صورة
تعرف على تفاصيل كيفية الحصول على مهنة مرغوبة من الصفر أو المستوى الأعلى في المهارات والراتب من خلال الحصول على دورات SkillFactory عبر الإنترنت:





All Articles