البايت 90 بالنظام السداسيّ عشر هو تعليمةٌ كاملة في معالجات Intel وAMD. ويقول دليل Intel إنّ معناها «لا تفعل شيئًا»، تعليمةٌ من بايتٍ واحد اسمها NOP في لغة التجميع.[1] والبايتان 04 05 يعنيان: أضف 5 إلى السجلّ AL. هذه هي اللغة الوحيدة التي يفهمها المعالج، أرقامٌ متلاصقة بلا مسافاتٍ ولا كلمات. فكيف يتحوّل ما يكتبه مبرمجٌ بشريّ إلى هذه الأرقام، ثمّ إلى برنامجٍ يعمل أمامك؟
رأيت في مقال البرمجيّات أنّ البرنامج تعليماتٌ وبياناتٌ في ملفّات. وفي هذا المقال تتبع تلك التعليمات من لحظة كتابتها إلى لحظة تنفيذها. سترى اللغات التي يكتب بها المبرمجون، والأدوات التي تترجمها، وما يحدث بين نقرتك على الأيقونة وظهور النافذة. ثمّ تعرف لماذا ينهار البرنامج أحيانًا، وما الذي تغيّر في هذا كلّه حتّى أكتوبر 2026.
لغة الآلة: ما يفهمه المعالج وحده
كلّ معالجٍ يأتي بمجموعة تعليماتٍ محدّدة، كما رأيت في دليل المعالج، ولكلّ تعليمةٍ رقمها. فمعالجات x86 في حواسيب Windows لها مجموعتها، ومعالجات ARM في الهواتف وأجهزة Mac الحديثة لها مجموعةٌ أخرى. وهذا أوّل سببٍ يمنع البرنامج المبنيّ لمعالجٍ من العمل على معالجٍ آخر دون ترجمة.
ولهذا ترى في مواقع التنزيل أحيانًا نسختين من البرنامج نفسه، واحدةً لمعالجات x86 وأخرى لمعالجات ARM. والشيفرة المصدريّة واحدة في الحالتين، وما يختلف هو الترجمة: المطوّر يمرّر الشيفرة نفسها على المترجم مرّتين، مرّةً لكلّ مجموعة تعليمات، فيخرج ملفّان لا يفهم أحدهما معالج الآخر.
والمعالج ينفّذ هذه التعليمات في دورةٍ لا تتوقّف، رأيتها في مقال كيف يعمل الحاسوب. يجلب التعليمة التالية من الذاكرة، ثمّ يفكّ رموزها ليعرف ما المطلوب، ثمّ ينفّذها، ثمّ ينتقل إلى التي بعدها. وكلّ ما يفعله برنامجٌ ضخم، من عرض صورةٍ إلى تشغيل لعبة، ينتهي إلى مليارات الدورات من هذا النوع في كلّ ثانية.
ولو كتب المبرمجون بهذه الأرقام مباشرة لما كتبوا إلّا القليل. فظهرت أوّلًا لغة التجميع، التي تعطي كلّ رقمٍ اسمًا قصيرًا يحفظه الإنسان: ADD للجمع، وMOV للنقل، وNOP لتعليمة الانتظار. وبرنامجٌ صغير اسمه المجمِّع يحوّل هذه الأسماء إلى أرقامها، كالمجمِّع as في مشروع GNU الذي صدر إصداره 2.47 من دليله.[2] لكنّ لغة التجميع بقيت مربوطةً بمعالجٍ واحد، وسطرٌ واحد فيها لا يفعل إلّا خطوةً صغيرة.
سطرٌ واحد من البداية إلى النهاية
لنأخذ مثالًا صغيرًا. يكتب مبرمجٌ بلغة C السطر int x = 2 + 3;، أي: أنشئ متغيّرًا اسمه x، وضع فيه حاصل جمع 2 و3. والمترجم الذكيّ يلاحظ أنّ الجواب معروفٌ قبل التشغيل، فيحسبه بنفسه ويكتفي بتعليمةٍ واحدة تضع العدد 5 في سجلٍّ من سجلّات المعالج. وتكتب هذه التعليمة بلغة التجميع على صورة mov eax, 5.
ثمّ تتحوّل إلى أرقام. فجدول Intel يقول إنّ تعليمة نقل عددٍ من 32 بت إلى سجلّ تبدأ بالبايت B8 ثمّ يتبعها العدد نفسه،[1] فيصير السطر كلّه خمسة بايتات: B8 05 00 00 00. والعدد مكتوبٌ هنا بالترتيب المقلوب، البايت الأصغر أوّلًا، كما تفعل معالجات x86 دائمًا. فهذه البايتات الخمسة هي كلّ ما سيراه المعالج من سطر المبرمج، ولا أثر فيها لاسم المتغيّر ولا لعلامة الجمع.

اللغات التي يكتبها البشر
في 1952 طوّرت Grace Hopper أوّل مترجمٍ باسم A-0، يحوّل شيفرةً رياضيّة إلى شيفرةٍ تفهمها الآلة، بحسب سيرتها المنشورة في جامعة Yale الأمريكيّة.[3] ثمّ جاءت الخطوة الكبرى في 1957، حين أطلقت IBM لغة FORTRAN، اختصار «مترجم الصيغ الرياضيّة»، بعد عملٍ بدأه فريق John Backus في 1954. وتقول IBM إنّ الهدف كان أن يكتب العلماء مسائلهم دون أن يعتمدوا على مبرمجٍ يترجم حاجتهم إلى لغة الآلة.[4]

ومن هنا بدأ ما يسمّيه المبرمجون سلّم التجريد. ففي اللغة عالية المستوى تكتب سطرًا مثل «المجموع يساوي السعر ضرب الكمّيّة»، والمترجم يحوّله إلى عشرات التعليمات الصغيرة التي تحمّل القيم وتضربها وتخزّن الناتج في مكانه من الذاكرة. وكلّما ارتفعت اللغة عن الآلة، صارت كتابتها أسهل وأسرع، وصار البرنامج نفسه قابلًا للعمل على معالجاتٍ مختلفة بعد ترجمته لكلٍّ منها. والثمن أنّ المبرمج يبتعد عمّا يحدث فعلًا داخل المعالج، فيصعب عليه أحيانًا أن يعرف لماذا صار برنامجه بطيئًا.
واليوم مئات اللغات. ويضع مؤشّر TIOBE في سبتمبر 2026 لغة Python في المرتبة الأولى، تليها C ثمّ C++.[5] ولكلّ لغةٍ طريقتها في الوصول إلى المعالج، وهنا يبدأ الفرق المهمّ.
الطريق الأوّل: المترجم
المترجم برنامجٌ يقرأ الشيفرة المصدريّة كلّها، ويحوّلها مرّةً واحدة إلى لغة الآلة، قبل أن يصل البرنامج إليك. وأشهر المترجمات في العالم المفتوح مجموعة GCC، التي تقول صفحتها إنّها تضمّ واجهاتٍ للغات C وC++ وFortran وAda وGo وRust وغيرها،[6] وأحدث إصداراتها الكبيرة 16.2 الصادر في أغسطس 2026. ومشروع LLVM، الذي يعرّف نفسه بأنّه مجموعة تقنياتٍ قابلة لإعادة الاستعمال لبناء المترجمات، وصل في 22 سبتمبر 2026 إلى الإصدار 23.1.2 من سلسلته الجديدة.[7]
وفائدة الترجمة المسبقة السرعة. فالعمل الثقيل يحدث مرّةً واحدة على حاسوب المبرمج، وما يصلك أرقامٌ جاهزة ينفّذها المعالج مباشرة. ولهذا تُكتب أنظمة التشغيل والمتصفّحات والألعاب الكبيرة غالبًا بلغاتٍ مترجمة مثل C وC++. والثمن أنّ الملفّ الناتج مربوطٌ بمعالجٍ ونظامٍ محدّدين، فيحتاج المطوّر إلى نسخةٍ لكلّ تركيبة.
والمترجم الحديث يفعل أكثر من الترجمة الحرفيّة. فهو يحسب مسبقًا ما يمكن حسابه، كما رأيت في مثال 2 و3، ويحذف الشيفرة التي لا يصل إليها التنفيذ أبدًا، ويضع جسم الدالّة الصغيرة مكان استدعائها حتّى يوفّر القفزة إليها. ولهذا قد يعمل البرنامج نفسه أسرع بفارقٍ كبير حين يُبنى بخيارات التحسين، وقد يصعب على المبرمج أن يتتبّعه بعدها، لأنّ الأسطر التي كتبها لم تعد تقابل التعليمات واحدةً بواحدة.
الطريق الثاني: المفسّر
المفسّر لا يُنتج ملفًّا تنفيذيًّا. فهو برنامجٌ يعمل على جهازك، يقرأ الشيفرة وينفّذ ما فيها أثناء التشغيل، في كلّ مرّةٍ تشغّلها. ومثاله الكلاسيكيّ صَدفة Bash التي رأيتها في مقال نظام التشغيل، فهي تقرأ الأوامر من ملفٍّ نصّيّ وتنفّذها واحدًا بعد الآخر. والمفسّر مرن: تعدّل السطر وتشغّله فورًا دون انتظار ترجمة، والشيفرة نفسها تعمل على أيّ جهازٍ فيه المفسّر.
لكنّ التقسيم القديم بين «لغةٍ مترجمة» و«لغةٍ مفسّرة» لم يعد دقيقًا. فلغة Python، التي تُوصف كثيرًا بأنّها مفسّرة، تقول وثائقها الرسميّة إنّ شيفرتها تُترجم أوّلًا إلى شيفرةٍ وسيطة هي التمثيل الداخليّ للبرنامج في مفسّرها.[8] وأضاف إصدار 3.13 مترجمًا فوريًّا تجريبيًّا معطّلًا افتراضيًّا،[9] ثمّ صارت النسخ الجاهزة من الإصدار 3.14 لنظامي Windows وmacOS تدعم تشغيله تجريبيًّا.[10] وأحدث إصدارٍ مستقرّ منها 3.14.8، والإصدار 3.15 مقرّرٌ في 9 أكتوبر 2026 بحسب جدولها.[11]
وغيّر الإصدار 3.14 أمرًا قديمًا آخر. فقد كان مفسّر Python يقفل نفسه بقفلٍ عامّ يمنع أكثر من خيطٍ واحد من تنفيذ شيفرته في اللحظة نفسها، فلا يستفيد البرنامج الواحد من أنوية المعالج الكثيرة. ومع الإصدار 3.14 صارت النسخة التي تعمل دون هذا القفل مدعومةً رسميًّا.[10] وهذا مثالٌ على أنّ الطريقة التي يُنفَّذ بها البرنامج قد تتغيّر من إصدارٍ إلى آخر، والشيفرة التي كتبها المبرمج كما هي.
الطريق الثالث: الشيفرة الوسيطة والترجمة الفوريّة
أغلب اللغات الشائعة اليوم تجمع الطريقين. فالشيفرة تُترجم أوّلًا إلى شيفرةٍ وسيطة لا ترتبط بمعالج، ثمّ تنفّذها آلةٌ افتراضيّة على جهازك. وتقول مواصفة آلة Java الافتراضيّة إنّها لا تعرف شيئًا عن لغة Java نفسها، وإنّما تعرف صيغةً ثنائيّة محدّدة هي ملفّ class. وتضيف أنّها غير مفسّرة بطبيعتها، فيمكن تنفيذها بترجمة تعليماتها إلى تعليمات معالجٍ حقيقيّ.[12]
وهنا يأتي المترجم الفوريّ. فتقول وثائق Oracle إنّ آلة HotSpot تبدأ تشغيل التطبيق بمفسّرٍ عاديّ، ثمّ تترجم الأجزاء الحرجة للأداء من الشيفرة إلى لغة الآلة أثناء التشغيل.[13] فالحلقة التي تتكرّر مليون مرّة تُترجم مرّةً واحدة وتعمل بعدها بسرعة الشيفرة المترجمة، والسطر الذي يمرّ مرّةً واحدة يبقى مفسَّرًا. وأحدث إصدارات Java هو JDK 27، الذي صدر في 15 سبتمبر 2026 بعد ستّة أشهرٍ من سلفه.[14]
ولهذا تلاحظ أحيانًا أنّ تطبيقًا يبدأ متثاقلًا ثمّ يصير أسرع بعد دقائق من الاستعمال. فالآلة الافتراضيّة تراقب البرنامج وهو يعمل، وتعرف بالقياس أيّ أجزائه تتكرّر، فتترجمها وتحسّنها لجهازك تحديدًا. والمترجم المسبق لا يملك هذه المعلومة، فهو يترجم قبل أن يرى البرنامج يعمل، فيخمّن ما سيتكرّر.
والمتصفّح الذي تقرأ به هذه السطور يفعل الشيء نفسه مع JavaScript. فيقول فريق محرّك V8 في Chrome إنّ كلّ شيفرة JavaScript تُترجم أوّلًا إلى شيفرةٍ وسيطة ينفّذها مفسّرٌ اسمه Ignition، ثمّ تتولّى مترجماتٌ فوريّة أسرع فأسرع الأجزاءَ التي تتكرّر.[15] وقد شرحت مكان هذا المحرّك بين أجزاء المتصفّح في مقال متصفّح الويب. ورأيت في مقال أنظمة الهواتف أنّ Android يترجم التطبيقات عند تثبيتها، وتقول وثائقه إنّ المترجم الفوريّ يكمّل تلك الترجمة المسبقة، فيحسّن الأداء ويوفّر المساحة.[16]
وللويب لغةٌ وسيطة خاصّة اسمها WebAssembly، يعرّفها موقعها بأنّها صيغة تعليماتٍ ثنائيّة لآلةٍ افتراضيّة تعمل بالمكدّس.[17] وفي 17 سبتمبر 2025 أعلن فريقها اكتمال الإصدار 3.0 معيارًا حيًّا جديدًا.[18] وبها تعمل في المتصفّح برامج كُتبت أصلًا بلغاتٍ مثل C وRust، كمحرّرات الصور والألعاب، بسرعةٍ تقترب من سرعة البرامج المثبّتة.
البناء: المترجم ليس آخر الطريق
البرنامج الكبير يُكتب في آلاف الملفّات، والمترجم يحوّل كلّ ملفٍّ إلى قطعةٍ مترجمة مستقلّة. ثمّ يأتي برنامجٌ آخر اسمه الرابط، فيجمع هذه القطع في ملفٍّ واحد، ويصل كلّ استدعاءٍ لدالّةٍ في ملفٍّ بمكانها الصحيح في ملفٍّ آخر، حتّى يعرف المعالج إلى أين يقفز. وتُسمّى العمليّة كلّها البناء.
ولا يكتب أحدٌ برنامجه كلّه بنفسه. فالبرنامج يعتمد على مكتباتٍ جاهزة، بعضها يُضمّ إلى الملفّ عند البناء، وبعضها يبقى ملفًّا منفصلًا يُحمَّل عند التشغيل. وفي Windows تُسمّى هذه مكتبات الربط الديناميكيّ، وتقول Microsoft إنّ واجهة البرمجة في Windows نفسها مبنيّةٌ مجموعةً من هذه المكتبات.[19] ولهذا تظهر لك أحيانًا رسالةٌ تقول إنّ ملفًّا بامتداد dll مفقود، فالبرنامج سليم لكنّ قطعةً يحتاجها غائبة.
ولكلّ طريقةٍ من الطريقتين ثمنها. فالمكتبة التي تُضمّ إلى الملفّ عند البناء تجعل البرنامج مكتفيًا بنفسه، يعمل على أيّ جهاز دون أن يبحث عن شيء. لكنّها تكبّر حجمه، وإن ظهرت فيها ثغرةٌ فعلى صانع كلّ برنامجٍ يحملها أن يعيد بناءه. أمّا المكتبة المنفصلة فتُحدَّث مرّةً واحدة فتستفيد منها كلّ البرامج التي تستعملها، والثمن أنّ تحديثًا خاطئًا فيها قد يكسر برامج كثيرة دفعةً واحدة على الجهاز نفسه.
والناتج ملفٌّ تنفيذيّ بصيغةٍ يعرفها نظامك. ففي Windows صيغة PE، التي تصف Microsoft بها بنية الملفّات التنفيذيّة وملفّات القطع المترجمة،[20] وفي Linux صيغة ELF، التي يستعملها النظام للملفّات التنفيذيّة والقطع المترجمة والمكتبات المشتركة.[21] وهذا سببٌ ثانٍ يمنع برنامج Windows من العمل على Linux: حتّى لو كان المعالج واحدًا، فالنظام لا يعرف كيف يقرأ الملفّ.
حين يخطئ المبرمج
أخطاء البرمجة نوعان، ويظهر كلٌّ منهما في وقتٍ مختلف. فخطأ الكتابة، كقوسٍ لم يُغلق أو كلمةٍ مكتوبةٍ خطأً، يكتشفه المترجم قبل أن يخرج أيّ ملفّ، فيرفض البناء ويشير إلى السطر. وهذا أرحم الأخطاء، لأنّه لا يصل إليك أبدًا. وبعض اللغات تتشدّد أكثر، فتفحص أنواع البيانات عند الترجمة، فلا تسمح لك أن تجمع نصًّا مع عدد.
أمّا خطأ المنطق فلا يراه المترجم. فالبرنامج يُبنى ويعمل، لكنّه يحسب الشيء الخطأ، أو يقرأ من مكانٍ لا يجوز له في حالةٍ نادرة لم يجرّبها أحد. وهذا النوع هو الذي يصل إلى المستخدمين، ويظهر انهيارًا أو نتيجةً غريبة، كما رأيت في قصّة صاروخ Ariane في مقال البرمجيّات.
ماذا يحدث حين تنقر الأيقونة؟
نقرتك تصل إلى نظام التشغيل، فيطلب من نواته أن تشغّل الملفّ. وفي Linux يتمّ ذلك بنداء نظامٍ اسمه execve، تقول صفحة توثيقه إنّه يستبدل بالبرنامج الذي تشغّله العمليّة برنامجًا جديدًا.[22] وفي Windows تنشئ الدالّة CreateProcess عمليّةً جديدة تعمل مستقلّةً عن العمليّة التي أنشأتها.[23]
ثمّ يقرأ النظام رأس الملفّ ليعرف أين تبدأ التعليمات وأين البيانات، وينسخ ما يلزم منها إلى الذاكرة. وبعدها يأتي دور المحمّل الديناميكيّ، وفي Linux تقول صفحته إنّه يجد المكتبات المشتركة التي يحتاجها البرنامج ويحمّلها، ويجهّز البرنامج للتشغيل، ثمّ يشغّله.[24] وأخيرًا يقفز المعالج إلى أوّل تعليمة، ويبدأ البرنامج حياته عمليّةً في الذاكرة، كما رأيت في مقال نظام التشغيل.
وكلّ هذا يحدث في أجزاءٍ من الثانية. فإن تأخّر ظهور النافذة، فالسبب في الغالب ما يفعله البرنامج بعد أن يبدأ: يقرأ إعداداته، ويفتح ملفّاتك الأخيرة، ويتّصل بالشبكة ليفحص التحديثات أو ليجلب حسابك من خادمٍ بعيد.

كيف يطلب البرنامج من النظام؟
البرنامج الذي يعمل لا يتعامل مع العتاد بنفسه. فإن أراد أن يرسم نافذة أو يحفظ ملفًّا، استدعى دالّةً جاهزة يقدّمها النظام، وهذه الدالّة تنفّذ في النهاية نداء نظامٍ ينزل إلى النواة. ومجموعة الدوالّ التي يقدّمها النظام للبرامج تُسمّى واجهة البرمجة، وهي في Windows مجموعةٌ من مكتبات الربط الديناميكيّ كما رأيت. فالبرنامج الذي يعمل على Windows 10 يعمل غالبًا على Windows 11، لأنّ الواجهة بقيت كما هي وإن تغيّر ما تحتها.
والفكرة نفسها تمتدّ خارج الجهاز. فتطبيق الطقس في هاتفك لا يقيس الحرارة، وإنّما يطلبها من خادمٍ بعيد عبر واجهة برمجةٍ على الإنترنت، فيرسل سؤالًا بصيغةٍ متّفقٍ عليها ويتلقّى الجواب بصيغةٍ متّفقٍ عليها. وأغلب التطبيقات التي تستعملها اليوم أجزاءٌ صغيرة تتخاطب بهذه الطريقة، كلٌّ منها يعرف ما يطلبه من غيره دون أن يعرف كيف بُني من الداخل ولا بأيّ لغةٍ كُتب.
لماذا ينهار البرنامج؟
المعالج ينفّذ ما يُطلب منه حرفيًّا، حتّى لو كان الطلب خاطئًا. فإن حاول برنامجٌ أن يقرأ من عنوان ذاكرةٍ لا يملكه، أوقفه النظام قبل أن يؤذي غيره. وفي Linux يصله عندها إشارةٌ اسمها SIGSEGV، تصفها صفحة الإشارات بأنّها مرجعٌ غير صالح إلى الذاكرة.[25] وفي Windows يحمل الخطأ نفسه الرمز 0xC0000005، ومعناه مخالفة وصولٍ إلى الذاكرة.[26] وهذه هي الرسالة الغامضة التي تراها حين «يتوقّف البرنامج عن العمل».
وأخطاء الذاكرة هذه أخطر من الإزعاج، فهي أوسع أبواب الاختراق. ففي 2019 قالت Microsoft إنّ نحو 70 بالمئة من الثغرات التي تسجّلها كلّ سنة مشاكل في أمان الذاكرة.[27] ولغاتٌ مثل C وC++ تترك إدارة الذاكرة للمبرمج، فخطأٌ صغير في حساب حجمٍ يفتح للمهاجم مدخلًا.
والحلّ الذي يتّسع اليوم لغاتٌ آمنة الذاكرة، تمنع هذه الأخطاء عند الترجمة. فبعد أن صار مطوّرو Android يكتبون الشيفرة الجديدة بلغاتٍ آمنة مثل Rust، صارت الأرقام واضحة. فتقول Google إنّ حصّة ثغرات الذاكرة في النظام هبطت من 76 بالمئة في 2019 إلى 24 بالمئة في 2024، أي إلى نحو ثلث ما كانت عليه.[28] وفي يونيو 2025 نشرت وكالة الأمن السيبرانيّ الأمريكيّة مع وكالة الأمن القوميّ دليلًا مشتركًا لتقليل هذه الثغرات.[29] ولهذه اللغات ثمنها أيضًا، فمترجمها صارمٌ يرفض شيفرةً كانت لغة C تقبلها، وتعلّمها أبطأ، ومليارات الأسطر القديمة المكتوبة بلغة C لن تُعاد كتابتها بين ليلةٍ وضحاها. لكنّ الاتّجاه واضح. وفي ديسمبر 2025 قرّر مطوّرو نواة Linux أنّ Rust لم تعد تجربةً فيها، بحسب تقرير موقع LWN المتخصّص في أخبار النواة.[30]
جرّبه بنفسك
افتح مدير المهامّ في Windows، أو مراقب النشاط في Mac، وانظر إلى قائمة العمليّات. كلّ سطرٍ فيها ملفٌّ تنفيذيّ حمّله النظام إلى الذاكرة، وفي Windows تستطيع أن تنقر بالزرّ الأيمن على أيّ عمليّة وتختار فتح موقع الملفّ، فترى الملفّ الذي بدأت منه على قرصك.
وإن كان عندك Linux أو Mac، فافتح الطرفيّة واكتب file /bin/ls، فيخبرك النظام بصيغة الملفّ التنفيذيّ لبرنامج ls وبالمعالج الذي بُني له. ثمّ جرّب python3 --version لترى إصدار Python المثبّت عندك، وقارنه بالإصدارات في هذا المقال. وإن أردت أن ترى المفسّر وهو يعمل، فاكتب python3 وحدها، ثمّ اكتب سطرًا مثل 2 + 3، وسيجيبك فورًا دون أيّ ملفٍّ تنفيذيّ.
وفي Linux تستطيع أن ترى عمل المحمّل الديناميكيّ بعينك. اكتب ldd /bin/ls، فتظهر لك قائمة المكتبات المشتركة التي سيجدها المحمّل ويحمّلها قبل أن يبدأ برنامج ls، ومكان كلّ واحدةٍ منها على القرص.[24] برنامجٌ صغير يعرض محتويات مجلّد يعتمد على عدّة مكتبات، وكلّ برنامجٍ أكبر منه يعتمد على عشراتٍ أو مئات.
عرفت الآن الطريق من الشيفرة إلى المعالج. لكنّ البرامج لا تبقى كما كُتبت، فهي تصلك من متاجر ومواقع، وتتحدّث باستمرار، وبعض مصادرها أخطر من بعض. فمن أين تحصل على برامجك بأمان، وكيف تحدّثها دون أن تكسر شيئًا؟ هذا موضوع مقال الحصول على البرامج وتحديثها.
المصادر
- Intel، «Intel 64 and IA-32 Architectures Software Developer’s Manual»، المجلّد 2، حُدّث في 21 سبتمبر 2026: «90 NOP… One byte no-operation instruction»؛ «04 ib ADD AL, imm8 Add imm8 to AL».
- GNU Binutils، «Using as»، قُرئ في أكتوبر 2026: «a user guide to the GNU assembler as (GNU Binutils) version 2.47».
- Yale University، «Biography of Grace Murray Hopper»، قُرئت في أكتوبر 2026: «In 1952 she developed the first compiler called A-0, which translated mathematical code into machine-readable code».
- IBM، «Fortran»، قُرئت في أكتوبر 2026: «In 1957, the IBM Mathematical Formula Translating System, or Fortran, debuted»؛ «without relying on a programmer to translate their needs into machine code».
- TIOBE، «TIOBE Index»، سبتمبر 2026: Python 17.76%، C 10.28%، C++ 8.67%.
- GCC، «GCC, the GNU Compiler Collection»، قُرئت في أكتوبر 2026: «includes front ends for C, C++, Objective-C, Objective-C++, Fortran, Ada, Go, D, Modula-2, COBOL, Rust»؛ GCC 16.2 في 7 أغسطس 2026.
- LLVM، «The LLVM Compiler Infrastructure»، قُرئت في أكتوبر 2026: «a collection of modular and reusable compiler and toolchain technologies»؛ «22 September 2026: LLVM 23.1.2 is now available».
- Python Docs، «Glossary: bytecode»، الإصدار 3.14.8: «Python source code is compiled into bytecode, the internal representation of a Python program in the CPython interpreter».
- Python Docs، «What’s New In Python 3.13»، أكتوبر 2024: «A basic JIT compiler was added. It is currently disabled by default».
- Python Docs، «What’s New In Python 3.14»، أكتوبر 2025: «Free-threaded Python is officially supported»؛ و«Windows and macOS binary releases now support the experimental just-in-time compiler».
- Python، «PEP 790: Python 3.15 Release Schedule»، قُرئت في 7 أكتوبر 2026: «3.15.0 final: Friday, 2026-10-09»؛ وأحدث إصدارٍ مستقرّ في python.org هو 3.14.8 في 30 سبتمبر 2026.
- Oracle، «The Java Virtual Machine Specification, Java SE 25: Introduction»، قُرئت في أكتوبر 2026: «knows nothing of the Java programming language, only of a particular binary format, the class file format»؛ «It is not inherently interpreted».
- Oracle، «Java Virtual Machine Technology Overview»، قُرئت في أكتوبر 2026: «A standard interpreter is used to launch the applications… The Java HotSpot VM compiles the performance-critical portions of the code».
- OpenJDK، «JDK Project»، قُرئت في أكتوبر 2026: JDK 27 GA في 15 سبتمبر 2026، وJDK 26 في 17 مارس 2026.
- V8، «Maglev: V8’s Fastest Optimizing JIT»، 5 ديسمبر 2023: «All JavaScript code is first compiled to ignition bytecode, and executed by interpreting it».
- Android Open Source Project، «Implement ART just-in-time compiler»، يوليو 2026: «The JIT compiler complements ART’s current ahead-of-time (AOT) compiler and improves runtime performance, saves storage space».
- WebAssembly، «WebAssembly»، قُرئت في أكتوبر 2026: «a binary instruction format for a stack-based virtual machine».
- WebAssembly، «Wasm 3.0 Completed»، 17 سبتمبر 2025: «the release of Wasm 3.0 as the new live standard».
- Microsoft Learn، «Dynamic-Link Libraries»، أبريل 2025: «a module that contains functions and data that can be used by another module»؛ «The Windows application programming interface (API) is implemented as a set of DLLs».
- Microsoft Learn، «PE Format»، سبتمبر 2026: «describes the structure of executable (image) files and object files under the Windows family of operating systems».
- man7.org، «elf(5)»، أغسطس 2026: «format of Executable and Linking Format (ELF) files»؛ «normal executable files, relocatable object files, core files, and shared objects».
- man7.org، «execve(2)»، فبراير 2026: «executes the program referred to by path… to be replaced with a new program».
- Microsoft Learn، «Create processes»، يوليو 2026: «The CreateProcess function creates a new process that runs independently of the creating process».
- man7.org، «ld.so(8)»، أغسطس 2026: «find and load the shared objects (shared libraries) needed by a program, prepare the program to run, and then run it».
- man7.org، «signal(7)»، فبراير 2026: «SIGSEGV… Invalid memory reference».
- Microsoft Learn، «Bug Check 0x1E»، أغسطس 2024: «0xC0000005: STATUS_ACCESS_VIOLATION… A memory access violation occurred».
- Microsoft Security Response Center، «A proactive approach to more secure code»، 16 يوليو 2019: «~70% of the vulnerabilities Microsoft assigns a CVE each year continue to be memory safety issues».
- Google Security Blog، «Eliminating Memory Safety Vulnerabilities at the Source»، 25 سبتمبر 2024: «accounted for 76% of Android vulnerabilities in 2019, and are currently 24% in 2024».
- CISA، «New Guidance Released for Reducing Memory-Related Vulnerabilities»، 24 يونيو 2025: «released a joint guide on reducing memory-related vulnerabilities in modern software development».
- LWN.net (صحافة تقنيّة)، «The (successful) end of the kernel Rust experiment»، 10 ديسمبر 2025: «Rust in the kernel is no longer experimental».