المحوّل البرمجي هو نوع من برامج الكمبيوتر التي تحول الرمز البرمجي من لغة برمجة (اللغة المصدر) إلى لغة برمجة أخرى (اللغة الهدف).
تُستخدم المحولات البرمجية لتحويل الرمز البرمجي المصدر عالي المستوى إلى الرمز البرمجي الهدف منخفض المستوى (مثل لغة التجميع أو رمز الكائنات أو رمز الآلة) مع الحفاظ على وظائف البرنامج.
باعتبارها أداة مهمة للبرمجة الحاسوبية الحديثة والعملية، تمكّن المحولات البرمجية المبرمجين من العمل في رمز برمجي عالي المستوى يمكن للبشر قراءته ثم تحويل الرمز المصدر إلى رمز هدف قابل للتنفيذ. تساعد المحولات البرمجية أيضًا مطوري البرامج على إنشاء برامج قابلة للتنفيذ فعالة مع تحسين الأمان والاستقرار وقابلية النقل. ذلك لأن المحولات البرمجية تساعد في تحديد الأخطاء ومعالجتها، وبالتالي إنشاء تطبيقات قابلة للتنفيذ والنقل.
رغم أن جميع المحوِّلات البرمجية تحوِّل الكود عالي المستوى إلى كود منخفض المستوى قابل للتنفيذ، فإنه يتم استخدام أنواع مختلفة منها بحسب لغة البرمجة ونوع التطبيق. على سبيل المثال، يتم استخدام المحوِّل البرمجي المتقاطع لإنتاج كود لوحدة معالجة مركزية أو نظام تشغيل مختلف عن النظام الذي يعمل عليه حاليًا.
عندما لا يتوفر المحول البرمجي المثالي، أو لم يكن قد تم بناؤه بعد، يتم استخدام التشغيل التمهيدي لتجميع محول برمجي أكثر استدامة يتم تحسينه بدرجة أكبر من أجل تجميع أي لغة برمجة محددة.
تتضمن قائمة موجزة بالبرامج الأخرى ذات الصلة ما يلي:
النشرة الإخبارية الخاصة بالمجال
ابقَ على اطلاع دومًا بأهم—اتجاهات المجال وأكثرها إثارة للفضول—بشأن الذكاء الاصطناعي والأتمتة والبيانات وغيرها الكثير مع نشرة Think الإخبارية. راجع بيان الخصوصية لشركة IBM.
سيتم تسليم اشتراكك باللغة الإنجليزية. ستجد رابط إلغاء الاشتراك في كل رسالة إخبارية. يمكنك إدارة اشتراكاتك أو إلغاء اشتراكك هنا. راجع بيان خصوصية IBM لمزيد من المعلومات.
في الممارسة العملية، يمكن أن يكون استخدام المحوّل البرمجي بسيطًا مثل إدخال أمر في سطر الأوامر في أي نظام Linux (أو ما يعادله)، وتحديد ملف المحوّل البرمجي القابل للتنفيذ والملفات المصدر المطلوب تحويلها. يوجّه هذا الأمر النظام إلى معالجة الرمز المصدر، وتحويله إلى رمز آلة هدف وإنتاج ملفات الكائنات المطلوبة لإنتاج برنامج قابل للتنفيذ.
تتوفر المحولات البرمجية مفتوحة المصدر مثل GNU Compiler Collection (GCC) - وهي مجموعة محوّلات C قوية تُستخدم عادةً لتحويل الرمز C إلى برامج C - أو البديل Clang على مستودعات مثل GitHub. يمكن تثبيت المحولات البرمجية الأخرى أو شراؤها بحرية من مجموعة واسعة من الموزعين. ويمكن أيضًا دمجها في بيئات التطوير المتكاملة الشائعة (IDEs)، والتي تجمع بين مختلف المرافق لتطوير البرامج، بما في ذلك محررات النصوص ووثائق واجهة برمجة التطبيقات وأدوات تصحيح الأخطاء.
وبغض النظر عن المحول البرمجي المحدد المستخدم، فإن عملية تحويل الرمز البرمجي تتضمن تمرير الرمز البرمجي المصدر عبر مستويات مختلفة من التحليل والتحسين وفي النهاية توليد الرمز البرمجي. يمر الرمز البرمجي المصدر عبر الطبقات التحليلية المختلفة بالتتابع ويتم تقييمه خلال كل خطوة في العملية.
إذا تعرَّف المحول البرمجي على أيّ مشكلات في الكود المصدر الأصلي، فقد يُظهر رسالة خطأ، ما يدفع المطورين إلى معالجة الأخطاء التي تم تحديدها قبل متابعة تجميع بقية الكود. بشكل عام، تمرّ المحوِّلات البرمجية بالخطوات التالية:
قد لا تلتزم بعض المحولات البرمجية بشكل صارم بالبنية السابقة. ومع ذلك، في حين أن بعض المحولات البرمجية قد تحتوي على خطوات أكثر أو أقل، يمكن أن تعزى جميع مراحل التحويل إلى واحدة من ثلاث مراحل: الواجهة الأمامية والواجهة الوسطى والواجهة الخلفية.
يُتيح هذا الهيكل المكوَّن من ثلاث مراحل للمحوِّلات البرمجية اتِّباع نهج معياري. ويُتيح ذلك دمج واجهات أمامية متعددة للغات مختلفة مع واجهات خلفية لوحدات معالجة مركزية مختلفة، مع الاستفادة في الوقت نفسه من قدرات التحسين الخاصة بمختلَف الواجهات الوسطى القابلة للتطبيق.
تستلزم المراحل الثلاث للمحول البرمجي التوزيع التالي:
رغم أن المحوِّلات البرمجية ليست ضرورية بشكل صريح لإنتاج كود قابل للتنفيذ، إلا أن التنوع الكبير وتعقيد لغات البرمجة وبيئات الأجهزة يجعلها ضرورة عملية لإنشاء برامج قابلة للتنفيذ. وهذه هي الفوائد الأربع الرئيسية لاستخدام المحوِّلات البرمجية للبرمجيات.
تستخدم لغات البرمجة عالية المستوى بناء الجملة والكلمات الرئيسية الأقرب إلى اللغات المنطوقة، مما يسهل على المطورين استخدامها. تقوم المحولات البرمجية بتحويل هذا الرمز البرمجي الذي يمكن للإنسان قراءته إلى رمز الآلة الأكثر تعقيداً اللازم لتشغيل تطبيقات البرامج المحسنة.
تتضمن بعض الأمثلة على اللغات عالية المستوى اللغات التالية:
تساعد المحوِّلات البرمجية على تحسين الكفاءة من خلال تحويل الكود عالي المستوى إلى كود تنفيذي يمكن للآلة تشغيله. يتم تخزين مخرجات المحوِّل البرمجي بملف بامتداد .exe، والذي يتم تنفيذه بعد ذلك مباشرةً بواسطة جهاز كمبيوتر. وباستخدام المحوِّل البرمجي، تصبح كتابة برنامج قابل للتنفيذ مهمة تتطلب جهدًا لمرة واحدة.
بمجرد الاكتمال، يمكن تنفيذ الرمز البرمجي المحوّل عدة مرات حسب الضرورة. وتساعد هذه العملية على تشغيل البرامج بشكل عام بشكل أسرع وأكثر كفاءة، حيث يمكن تنفيذ تطبيقات أو أجزاء معينة من التطبيقات بشكل منفصل عن مهام برامج وقت التشغيل.
لا يمكن لجميع الأنظمة تشغيل جميع أنواع الرموز البرمجية. تستخدم المحولات البرمجية لتحويل أنواع الرموز البرمجية التي يفضل المطورون استخدامها إلى أنواع الرموز البرمجية التي تتطلبها الأنظمة للعمل. وبهذه الطريقة، تعمل المحولات البرمجية على تحسين قابلية نقل البرامج من خلال تحويل البرامج إلى مجموعة واسعة من اللغات المتوافقة التي يمكن تخزينها ونقلها وتنفيذها بسهولة في مختلف أنظمة التشغيل وبنى الأجهزة.
أثناء عملية التحويل البرمجي، يمكن استخدام المحولات البرمجية لتحديد الأخطاء والعيوب البرمجية ومعالجتها، مما يؤدي إلى برامج أكثر استقرارًا وأفضل تحسينًا. يمكن أن تساعد المحولات البرمجية أيضا في تحسين أمان البرامج عن طريق منع الأخطاء المتعلقة بالذاكرة، مثل تجاوز سعة المخزن المؤقت، وإنشاء تحذيرات في حالة اكتشاف مشكلات محتملة في الذاكرة.
بينما تُستخدم المحولات البرمجية لتحويل الرمز البرمجي المصدر إلى رمز برمجي للآلة قابل للتنفيذ، فإن المحوّلات البرمجية الفورية هي نوع آخر من البرامج التي يمكن أن توفر وظائف مماثلة، ولكن من خلال آلية مختلفة.
فبدلاً من تحويل الرمز البرمجي المصدر، تقوم المحوّلات البرمجية الفورية إما بتنفيذ الرمز البرمجي المصدر مباشرةً أو استخدام رمز برمجي وسيط يُعرف باسم كود البايت (bytecode)، وهو تمثيل منخفض المستوى ومستقل عن المنصة للرمز البرمجي المصدر. يعمل كود البايت كوسيط بين الرمز البرمجي المصدر القابل للقراءة من قبل البشر والرمز البرمجي للآلة، وهو مصمم للتنفيذ بواسطة جهاز افتراضي (VM) بدلاً من تنفيذه مباشرة على أجهزة الكمبيوتر.
من الناحية النظرية، يمكن تنفيذ أي لغة برمجة إما باستخدام محوّل برمجي أو محوّل برمجي فوري. ومع ذلك، تميل لغات البرمجة الفردية إلى أن تكون أكثر ملاءمة للتحويل البرمجي أو التحويل البرمجي الفوري.
من الناحية العملية، قد يكون التمييز بين لغات المحوّل البرمجي ولغات المحوّل البرمجي الفوري غير واضح في بعض الأحيان - تمامًا مثل التمييز بين المحولات البرمجية والمحوّلات البرمجية الفورية أنفسها - حيث يمكن أن يتميز كلا النوعين من البرامج بميزات متداخلة. في حين أن بعض اللغات يتم تحويلها بشكل أكثر شيوعاً وبعضها يتم تحويلها فوريًا بشكل أكثر شيوعاً، فمن الممكن كتابة محول برمجي للغة يتم تحويلها فوريًا في أغلب الأحيان والعكس صحيح.
عادةً ما يتم إنشاء اللغات عالية المستوى مع وضع أحد نوعي التحويل - إما التحويل البرمجي أو التحويل البرمجي الفوري - في الاعتبار، ولكنها تكون عبارة عن اقتراحات أكثر من كونها قيودًا صارمة. على سبيل المثال، غالبًا ما يشار إلى BASIC على أنها لغة يتم تحويلها فوريًا و C لغة يتم تحويلها برمجيًا، ولكن توجد محولات برمجية للغة BASIC تمامًا كما توجد محولات برمجية فورية للغة C.
يكمن الاختلاف الأساسي بين المحولات البرمجية الفورية والمحولات البرمجية في التوقيت والتحسين. يحاول كلا النوعين من البرامج تحويل الرمز البرمجي المصدر إلى رمز برمجي هدف يقوم بوظيفته أولاً ثم يتم تحسينه.
اعتمادًا على بيئة التشغيل، قد يكون الرمز البرمجي الذي يخضع للتحويل البرمجي أو التحويل البرمجي الفوري أكثر ملاءمة للتشغيل بكفاءة مع مراعاة قدرات الأجهزة والذاكرة وسعة التخزين. اعتمادًا على قيود أي برنامج أو تطبيق أو جهاز معين، قد يؤدي التحويل البرمجي أو التحويل البرمجي الفوري أو مزيج من الاثنين معًا إلى أفضل النتائج.
وبالتالي، لا يمكن للتفسير أن يحل محل التحويل البرمجي بالكامل، لكنه يمكن أن ينقل مهامه إلى الخلفية عبر عملية تحويل تدريجية. تستخدِم المحوِّلات البرمجية استراتيجية التحويل المسبق (AOT) التي تقوم بتحويل الكود المصدر إلى الكود الهدف بالكامل قبل إنشاء ملف قابل للتنفيذ.
وبدلاً من ذلك، تقوم المحولات البرمجية الفورية إما بتشغيل الرمز مباشرةً كما يتطلب التطبيق أو استخدام كود بايت كوسيط لإخراج الرمز البرمجي المصدر القابل للتنفيذ بواسطة الأجهزة الافتراضية. وبهذه الطريقة، قد توفر المحولات البرمجية الفورية بعض التسريع أو المرونة، ولكن في مرحلة ما، يجب توفير مجموعة من تعليمات الآلة المنفذة مباشرةً بالقرب من نهاية الواجهة الأمامية والخلفية للتنفيذ.
في بعض الحالات، عندما تمثل الكفاءة خفيفة الوزن أولوية، يمكن أن تكون المحولات البرمجية الفورية الخاصة أفضل من المحولات البرمجية لقدرتها على إجراء التحويل في الوقت المناسب (JIT). في الوقت المناسب (JIT) هي استراتيجية تقوم بتحويل أجزاء من الرمز البرمجي المصدر إلى الرمز البرمجي الهدف في مخزن ذاكرة مؤقت للتنفيذ الفوري. تقوم استراتيجية في الوقت المناسب (JIT) بتحويل الرمز البرمجي عند الطلب، والجمع بين كفاءة التحويل لمرة واحدة التي يتميز بها المحول البرمجي التقليدي مع توفير المرونة لتنفيذ الرمز البرمجي بشكل متكرر - غالباً أسرع من المحولات البرمجية الفورية القياسية عبر كود البايت.
ومع ذلك، ومع ازدياد التوجهات الحديثة نحو التحويل البرمجي الفوري (JIT) إلى جانب تفسير البايت كود حسب الحالة، يتم تصميم العديد من المحوِّلات البرمجية لتوفير ميزات التحويل البرمجي والتفسير معًا. ويؤدي هذا التداخل إلى المزيد من طمس الخطوط الفاصلة بين الفئتين.
يُعَد IBM Cloud Infrastructure Center منصة برمجية متوافقة مع OpenStack، تتيح إدارة البنية التحتية للسحابات الخاصة على أنظمة IBM zSystems و IBM LinuxONE.
استكشف الخوادم ووحدات التخزين والبرامج المصممة لتعزيز استراتيجية مؤسستك في البيئة السحابية الهجينة والذكاء الاصطناعي.
العثور على حل البنية التحتية السحابية الذي يلبي احتياجات أعمالك وتوسيع نطاق الموارد عند الطلب.