الكود الذي لن يكتبه الذكاء الاصطناعي
أستخدم التحقق من صحة النماذج (form validation) كسؤال في المقابلات التقنية. يبدو الأمر بسيطًا، لكن الإجابات تكشف عن طريقة تفكير الناس.
لقد اختبرت هذه المشكلة على Claude وChatGPT وGemini، وجميعهم توصلوا إلى الحلول نفسها.
يستخدم معظم الناس دالة واحدة (single function) مع معامل نوع (type parameter) للتعامل مع العناوين المختلفة. هذا الحل يعمل، ولكن كل قاعدة جديدة تضيف فرعًا جديدًا إلى نفس الدالة، وتظل الاختلافات مخفية.
أذكى إجابة بشرية رأيتها استخدمت التكرار (recursion)؛ فهي تتنقل عبر شكل البيانات. إنها طريقة أنيقة، لكن بها عيبًا: فهي تتحقق فقط من الحقول الموجودة. إذا كان المفتاح مفقودًا، فلن تراه الدالة أبدًا، إذ تفتقر إلى مصدر للحقيقة (source of truth).
ارتكبت نماذج الذكاء الاصطناعي الثلاثة نفس الخطأ. وعندما أشرت إلى هذا العيب، اقترحوا جميعًا استخدام مخطط (schema). إن النهج القائم على المخطط (schema-driven approach) سليم تقنيًا، فهو يتعامل مع المفاتيح المفقودة ويتوسع بشكل جيد.
ولكن هناك طريقة أفضل: التركيب (Composition).
بدلاً من دالة واحدة ضخمة أو مخطط معقد، تقوم بإنشاء دوال محددة لكل نوع.
- دالة واحدة للعنوان القياسي.
- دالة واحدة للشحن.
- دالة واحدة للفواتير.
ثم تقوم بدمجها لبناء أداة التحقق الخاصة بك.
يحل هذا النهج مشكلة المفتاح المفقود؛ فمُحقق الفواتير يتحقق دائمًا من وجود رقم ضريبة القيمة المضافة (VAT number)، حتى لو كان المفتاح مفقودًا. هذا يعمل لأن عنوان الفواتير هو مفهوم تجاري حقيقي، وليس مجرد نمط في بياناتك.
يتم التعبير عن الاختلافات بوضوح. فعندما يظهر نوع عنوان جديد، تضيف دالة جديدة دون الحاجة لتغيير الكود القديم.
غالبًا ما يقع الذكاء الاصطناعي وأفضل المهندسين في الفخ نفسه. لقد تعلمنا البحث عن الأنماط ومركزية المنطق، ونحاول القضاء على التكرار بأي ثمن.
يرث الذكاء الاصطناعي هذه الغريزة من بيانات التدريب الخاصة بنا، حيث يعطي الأولوية للتعميم (generalization).
المشكلة ليست في أن الذكاء الاصطناعي مخطئ، بل في أنه نادرًا ما يطرح السؤال الأهم: هل هذا التباين موجود في الكود الخاص بي أم في بياناتي؟
إذا كانت أنواع العناوين مستقرة، فاستخدم التركيب (composition). إذا كانت أنواع العناوين تتغير عبر بيانات خارجية، فاستخدم المخطط (schema).
الحل الأبسط ليس هو الحل الذي يحتوي على أقل عدد من الأسطر، بل هو الحل الذي يعكس مجال عملك (business domain).
المصدر: https://dev.to/iceonfire/the-code-ai-wont-write-1ieb
مجتمع تعليمي اختياري: https://t.me/GyaanSetuAi