ما هو المحوّل البرمجي؟

امرأة تعمل من المنزل على الكمبيوتر

المؤلفون

Josh Schneider

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

ما هو المحوّل البرمجي؟

المحوّل البرمجي هو نوع من برامج الكمبيوتر التي تحول الرمز البرمجي من لغة برمجة (اللغة المصدر) إلى لغة برمجة أخرى (اللغة الهدف).

تُستخدم المحولات البرمجية لتحويل الرمز البرمجي المصدر عالي المستوى إلى الرمز البرمجي الهدف منخفض المستوى (مثل لغة التجميع أو رمز الكائنات أو رمز الآلة) مع الحفاظ على وظائف البرنامج.

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

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

عندما لا يتوفر المحول البرمجي المثالي، أو لم يكن قد تم بناؤه بعد، يتم استخدام التشغيل التمهيدي لتجميع محول برمجي أكثر استدامة يتم تحسينه بدرجة أكبر من أجل تجميع أي لغة برمجة محددة.

تتضمن قائمة موجزة بالبرامج الأخرى ذات الصلة ما يلي:

  • تعمل برامج فك التحويل البرمجي مثل المحولات البرمجية العكسية وتقوم بتحويل الرمز البرمجي منخفض المستوى إلى لغات عالية المستوى.
  • المحوِّلات البرمجية من مصدر إلى مصدر (أو المحوِّلات) تقوم بتحويل الكود عالي المستوى إلى لغات أخرى عالية المستوى.
  • يقوم معيدو كتابة اللغة بتحويل تعبيرات الرمز البرمجي الرسمية إلى أشكال مختلفة دون تغيير اللغة.
  • تُستخدم المحولات البرمجية للمحولات لصنع محولات برمجية عامة وقابلة لإعادة الاستخدام أو عناصر المحول البرمجي التي يمكن دمجها في أغراض أكثر خصوصية للمشروع.  

أحدث الأخبار التقنية، مدعومة برؤى خبراء

ابقَ على اطلاع دومًا بأهم—اتجاهات المجال وأكثرها إثارة للفضول—بشأن الذكاء الاصطناعي والأتمتة والبيانات وغيرها الكثير مع نشرة Think الإخبارية. راجع بيان الخصوصية لشركة IBM.

شكرًا لك! أنت مشترك.

سيتم تسليم اشتراكك باللغة الإنجليزية. ستجد رابط إلغاء الاشتراك في كل رسالة إخبارية. يمكنك إدارة اشتراكاتك أو إلغاء اشتراكك هنا. راجع بيان خصوصية IBM لمزيد من المعلومات.

كيف تعمل المحوِّلات البرمجية؟

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

تتوفر المحولات البرمجية مفتوحة المصدر مثل GNU Compiler Collection (GCC) - وهي مجموعة محوّلات C قوية تُستخدم عادةً لتحويل الرمز C إلى برامج C - أو البديل Clang على مستودعات مثل GitHub. يمكن تثبيت المحولات البرمجية الأخرى أو شراؤها بحرية من مجموعة واسعة من الموزعين. ويمكن أيضًا دمجها في بيئات التطوير المتكاملة الشائعة (IDEs)، والتي تجمع بين مختلف المرافق لتطوير البرامج، بما في ذلك محررات النصوص ووثائق واجهة برمجة التطبيقات وأدوات تصحيح الأخطاء.     

وبغض النظر عن المحول البرمجي المحدد المستخدم، فإن عملية تحويل الرمز البرمجي تتضمن تمرير الرمز البرمجي المصدر عبر مستويات مختلفة من التحليل والتحسين وفي النهاية توليد الرمز البرمجي. يمر الرمز البرمجي المصدر عبر الطبقات التحليلية المختلفة بالتتابع ويتم تقييمه خلال كل خطوة في العملية.

إذا تعرَّف المحول البرمجي على أيّ مشكلات في الكود المصدر الأصلي، فقد يُظهر رسالة خطأ، ما يدفع المطورين إلى معالجة الأخطاء التي تم تحديدها قبل متابعة تجميع بقية الكود. بشكل عام، تمرّ المحوِّلات البرمجية بالخطوات التالية:

  1. التحليل اللغوي: في الخطوة الأولى من التحويل البرمجي يتم تمرير الكود المصدر عبر محلل اللغة الخاص بالمحوِّل البرمجي، وهو برنامج يحوِّل الحروف إلى وحدات لغوية ذات معنى، مثل الكلمات المفتاحية، والمعرِّفات، والمشغِّلات المعروفة. تُعرَف هذه الوحدات بشكل جماعي باسم الرموز المميزة. في هذه الخطوة، يتم بشكل أساسي إعداد الكود المصدر للخطوات التالية عن طريق تحويل العناصر المهمة وذات المعنى من الكود المصدر إلى رمز مميز يمكن للمحوِّل البرمجي التعامل معه. 
  2. التحليل النحوي: الخطوة الثانية في عملية التحويل البرمجي ترسل الرموز المميزة من المعجم إلى المحلل اللغوي للمحول البرمجي. والمحلل اللغوي هو برنامج يتحقق من الرمز البرمجي بحثًا عن الأخطاء النحوية ويضمن أن الرمز البرمجي المصدر يتبع قواعد اللغة المصدر بشكل صحيح. إذا لم يكتشف المحلل اللغوي أي أخطاء أثناء التحليل، فإنه ينشئ تمثيلًا مجردًا لبنية الرمز البرمجي يسمى شجرة بناء الجملة المجردة (AST).
  3. التحليل الدلالي: بعد التحقق من بناء جُمل الرمز البرمجي، يقوم المحول البرمجي بإجراء تحليل دلالي على الرمز البرمجي المُحلّل لاستنتاج الوظيفة المقصودة من الرمز البرمجي المصدر. في هذه الخطوة، يقوم المحول البرمجي بإجراء فحوصات بحثًا عن الأخطاء المنطقية مثل المتغيرات غير المعلنة أو استخدام المشغل غير الصحيح.
  4. التحسين: على الرغم من أن التحسين ليس مطلوبًا بالضرورة لإنتاج رمز برمجي فعال، إلا أن التحسين خطوة اختيارية شائعة في العديد من المحولات البرمجية لتحسين الأداء الكلي للرمز البرمجي المحوّل. يمكن أن يؤدي التحسين إلى تحديد الرمز البرمجي غير الضروري وإزالته وإنتاج برامج أسرع وأكثر كفاءة واستقرارًا، بالإضافة إلى تقصير عملية التصحيح النهائي. 
  5. توليد الرمز البرمجي: في الخطوة الأخيرة من العملية، يقوم المحول البرمجي بتحويل AST إلى رمز برمجي يمكن قراءته آليًا. الناتج النهائي لإنشاء الرمز البرمجي هو رمز لغة تجميعي والذي يمكن بعد ذلك تحويله إلى رمز ثنائي وتنفيذه بواسطة نظام الكمبيوتر. 
أكاديمية الذكاء الاصطناعي

تحقيق جاهزية الذكاء الاصطناعي باستخدام التنقية السحابية الهجينة

وقد صُمم المنهج، الذي يقوده كبار قادة الفكر لدى IBM، لمساعدة قادة الأعمال على اكتساب المعرفة اللازمة لتحديد أولويات استثمارات الذكاء الاصطناعي التي يمكن أن تدفع عجلة النمو.

هيكل محوِّل برمجي مكوَّن من ثلاث مراحل

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

يُتيح هذا الهيكل المكوَّن من ثلاث مراحل للمحوِّلات البرمجية اتِّباع نهج معياري. ويُتيح ذلك دمج واجهات أمامية متعددة للغات مختلفة مع واجهات خلفية لوحدات معالجة مركزية مختلفة، مع الاستفادة في الوقت نفسه من قدرات التحسين الخاصة بمختلَف الواجهات الوسطى القابلة للتطبيق.

تستلزم المراحل الثلاث للمحول البرمجي التوزيع التالي:

  1. الواجهة الأمامية: تتضمن الواجهة الأمامية للمحوّل البرمجي جوانب التحليل المعجمي والتحليل النحوي والتحليل الدلالي. تقوم هذه المرحلة بالتحقق من بناء الجملة والدلالات وفقًا لقواعد اللغة المصدر، ويمكنها الوقوف على الأخطاء في الرمز البرمجي المصدر وتحديدها بدقة. بافتراض عدم وجود أخطاء، تقوم الواجهة الأمامية للمحوّل البرمجي بتحويل الرمز البرمجي المصدر إلى تمثيل وسيط (IR) - وهو تحويل مؤقت من المستوى الأدنى للرمز البرمجي المصدر إلى الواجهة الوسطى. 
  2. الواجهة الوسطى: تقوم مرحلة الواجهة الوسطى من المحول البرمجي بتنفيذ العديد من التحسينات البرمجية على التمثيل الوسيط بشكل مستقل عن بنية وحدة المعالجة المركزية التي تستهدفها عملية التحويل البرمجي الشاملة. من خلال تفعيل التحسينات على الرمز البرمجي المصدر بشكل مستقل عن رمز الآلة الهدف، يمكن للمحول البرمجي تطبيق تحسينات معممة يمكنها تحسين الأداء عبر إصدارات متعددة. يمكن إجراء هذه التحسينات بغض النظر عن اللغة المدعومة المحددة أو بنية الأجهزة. 
  3. الواجهة الخلفية: تستخدم مرحلة الواجهة الخلفية مخرجات مرحلة الواجهة الوسطى وقد تقوم بإجراء تحسينات وتحويلات أخرى خاصة بوحدة المعالجة المركزية. في هذه المرحلة الأخيرة من عملية التحويل البرمجي، يقوم المحول البرمجي بإخراج رمز التجميع المعتمد على الهدف، بما في ذلك تخصيصات السجل وجدولة التعليمات. عادةً ما تؤدي مرحلة الواجهة الخلفية إلى تكوين رمز آلة خاصة بالأجهزة وأنظمة التشغيل الهدف. 

فوائد استخدام المحول البرمجي

رغم أن المحوِّلات البرمجية ليست ضرورية بشكل صريح لإنتاج كود قابل للتنفيذ، إلا أن التنوع الكبير وتعقيد لغات البرمجة وبيئات الأجهزة يجعلها ضرورة عملية لإنشاء برامج قابلة للتنفيذ. وهذه هي الفوائد الأربع الرئيسية لاستخدام المحوِّلات البرمجية للبرمجيات.

تسهيل البرمجة باستخدام لغة عالية المستوى

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

تتضمن بعض الأمثلة على اللغات عالية المستوى اللغات التالية:

  • Python (تُستخدَم في تطوير الويب، وعلوم البيانات، وغيرها).
  • Java (تُستخدَم في تطوير تطبيقات Android، والتطبيقات المؤسسية، وغيرها).
  • C++ (تستخدم في تطوير الألعاب وأنظمة التشغيل وغيرها)
  • JavaScript (تستخدم لتطوير الويب الديناميكي والتفاعلي)
  • PHP (تستخدم للبرمجة النصية من جانب الخادم في تطوير الويب)
  • C# (تستخدم لتطبيقات Windows وتطوير ألعاب محرك Unity)
تقليل التكرار

تساعد المحوِّلات البرمجية على تحسين الكفاءة من خلال تحويل الكود عالي المستوى إلى كود تنفيذي يمكن للآلة تشغيله. يتم تخزين مخرجات المحوِّل البرمجي بملف بامتداد .exe، والذي يتم تنفيذه بعد ذلك مباشرةً بواسطة جهاز كمبيوتر. وباستخدام المحوِّل البرمجي، تصبح كتابة برنامج قابل للتنفيذ مهمة تتطلب جهدًا لمرة واحدة.

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

تحسين قابلية النقل

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

تعزيز التحسين الشامل

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

المحولات البرمجية مقابل المحوّلات البرمجية الفورية

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

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

من الناحية النظرية، يمكن تنفيذ أي لغة برمجة إما باستخدام محوّل برمجي أو محوّل برمجي فوري. ومع ذلك، تميل لغات البرمجة الفردية إلى أن تكون أكثر ملاءمة للتحويل البرمجي أو التحويل البرمجي الفوري.

من الناحية العملية، قد يكون التمييز بين لغات المحوّل البرمجي ولغات المحوّل البرمجي الفوري غير واضح في بعض الأحيان - تمامًا مثل التمييز بين المحولات البرمجية والمحوّلات البرمجية الفورية أنفسها - حيث يمكن أن يتميز كلا النوعين من البرامج بميزات متداخلة. في حين أن بعض اللغات يتم تحويلها بشكل أكثر شيوعاً وبعضها يتم تحويلها فوريًا بشكل أكثر شيوعاً، فمن الممكن كتابة محول برمجي للغة يتم تحويلها فوريًا في أغلب الأحيان والعكس صحيح.

عادةً ما يتم إنشاء اللغات عالية المستوى مع وضع أحد نوعي التحويل - إما التحويل البرمجي أو التحويل البرمجي الفوري - في الاعتبار، ولكنها تكون عبارة عن اقتراحات أكثر من كونها قيودًا صارمة. على سبيل المثال، غالبًا ما يشار إلى BASIC على أنها لغة يتم تحويلها فوريًا و C لغة يتم تحويلها برمجيًا، ولكن توجد محولات برمجية للغة BASIC تمامًا كما توجد محولات برمجية فورية للغة C. 

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

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

وبالتالي، لا يمكن للتفسير أن يحل محل التحويل البرمجي بالكامل، لكنه يمكن أن ينقل مهامه إلى الخلفية عبر عملية تحويل تدريجية. تستخدِم المحوِّلات البرمجية استراتيجية التحويل المسبق (AOT) التي تقوم بتحويل الكود المصدر إلى الكود الهدف بالكامل قبل إنشاء ملف قابل للتنفيذ.

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

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

ومع ذلك، ومع ازدياد التوجهات الحديثة نحو التحويل البرمجي الفوري (JIT) إلى جانب تفسير البايت كود حسب الحالة، يتم تصميم العديد من المحوِّلات البرمجية لتوفير ميزات التحويل البرمجي والتفسير معًا. ويؤدي هذا التداخل إلى المزيد من طمس الخطوط الفاصلة بين الفئتين. 

حلول ذات صلة
IBM Cloud Infrastructure Center 

يُعَد IBM Cloud Infrastructure Center منصة برمجية متوافقة مع OpenStack، تتيح إدارة البنية التحتية للسحابات الخاصة على أنظمة IBM zSystems و IBM LinuxONE.

استكشف Cloud Infrastructure Center
حلول البنية التحتية لتقنية المعلومات

استكشف الخوادم ووحدات التخزين والبرامج المصممة لتعزيز استراتيجية مؤسستك في البيئة السحابية الهجينة والذكاء الاصطناعي.

استكشف حلول البنية التحتية لتقنية المعلومات
حلول البنية التحتية السحابية

العثور على حل البنية التحتية السحابية الذي يلبي احتياجات أعمالك وتوسيع نطاق الموارد عند الطلب.

حلول السحابة
اتخِذ الخطوة التالية

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

استكشف حلول البنية التحتية لتقنية المعلومات تنزيل الكتاب الإلكتروني