السلام عليكم ورحمة الله تعالى وبركاته
لاحظت ان هناك خلط فى معانى بعض الكلمات, وهناك من لايعرف وظيفة الكمبايلر ويخلط بين الكمبايلر (المترجم) وبين الـIDE (بيئة التطوير).
كما ان هناك من لا يعرف وظيفة الlinker والفرق بين الكمبايلر والlinker الخ, لذلك اردت وضع الحروف على النقاط وتوضيح ما يحدث عند إنشاء ملف تنفيذى..
نبداء اولاُ بشرح الـIDE, وهى إختصار لكلمة Integrated Development Environment وتعنى بيئة تطوير مدمجه, وبالدمج يقصد دمجها معى المترجم(compiler) , وبرنامج الدمج (linker) . وفى اغلب الاحيان يوجد ايضاً resource editor و resource compiler مدمجه بداخل الـIDE.
لذلك تعتبر بيئة التطوير من الرفاهيات, تخفى عن المبرمج ما يحدث خلف الكواليس, فالمبرمج يستطيع كتابة البرنامج فى محرر نصوص ومن ثم يقوم بعملية الترجمة والدمج من خلال سطر الاوامر او ما يسمى بالعاميه الصفحة السوداء (console) . رغم ان الـIDE سهل على المبرمج وجعل عملية الترجمة والدمج تصبح مجرد إختيار كلمه من قائمه إلا ان التسهيل تسبب فى عملية الخلط وجعل المبرمج لا يعرف ما الذى يحدث فى الخفاء..
الـresource editor ايضاً تعتبر من الكماليات, عندما يقوم المبرمج بوضع زر فى نافذه او يختار ان يضع قائمة منسدله او اى كائن يضعه فى النافذه التى يقوم بإنشائها يقوم الـresource editor بتحويل هذه الكائنات إلى نص, وبذلك يستطيع المبرمج كتابة النصوص فى برنامج تحرير نصوص عادى مثل الـnotepad على سبيل المثال.
بعد ان ينتهى المبرمج من إنشاء ملف الشفره (code) وملف الـresource يتم تحويل هذه الملفات إلى ملفات object وهناك 3 انواع مشهوره فى بيئة الوندوز. ويرمز لها على النحو التالى:
coff وهى إختصار لكلمة Common Object File Format وتستخدم على نطاق واسع فى بيئة الوندوز وهى من إصدار شركة مايكروسفت.
omf وهى إختصار لكلمة Object Module Format وهى من إصدار شركة بورلاند وتستخدم ايضاً فى الوندوز واللينكس بواسطة دلفى.
.res وهى إختصار لكمة resource وتستخدم فى بيئة الوندوز ومتفق عليها من قبل جميع الشركات..
لإنشاء ملف object ليس من الضرورى ان تكون جميع المتغيرات او الدوال موجوده فى نفس الملف, عليك فقط ان تنبة المترجم ان المتغير موجود فى ملف اخر وسيتم إحضاره فى مرحلة الدمج (link) وبذلك تستطيع ان تضع متغيرات او دوال موجوده فى مكتبات خارجيه, وكل ما عليك عمله هو ان تذكر للمترجم كلمة external حتى لا يتوقف عن الترجمه, كذلك عندما تقوم بعمل ملف resource منفصل عن ملف الشفره المترجم لايقوم بإلإعتراض عليها..
اخر خطوه هى عملية الدمج وفى هذه العمليه يتم التحقق من وجود جميع المتغيرات, فعندما تدمج ملف resource معى ملف شفرة البرنامج يقوم برنامج الدمج بالمرور على جميع الدوال والمتغيرات فى الموجوده فى الملفات التى تحاول دمجها وإذا لم يجد البرنامج احد هذه المتغيرات يحتج برسالة خطاء وتسمى خطاء دمج او linking error , وهذا النوع من الخطاء يقع فيه المبتدء والمحترف على حد سواء..
وضعت هذه المشاركه فى قسم المقالات لانه موضوع مهم وهذا القسم يزوره اغلب رواد المنتدى, وإذا كان هناك اي إضافات فانا ارحب بها, كذلك إذا كان هناك اى إستفسار ايضاً.
والسلام عليكم



