ما هو الفرق بين Assembler و Compiler وInterpreter؟

 ما هو الفرق بين Assembler و Compiler وInterpreter؟
مقدمة عن المعالجات والمترجمات والمفسرات؟

ال Assembler و Compiler يقع تحت مجموعة من البرامج تسمى المترجمات Translators.
المترجم Translator هو عبارة عن برنامج يقوم بتحويل ملفات الكود "Source Code File " إلى نوع من الملفات الثنائية Binary File. 
و ده الملف اللى بيكون قابل للتنفيذ "Executable File" و ده اللى المعالج بيفهمه و ينفذه 
و الملفات الثنائيه او  ال Binary File.  زى مثلا ملف خط Font File, أو ملف بيانات ثنائية مضغوط Compressed Binary Data File, أو واحدا من مئات الأنواع التانيه من الملفات الثنائية.

مترجمات البرنامج Program Translators هي مترجمات تقوم بتوليد التعليمات Machine Instructions التي يفهمها المعالج. يقوم مترجم البرنامج بقراءة ملف الكود المصدر Source Code File سطرا بسطر, ويكتب ملفا ثنائيا Binary File من التعليمات Machine Instruction التي تنفذ الأحداث التي يشرحها ملف الكود المصدر Source Code File. وهذا الملف الثنائي Binary File يسمى Object Code File.

ماهو المعالج او ال كومبلير Compiler ؟
الـ Compiler هو مترجم Translator يقوم بقراءة ملف الكود المصدر Source Code File المكتوب بلغة عالية المستوى High Level Language مثل C++ و Pascal و يقوم بإنتاج Object Code File.

ماهو المعالج الاسمبلي Assembler ؟
أما الـ Assembler فهو نوع خاص من الـ Compiler. فهو مترجم Translator أيضا يقوم بقراءة ملفات الكود المصدر Source Code Files ويقوم بإنتاج Object Code Files ليتم تنفيذها عن طريق المعالج. والـ Assembler هو مترجم Translator تم تصميمه تحديدا ليقوم بترجمة ما يسمى بـ Assembly Language إلى Object Code. بنفس الطريقة التي يقوم بها الـ Compiler في C++ أو Pascal بترجمة ملف الكود المصدر Source Code File إلى Object Code File. فعملية الترجمة هي نفسها في كلا الحالتين, إلا أن لغة الأسمبلي Assembly Language لها طابع مميز هام يبقيها بعيدة عن الـ Compilers.وهذا النوع يتعامل مع الكود البرمجي منخفض المستوى وا يعرف بكود الالة بعكس الاول الذي يتعامل مع الكود عالي المستوي ويحول الى ملف تفهمه الالة.

ماهو المفسر Interpreter؟
غالبا لغات البرمجة تحتوي على مترجم ومفسر فلغة السي شارب تحتوي على المفسر والمترجم معا .سي بلس بلس لا تحتوي على مفسر. المفسر يستخدم لاقتناص وتتبع الاخطاء البرمجية من قبل مقتنص الاخطاء Debugger فهو لا ينتج أي كود برمجي او ملف. هناك برامج كثيرة بها مفسرات ولا تحتوي على معالجات ومن اشهرها مستعرضات الويب الاكسبلورر يحتوي على مفسر يقوم بتفسير أكواد ال هتمل HTML الي رسومات وأدوات مثل زر أو مربع نصي ولذلك لا تعتبر هتمل HTML لغة برمجية لانه لا توجد لها لغة تقوم بعملية معالجة أكوادها ولكن توجد برامج تقوم بتفسير الأكواد

المُهتم بدراسة الـ compilers اسمه Compilers Construction بناء المترجمات , ويندرج تحت تخصص علوم الحاسب .

الـ compilers بحد ذاتها هي "برامج" يتم برمجتها بأي لغة وأهم وظائفها هو إكتشاف الأخطاء بالـ source code .

مفهوم الـcompiler مرتبط مع المبرمجين بتحويل الـsource code للـmachine code فقط ! والصح أن الـCompiler يترجم من لغة لأي لغة اخرى .
مثلًا فيه compilers خاصة بالتحويل من لغة java للغة C# .. وهكذا، يعني عمل الـcompiler غير محصور بالتحويل للـmachine code فقط ..
الـCompiler يندرج تحت مفهوم الـlanguage processor "مُعالجات اللغة"ومعناه البرامج اللي تقوم بمعالجة الاكواد (اكتشاف اخطاء مثلا) .

الـ Compiler اللي يقدم خدمة التحويل من لغة للغة اخرى (مثلًا من جافا للغة سي) يسمى : source-to-source translator .

الـCompiler يتميّز بسرعته في تصدير او إنشاء الـ target program .

الـCompiler في تعامله مع الكود له نظرتين او حالتين، حالة الـsyntax، وفي حالة الـsemantic .

الـsyntax معناها مدى توافق الكود مع القواعد التي تم تعريفها للغة (هيكلة البناء) مثلًا لو نسيت أكتب ; حيطلع خطأ

يعني في الجزء هذا يكتشف الأخطاء المرتبطة بالـ syntax فقط !

الـsemantic: تهتم بالمعنى الخاص بالكود، مثلًا اذا قرأ كلمة while سيفم إن اللي بعدها loop، وهكذا، فيهتم بتصحيح المعنى

من الأشياء التي لا يتعامل معها الـCompiler
١- الفراغات
٢-التعليقات
٣-الأكواد الخاصة بمكتبات اللغة .
كل هذا يتجاهله ..

Interpreter: يعمل execute لبعض الاوامر في الكود(يتم تحديدها من المستخدم)، او كأنه يمشي على الكود سطر سطر ويعرض الـoutput

بعض اللغات تستخدم Compiler وبعض منها يستخدم Interpreter، لكن لغة الجافا تستخدم كل النوعين وهذا إيجابي في الجافا

و تسمى هذه العملية Hybrid compiler

تعليقات

اخر ما وصلنا اليه