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

Codex نموذج لغوي كبير دُرّب على نصوص اللغة الطبيعية، وعلى مجموعة ضخمة من الشيفرة المصدرية جُمعت من مستودعات عامة، وأبرزها GitHub. وهو في جوهره فرع من GPT-3، جرى ضبطه بدقة ليتنبأ بتوكنات الشيفرة بدلًا من النثر.
منحته بيانات التدريب معرفة إحصائية لافتة ب_كيف يكتب البشر البرامج_. ليس فقط قواعد الصياغة، بل أيضًا الأنماط الشائعة، وأعراف المكتبات، وكيف تُسمّى الدوال عادةً، وكيف ترتبط التعليقات بالشيفرة التي تليها. تعلّم البرمجة لا من مواصفات رسمية، بل من ملايين الأمثلة لمبرمجين يعملون فعلًا.
البنية المعتمدة هي المحوِّل (transformer)، وهي العائلة نفسها من الشبكات العصبية التي تقف وراء كل نموذج لغوي كبير اليوم. تستخدم المحوِّلات آلية تُسمى الانتباه الذاتي (self-attention) لتقدير أهمية كل توكن في السياق مقارنةً بكل توكن آخر. وفي الشيفرة، هذا قوي جدًا: متغيّر عُرّف قبل 200 سطر ما يزال "مرئيًا" للنموذج حين يتنبأ بما يأتي بعده.
صدر Codex في تكوينين رئيسيين: إصدار أصغر باسم cushman (نحو 12 مليار معامل) مُحسَّن للسرعة، وإصدار أكبر باسم davinci يركّز على الدقة. وقد شغّل إصدار davinci النسخة الأولى من GitHub Copilot، وكان التكوين الذي أبهر الناس فعلًا عند إطلاقه.
نماذج LLM ذات الأغراض العامة دُرّبت على التعامل مع كل شيء: المقالات، والأسئلة، والملخصات، والمحادثات. أما Codex فقد استبدل الاتساع بالعمق. ضبطه على الشيفرة يعني أنه ينتج بثبات مخرجات صحيحة نحويًا بعشرات لغات البرمجة، ويتعامل مع السياق الخاص بالشيفرة بشكل أفضل من النماذج المركّزة على النثر، ويفهم المفاهيم البرمجية المجردة مثل الاستدعاء الذاتي (recursion) والتنفيذ غير المتزامن وعقود الواجهات البرمجية (API contracts) بمستوى عملي.
💡 سيشرح نموذج لغوي عام خوارزمية ترتيب. أما Codex فسيكتبها، مع معالجة الحالات الحدّية.

على المستوى الآلي، توليد الشيفرة هو التنبؤ بالتوكن التالي. تعطي النموذج أمرًا نصيًا، وقد يكون تعليقًا أو توقيع دالة أو ملفًا موجودًا، فيحسب النموذج توزيعًا احتماليًا لكل توكن تالٍ محتمل، ثم يأخذ عيّنة من هذا التوزيع.
ما يجعل هذا قويًا في الشيفرة أن البرامج الصالحة لا تشغل إلا جزءًا ضئيلًا من كل تسلسلات التوكنات الممكنة. ويعلّم التدريب على شيفرة حقيقية النموذج شكل ذلك الفضاء الصالح، فتقع تنبؤاته داخله في أغلب الأحيان.
تعمل نماذج الشيفرة ضمن نافذة سياق (context window)، وهي الحد الأقصى لعدد التوكنات التي يمكنها معالجتها في وقت واحد. بالنسبة إلى Codex، كانت هذه النافذة 4,096 أو 8,192 توكن، بحسب الإصدار. وهذا يحدّ من مقدار الشيفرة المحيطة التي يستطيع النموذج "رؤيتها" عند التنبؤ.
دفعت نماذج الشيفرة الحديثة هذا الحد أبعد بكثير. يتعامل GPT 4.1 مع سياقات تصل إلى مليون توكن، ما يعني أن قواعد شيفرة كاملة يمكن أن تتسع في أمر نصي واحد. أما Granite 8B Code Instruct 128K من IBM فيوفر 128,000 توكن مُحسَّنة خصيصًا لمهام الشيفرة، وهو تحسن كبير مقارنةً بحدود Codex الأصلية.
“سحر” Codex الظاهري هو أنه دُرّب على مستودعات شيفرة تحوي التعليقات والتطبيقات معًا جنبًا إلى جنب. تعلّم أن تعليقًا مثل # parse a JSON file and return a dict يسبق عادةً نوعًا محددًا من دوال Python. وعند تغذيته بهذا التعليق، ينشّط النموذج هذا الارتباط ويتنبأ بالتطبيق المناسب.
هذا ليس استدلالًا بالمعنى الفلسفي. إنه مطابقة أنماط قوية جدًا، تعمل على نطاق يجعل مخرجاتها لا تُميَّز عن الفهم.
💡 جدير بالملاحظة: لا ينفّذ Codex الشيفرة ولا يتحقق منها في بيئة تشغيل. كل اقتراح هو تنبؤ إحصائي. لهذا ما تزال الشيفرة المولّدة بالذكاء الاصطناعي تحتاج إلى مراجعة بشرية.

فهم ملف القدرات الفعلي يمنعك من توقع الكثير أو القليل جدًا من أي نموذج شيفرة بالذكاء الاصطناعي.

أوقفت OpenAI تشغيل Codex في مارس 2023. وقد تغيّر مشهد توليد الشيفرة بشكل كبير منذ ذلك الحين، وترجع كل تحسن مهم إلى محورين: نوافذ سياق أكبر، والتفكير المدمج.
| النموذج | نافذة السياق | التخصص | متاح |
|---|---|---|---|
| Codex (davinci) | 8K توكن | مركّز على الشيفرة | متوقف |
| GPT 4.1 | مليون توكن | عام + شيفرة | PicassoIA |
| Granite 8B Code 128K | 128K توكن | شيفرة فقط | PicassoIA |
| Granite 20B Code 8K | 8K توكن | شيفرة فقط | PicassoIA |
| DeepSeek R1 | 128K توكن | شيفرة + استدلال | PicassoIA |
| Claude 4 Sonnet | 200K توكن | شيفرة + كتابة | PicassoIA |
| Kimi K2 Instruct | 128K توكن | البرمجة الوكيلية | PicassoIA |
حُسّن Codex لمهمة واحدة: التنبؤ بالشيفرة التالية. أما النماذج الأحدث فتجمع توليد الشيفرة مع استدلال سلسلة الأفكار (chain-of-thought reasoning)، أي أنها تعالج المشكلة خطوة بخطوة قبل إنتاج الشيفرة. وهذا يسدّ الفجوة في مهام البرمجة متعددة الخطوات التي لا تكفي فيها مطابقة الأنماط وحدها.
يتميز DeepSeek R1 هنا، فهو ينتج مسارات استدلال مرئية، بحيث تستطيع تتبّع السبب الدقيق لبنائه الشيفرة بطريقة معينة. كما أن Claude 4 Sonnet يشرح شيفرته بلغة طبيعية دون أن يُطلب منه ذلك، ما يجعل مراجعة المخرجات المولّدة بالذكاء الاصطناعي أسرع بكثير.

النماذج التي تفوّقت على Codex متاحة كلها ضمن مجموعة النماذج اللغوية الكبيرة على PicassoIA. لا مفاتيح API تحتاج إلى إدارتها، ولا إعداد لبيئة محلية. إليك كيف تستخدمها في مهام توليد الشيفرة الفعلية.
Granite 8B Code Instruct 128K هو نموذج IBM المخصص للشيفرة، ومدرَّب خصيصًا على مهام البرمجة، ومنها التوليد والتصحيح والشرح وإعادة الهيكلة.
💡 نصيحة: في مهام إعادة الهيكلة، الصق الدالة الحالية أولًا، ثم أضف: "أعد كتابة هذه لمعالجة [الحالة الحدّية] مع الإبقاء على الواجهة نفسها."
يتألق GPT 4.1 حين تمتد المهمة عبر ملفات متعددة. تتيح له نافذته البالغة مليون توكن أن تلصق وحدات كاملة أو ملفات مترابطة معًا، وتطلب منه الاستدلال عبرها جميعًا في وقت واحد. وهذه هي المهمة التي قصّر فيها Codex بوضوح، وحيث يقدّم GPT 4.1 تجربة مختلفة فعلًا.
استخدمه في:

المطورون الذين يحصلون على أقصى فائدة من توليد الشيفرة بالذكاء الاصطناعي يتعاملون معه كمسودة أولى سريعة، لا كمنتج نهائي. وإليك كيف يبدو ذلك عمليًا.
توليد الاختبارات هو المجال الذي تضيف فيه نماذج الشيفرة أكبر قيمة عملية يومية. يكتب معظم المطورين الاختبارات بعد كتابة التطبيق نفسه، وهي مملة. أنت تعرف أصلًا ما تفعله الدالة، وتحتاج فقط إلى حصر الحالات.
نمط أمر نصي مفيد:
Given this function:
[paste function]
Write pytest unit tests covering:
- The happy path
- Empty input
- Edge case: [specific case you are worried about]
- Error conditions
يتعامل Kimi K2 Instruct مع هذا النمط بشكل جيد بصفة خاصة. دُرّب مع وضع سير عمل البرمجة الوكيلية في الاعتبار، وهذا يعني أنه ينتج مجموعات اختبار متسقة ذاتيًا، بدلًا من دوال اختبار منفصلة لا تشترك في التجهيزات (fixtures) أو الإعدادات.
إعادة الهيكلة تحدٍّ مختلف عن التوليد. يحتاج النموذج إلى فهم الشيفرة الموجودة قبل تحسينها، ولهذا يصبح حجم نافذة السياق العامل الحاسم.
الصق الوحدة القديمة، وصف المشكلة، واطلب نسخة معاد هيكلتها بالواجهة الخارجية نفسها. يتعامل كل من Claude 4.5 Sonnet و GPT 4.1 مع هذا بشكل جيد، لأنهما يستطيعان إبقاء الدالة الأصلية كاملة في الانتباه أثناء توليد البديل، بدلًا من التخمين فيما كان موجودًا من قبل.

الأوامر النصية السيئة تنتج شيفرة سيئة. الأوامر النصية الجيدة تنتج شيفرة جاهزة للنشر. والفرق يعود تقريبًا كله إلى مقدار السياق الذي تعطيه للنموذج مسبقًا.
النموذج الذي يولّد شيفرة دون سياق يخمّن قيودك. إخباره بلغتك وإطار عملك يقلّص إلى النصف احتمال اختياره النهج الخطأ. وإخباره بالواجهة الموجودة يلغي فئة كاملة من أخطاء التكامل قبل أن تظهر.
أمر بسياق أدنى:
Write a function to parse CSV files
أمر بسياق فعّال:
Python 3.11, using the csv module (not pandas).
Write a function parse_csv(filepath: str) -> list[dict]
that reads a CSV with a header row and returns a list of dicts.
Handle FileNotFoundError and return an empty list if the file is empty.
الأمر الثاني ينتج شيفرة قابلة للاستخدام. أما الأول فينتج شيئًا معقولًا الشكل، وقد يناسب قاعدة شيفرتك أو لا يناسبها.
💡 إذا كانت الإجابة الأولى خاطئة، فلا تكتفِ بإعادة تشغيل الأمر نفسه. أضف جملة واحدة توضح ما الخطأ. تستجيب النماذج للمتابعات التصحيحية أفضل بكثير من الأوامر المكررة المتطابقة.

من أهم الفجوات العملية بين Codex والنماذج اليوم ليس القدرة لكل توكن، بل عدد التوكنات التي تستطيع الانتباه إليها في وقت واحد.
كان Codex عند 8K توكن قادرًا على معالجة نحو 400 إلى 600 سطر من الشيفرة. وهذا يكفي للدوال المنفردة، لكنه ينهار فورًا في أي شيء يشمل ملفات متعددة تتشارك أنواعًا مشتركة، أو معالجات API تشير إلى نماذج قواعد البيانات، أو اختبارات تكامل تمتد عبر عدة وحدات.
يطابق Granite 20B Code Instruct 8K نافذة سياق Codex، لكنه يأتي بعدد معاملات أكبر بكثير وبمجموعة تدريب أحدث، ما يجعل مخرجاته لكل توكن أدق بكثير. أما Granite 8B Code Instruct 128K فيبادل عدد المعاملات الخام بالمدى: 128K توكن في نموذج بُني خصيصًا لمهام الشيفرة منذ البداية.
بالنسبة إلى عمليات قاعدة الشيفرة الكاملة، يمثل GPT 5 الطليعة الحالية، إذ يجمع سياقًا شبه غير محدود مع قدرة واسعة في هندسة البرمجيات عبر كل اللغات والأطر الرئيسية.

النموذج الذي أرساه Codex كان: أعطِ السياق، ثم تنبأ بالتوكنات. أما نموذج الاستدلال الذي تلاه فيضيف خطوة قبل المخرجات: فكّر في المشكلة أولًا.
تعمل نماذج مثل DeepSeek R1 و GPT 5 عبر سلسلة من الأفكار الوسيطة قبل إنتاج الشيفرة. وهذا يحدث فرقًا حقيقيًا في:
مسار الاستدلال نفسه قيّم لمراجعة الشيفرة أيضًا. إذا شرح النموذج أنه اختار نمطًا معينًا لتجنب فئة محددة من الأخطاء، فيمكنك التحقق من هذا الاستدلال مباشرة، بدلًا من تدقيق مخرجات تشبه الصندوق الأسود.
💡 ملاحظة عملية: نماذج الاستدلال أبطأ وأغلى لكل توكن. استخدمها للشيفرة الحرجة من حيث الصحة. أما للشيفرة النمطية والاختبارات، فنموذج سريع مثل Claude 4.5 Haiku أكثر كفاءة بكثير.

كان Codex لتوليد الشيفرة برهانًا على المفهوم، وقد تحقق منه الصناعة كلها ثم تجاوزته بسرعة. النماذج المتاحة الآن تفعل كل ما فعله Codex، مع نوافذ سياق أكبر، واستدلال أفضل، ومخرجات أدق عبر مجموعة أوسع من اللغات والأطر.
إذا لم تستخدم نموذج شيفرة بالذكاء الاصطناعي بجدية حتى الآن، فأسهل مكان تبدأ منه هو مهمة تقوم بها كل أسبوع لكنها مملة. توليد الاختبارات، وكتابة docstrings، والهياكل النمطية كلها تملك حلقة ملاحظات قصيرة: ترى فورًا إن كانت المخرجات مفيدة. ابدأ من هناك، وكوّن حدسًا لما ينجح، ثم انتقل إلى مهام أصعب كلما ضبطت أسلوب كتابتك للأوامر.
كل نموذج في جدول المقارنة أعلاه متاح الآن على PicassoIA. لا إعداد. لا مفاتيح API. اختر نموذجًا، والصق دالة، وشاهد ما تفعله خلال أقل من دقيقة. جرّب GPT 5 للعمل المعقد عبر الملفات، أو DeepSeek R1 حين تحتاج إلى رؤية الاستدلال، أو Granite 8B Code Instruct 128K لتجربة مركزة وسريعة للشيفرة فقط. والفجوة بين “سمعت عن أدوات البرمجة بالذكاء الاصطناعي” و“أستخدمها كل يوم” لا تتعدى فترة ظهيرة واحدة من التجريب.
اختر لغتك