
_START_ARTICLE_
شيفرة مصدرية
_START_PARAGRAPH_
الشفرة المصدرية أو الكود المصدري أو مصدر البرنامج (بالإنجليزية: Source Code) مصطلح في عالم الحاسوب يُعبِّر عن الأوامر والتعليمات المكتوبة بلغة من  لغات البرمجة التي يمكن قرائتها عادة كنص بسيط. تم تصميم شفرة المصدر خصيصًا لتسهيل عمل مبرمجي الحاسوب، الذين يحددون الإجراءات التي يجب أن يقوم بها الحاسوب عن طريق كتابة شفرة المصدر. غالبًا ما يتم تحويل شفرة المصدر من خلال مجمع أو مترجم إلى رمز آلة ثنائية يفهمه الحاسوب. قد يتم تخزين رمز الجهاز للتنفيذ في وقت لاحق، أو يتم تفسير شفرة المصدر وتنفيذها على الفور._NEWLINE_يتم توزيع معظم برامج التطبيق في نموذج يتضمن الملفات القابلة للتنفيذ فقط. إذا تم تضمين شفرة المصدر، فستكون مفيدة للمستخدم أو للمبرمج أو لمسؤول النظام، وقد يرغب أي منهم في دراسة البرنامج أو تعديله.
_START_SECTION_
تعريفات
_START_PARAGRAPH_
يعرف نظام معلومات لينوكس الكود المصدري على النحو التالي:_NEWLINE_شفرة المصدر (يشار إليها أيضًا باسم المصدر أو الشفرة) هي إصدار البرنامج كما هو مكتوب في الأصل (مكتوبًا في الحاسوب) بواسطة شخص بنص عادي أي (الأحرف الأبجدية الرقمية مقروءة من البشر)._NEWLINE_يمكن أيضا أخذ فكرة بشكل أوسع من شفرة المصدر، لتضمين رمز الآلة والإشعارات باللغات الرسومية، ولا يعتبر أي منهما نصأ بطبيعته. مثال من مقالة تم تقديمها حول مؤتمر IEEE السنوي وحول تحليل تعليمات رمز المصدر. _NEWLINE_غالبًا ما تكون هناك عدة خطوات لترجمة البرنامج أو التلاعب به بين شفرة المصدر الأصلية المكتوبة بواسطة إنسان وقابل للتنفيذ. في حين أن البعض، مثل مؤسسة البرمجيات الحرة (FSF)، يجادلون بأن ملف وسيط "ليس رمز مصدر حقيقي ولا يحسب كشفرة المصدر"،  يجد آخرون أنه من المناسب الرجوع إلى كل ملف بسيط ككود المصدر للخطوات التالية.
_START_SECTION_
نبذة تاريخية
_START_PARAGRAPH_
تم إدخال أول البرامج الخاصة بأجهزة الحاسوب المخزنة في برنامج ثنائي من خلال مفاتيح اللوحة الأمامية للحاسوب. لم تكن الجيل الأول من لغات البرمجة هذه مميزة بين شفرة المصدر ولغة الآلة._NEWLINE_عندما قدمت IBM لأول مرة برنامجًا للعمل مع الأجهزة، تم توفير شفرة المصدر بدون أي رسوم إضافية. في ذلك الوقت، تم تضمين تكلفة تطوير البرامج ودعمها في سعر الجهاز. لعقود من الزمان، قامت IBM بتوزيع كود المصدر مع تراخيص منتجات البرمجيات الخاصة بها، بعد عام 1999._NEWLINE_نشرت معظم مجلات الحاسوب المبكرة شفرة المصدر باعتبارها نوع من البرامج._NEWLINE_من حين لآخر يتم نشر شفرة مصدر لبرامج كبيرة مثل كتاب مقوى مثل أجهزة الحاسوب والتنضيد.
_START_SECTION_
منظمة
_START_PARAGRAPH_
عادةً ما يتم الاحتفاظ بالكود المصدري الذي يشكّل برنامجًا في ملف نصي واحد أو أكثر مخزّنًا على القرص الصلب للحاسوب. عادة يتم ترتيب هذه الملفات بعناية في شجرة الدليل، والمعروفة باسم شجرة المصدر. يمكن أيضًا تخزين شفرة المصدر في قاعدة بيانات (كما هو شائع في الإجراءات المخزنة) أو في أي مكان آخر._NEWLINE_Java مثال على تعليمات البرمجية الأكثر تعقيدًا. مكتوب في نمط البرمجة الشيئية، فإنه يدل على التعليمات البرمجية الأساسية. مع تعليقات مقدمة محددة باللون الأحمر، تشير التعليقات المضمنة باللون الأخضر، وبيانات البرنامج المشار إليها باللون الأزرق. قد يتم تضمين شفرة المصدر لجزء معين من البرنامج في ملف واحد أو العديد من الملفات. على الرغم من أن هذه الممارسة غير شائعة، يمكن كتابة شفرة مصدر البرنامج بلغات برمجة مختلفة. _NEWLINE_على سبيل المثال، قد يحتوي البرنامج المكتوب بشكل أساسي على لغة برمجة C على أجزاء مكتوبة بلغة التجميع لأغراض التحسين. من الممكن أيضًا أن يتم كتابة وتجميع بعض مكونات برنامج ما على حدة، بلغة برمجة عشوائية، ثم يتم دمجها لاحقًا في البرنامج باستخدام تقنية تسمى ربط المكتبة. في بعض اللغات، مثل جافا، يمكن القيام بذلك في وقت التنفيذ (يتم تصنيف كل فئة في ملف منفصل مرتبط بواسطة المترجم في وقت التشغيل)._NEWLINE_هناك طريقة أخرى تتمثل في جعل البرنامج الرئيسي مترجمًا للغة برمجة، إما مصمم خصيصًا للتطبيق المعني أو للأغراض العامة، ثم اكتب الجزء الأكبر من وظائف المستخدم الفعلية مثل وحدات الماكرو أو أشكال أخرى من الإضافة في هذه اللغة، وهو نهج أخذ على سبيل المثال من قبل محرر نص  جنو ايماكس._NEWLINE_إن القاعدة الأساسية لمشروع برمجة الحاسوب هي المجموعة الأكبر من جميع التعليمات البرمجية المصدر لجميع برامج الحاسوب التي تشكل المشروع. لقد أصبح ممارسة شائعة للحفاظ على قواعد رمز في أنظمة التحكم في الإصدار. يتطلب البرنامج المعقد باعتدال عادة تجميع أو تجميع عدة، أحيانًا عشرات أو حتى مئات، من ملفات شفرة المصدر المختلفة. في هذه الحالات، يتم تضمين تعليمات التجميعات، مثل صنع الملف، مع شفرة المصدر. هذه تصف علاقات البرمجة بين ملفات التعليمات البرمجية المصدر، وتحتوي على معلومات حول كيفية تجميعها._NEWLINE_نظام التحكم في المراجعة هي أداة أخرى يتم استخدامها بشكل متكرر من قبل المطورين لصيانة التعليمات البرمجية المصدر
_START_SECTION_
المقاصد
_START_PARAGRAPH_
تستخدم شفرة المصدر بشكل أساسي كمدخل في العملية التي تنتج برنامجًا قابلاً للتنفيذ (بمعنى أنه يتم تجميعه أو تفسيره). كما يتم استخدامه كطريقة لتوصيل الخوارزميات بين الأشخاص (على سبيل المثال، مقتطفات الشفرة في الكتب).  غالبًا ما يجد مبرمجي الحاسوب أنه من المفيد مراجعة شفرة المصدر الحالية للتعرف على تقنيات البرمجة. _NEWLINE_وكثيرا ما يتم مشاركة شفرة المصدر بين المطورين كعامل يساهم في نضوج مهاراتهم في البرمجة.  بعض الناس يعتبرون شفرة المصدر وسيلة فنية معبرة._NEWLINE_عادةً ما يكون نقل البرامج إلى منصات الحاسوب الأخرى أمرًا صعبًا دون الحاجة إلى شفرة المصدر. بدون الشفرة المصدرية لجزء معين من البرامج، تكون قابلية الحمل مكلفة بشكل عام باستخدام الحاسوب. [بحاجة لمصدر] تشتمل خيارات النقل المحتملة على ترجمة ثنائية ومضاهاة للنظام الأساسي الأصلي._NEWLINE_يمكن استخدام إلغاء ترجمة برنامج قابل للتنفيذ لإنشاء شفرة المصدر، إما في لغة التجميع أو بلغة عالية المستوى._NEWLINE_يقوم المبرمجون بشكل متكرر بتعديل شفرة المصدر من قطعة واحدة من البرامج لاستخدامها في مشاريع أخرى، وهو مفهوم يعرف باسم إعادة استخدام البرامج.
_START_SECTION_
الجوانب القانونية
_START_PARAGRAPH_
انظر أيضًا: تاريخ البرمجيات الحرة والمفتوحة المصدر_NEWLINE_يختلف الوضع في جميع أنحاء العالم، ولكن في الولايات المتحدة قبل عام 1974، لم تكن البرمجيات وشفرة المصدر محمية بحقوق التأليف والنشر، وبالتالي دائمًا برامج المجال العام._NEWLINE_في عام 1974، قررت اللجنة الأمريكية للاستخدامات التكنولوجية الحديثة للأعمال المحمية بحقوق الطبع والنشر (CONTU) أن "برامج الحاسوب، إلى الحد الذي تجسد فيه الخلق الأصلي للمؤلف، هي موضوع مناسب لحقوق النشر"._NEWLINE_في عام 1983 في قضية المحكمة الأمريكية أبل ضد فرانكلين حكمت أن الشيء نفسه ينطبق على رمز الكائن. وأن قانون حق المؤلف أعطى برامج الحاسوب حالة حقوق التأليف والنشر للأعمال الأدبية._NEWLINE_في عام 1999، في قضية الولايات المتحدة في قضية بيرنشتاين ضد الولايات المتحدة، قضت المحكمة كذلك بأن قانون المصدر يمكن اعتباره شكلاً من أشكال حرية التعبير المحمية دستوريًا. جادل أنصار حرية التعبير بأنه نظرًا لأن رمز المصدر ينقل المعلومات إلى المبرمجين، مكتوب بلغة، ويمكن استخدامه لمشاركة الفكاهة وغيرها من الأعمال الفنية، فإنه يعد شكلاً محميًا للتواصل.
_START_SECTION_
الترخيص
_START_PARAGRAPH_
المادة الرئيسية: رخصة البرمجيات_NEWLINE_مؤلف العمل غير العادي مثل البرمجيات،  لديه العديد من الحقوق الحصرية، من بينها حقوق النشر الخاصة بالكود المصدري ورمز الكائن.   يمتلك المؤلف الحق وإمكانية منح العملاء ومستخدمي برامجه بعض حقوقه الحصرية في شكل ترخيص البرامج. يمكن ربط البرمجيات ورمز مصدرها المرفق بالعديد من نماذج الترخيص؛ التمييز الأكثر أهمية هو البرمجيات مفتوحة المصدر مقابل البرمجيات الاحتكارية. يتم ذلك عن طريق تضمين إشعار حقوق النشر الذي يعلن شروط الترخيص. إذا لم يتم العثور على أي إخطار، فيعني ذلك أن الافتراضي لجميع الحقوق محفوظة._NEWLINE_وبوجه عام، يكون البرنامج مفتوح المصدر إذا كان رمز المصدر مجانيًا للاستخدام والتوزيع والتعديل والدراسة والملكية إذا كان الكود المصدري سرًا، أو مملوكًا ومقيّدًا بشكل خاص. من أول تراخيص البرامج التي يتم نشرها ومنح هذه الحريات بشكل صريح رخصة جنو العمومية في عام 1989؛ رخصة بي إس دي هي مثال مبكر آخر من عام 1990._NEWLINE_بالنسبة للبرمجيات الاحتكارية، يتم استخدام أحكام مختلف قوانين حقوق النشر والسرية التجارية وبراءات الاختراع لإبقاء رمز المصدر مغلقًا. بالإضافة إلى ذلك، تأتي العديد من برامج البيع بالتجزئة مع اتفاقية ترخيص المستخدم النهائي (EULA) التي تحظر عادة فك أو إلغاء الهندسة أو التحليل أو التعديل أو التحايل على حماية النسخ. تتضمن أنواع الحماية من التعليمات البرمجية المصدر - بخلاف التجميع التقليدي إلى رمز الكائن - تشفير التعليمات البرمجية أو تشويش التعليمات البرمجية أو تشفير الشفرة
_START_SECTION_
الجودة
_START_PARAGRAPH_
المقال الرئيسي: جودة البرمجيات_NEWLINE_يمكن أن يكون للطريقة التي يتم بها كتابة البرنامج عواقب مهمة بالنسبة لمشرفيها. تهدف اتفاقيات الترميز، التي تؤكد على سهولة القراءة وبعض الاتفاقيات الخاصة باللغة، إلى الحفاظ على شفرة مصدر البرنامج، والتي تتضمن تصحيح الأخطاء وتحديثها. الأولويات الأخرى، مثل سرعة تنفيذ البرنامج، أو القدرة على تجميع البرنامج لأبنية متعددة، غالبًا ما تجعل قراءة التعليمات البرمجية ذات أهمية أقل، حيث تعتمد جودة الشفرة بشكل عام على غرضها.