freeCodeCamp/guide/arabic/computer-science/compilers/index.md

5.6 KiB

title localeTitle
Compilers المجمعين

المجمعين

برمجة

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

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

فمثلا،

ADD 10, 20 // ADD is the Opcode // and 10, 20 are the two operands(data) // needed for the ADD instruction to be executed successfully

يطور البشر برامج لحل المشكلات المعقدة. بالنظر إلى كيفية عمل رموز التشغيل البسيطة ، إذا حاولنا تطوير برامج باستخدام opcodes وحده ، فسيكون ذلك مرهقًا للغاية ويصعب تصحيحه. لحل هذه المشكلة ، تم تطوير لغات عالية المستوى مثل C / C ++ و Python و Java و Javascript وغيرها.

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

[HUMANS] -> [برامج اللغة ذات المستوى المرتفع] -> [Translator] -> [Machine Machine] -> [Computer]

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

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

أجزاء من المجمع

ينقسم معظم المترجمين إلى ثلاث مراحل أساسية: التحليل ، التحويل ، وتوليد الكود

  1. يأخذ التحليل رمزًا أوليًا وتحويله إلى تمثيل أكثر تجريدًا للرمز.
  2. يأخذ التحول هذا التمثيل المجرد ويتلاعب بالقيام بكل ما يريده المجمع.
  3. يأخذ Code Generation التمثيل المحوّل للرمز ويحوله إلى كود جديد.

توزيع

عادة ما يتم تحليل التحليل إلى مرحلتين: التحليل المعجمى والتحليل النحوى .

يأخذ Lexical Analysis الشفرة الأولية وينقسمها إلى هذه الأشياء التي يطلق عليها الرموز المميزة بشيء يسمى tokenizer (أو lexer).

Tokens are an array of tiny little objects that describe an isolated piece of the syntax. They could be numbers, labels, punctuation, operators, etc.

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

An Abstract Syntax Tree, or AST for short, is a deeply nested object. It represents code in a way that is both easy to work with and tells us a lot of information.

تحويل

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

رمز الجيل

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

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

معلومات اكثر:

ويغطي مات أديتانيا "مقدمة ألطف في البرمجة" المترجمين مقابل المترجمين الفوريين ، إلى جانب مفاهيم البرمجة الأساسية الأخرى.