مقابلة سلسلة AI 14: الفرق بين vibe coding و spec coding؟
هذه هي المشكلة التي يواجهها معظم المبرمجين. Vibe Coding و Spec Coding هما نموذجان عمل مختلفان جذريًا عند البرمجة بمساعدة نموذج لغة كبير (LLM). الفرق الجوهري بينهما: هل "المدخل" الذي تعطيه للـ AI هو إحساس ضبابي أم مواصفات دقيقة.
١. مثال بالطهي لشرح الفرق بين vibe coding و spec coding ببساطة
- Vibe Coding = تقول لصديقك "أريد طعامًا حارًا"، فيطبخ حسب إحساسه طبقًا، تتذوقه وتقول "زيد الملح"، فيضيفه. قد يكون الطعم رائعًا، لكن إذا طبخ صديق آخر سيختلف تمامًا.
- Spec Coding = تكتب وصفة طهي: "20 جرام من معجون الفلفل الحار (Doubanjiang)، 150 جرام شرائح لحم بقري، 50 جرام قطع كرفس، قلي سريع لمدة دقيقتين، أضف 3 جرام سكر قبل الرفع". أي طباخ يتبع الوصفة سينتج طعمًا متطابقًا.
٢. تعريف كل منهما
| البعد | Vibe Coding | Spec Coding |
|---|---|---|
| الاسم البديل | البرمجة بالإحساس، مطالبات ارتجالية | البرمجة بالمواصفات، التوثيق أولاً |
| شكل المدخل | "ساعدني في عمل صفحة تسجيل دخول جميلة بمظهر تكنولوجي" | "يجب أن تحتوي صفحة تسجيل الدخول على حقل بريد إلكتروني/كلمة مرور، مربع اختيار تذكرني، زر إرسال؛ الواجهة باستخدام React + Tailwind؛ قواعد التحقق: تنسيق البريد الإلكتروني، طول كلمة المرور ≥ 8؛ عرض رسالة حمراء عند الفشل…" |
| طريقة استخدام AI | محادثة، تكرارية: إعطاء اتجاه عام → رؤية المخرجات → تعديل بسيط | هندسية: كتابة PRD/مواصفات تقنية مفصلة أولاً → AI يولد الكود بناءً على المواصفات |
| مشاركة بشرية | منخفضة: يعتمد على إبداع AI، الإنسان فقط يحدد "هل الإحساس صحيح" | عالية: الإنسان يكمل التصميم/الهندسة أولاً، AI ينفذ بشكل أساسي |
| حالات نموذجية | نماذج أولية سريعة، أدوات شخصية صغيرة، استكشاف واجهات المستخدم، كتابة كود إبداعي | أنظمة إنتاجية، تعاون جماعي، كود بحاجة للصيانة والاختبار |
٣. مقارنة سير العمل
سير عمل Vibe Coding
- فكرة ضبابية: "أريد كتابة أداة scrape لجلب العناوين الساخنة من Zhihu."
- كتابة أول prompt: اطلب من AI مباشرة توليد الكود.
- تشغيل → خطأ → ألصق الخطأ → AI يعدل.
- الشعور أن الواجهة قبيحة → "اجعل الزر مستديرًا، غير الخلفية إلى أزرق متدرج" → AI يعدل.
- نقص وظيفة → "أضف حفظ إلى CSV" → AI يضيف.
- كرر 3-5 حتى "شعور أن الأمر يكفي".
سير عمل Spec Coding
- كتابة وثيقة المواصفات: حدد المدخلات/المخرجات، هياكل البيانات، معالجة الأخطاء، متطلبات الأداء، المتطلبات غير الوظيفية (مثل السجلات، تحديد المعدل).
- تقسيم المواصفات إلى مهام: مثلاً المهمة 1: تنفيذ دالة
fetch_hot_topics()حسب توقيع API في المواصفات. - تنفيذ كل مهمة بواسطة AI: prompt يحتوي على توقيع الدالة، تعليقات، توقعات حالات الاختبار.
- مراجعة وتحقق بشري: تأكد من الامتثال للمواصفات، تشغيل اختبارات الوحدة.
- التكامل والاختبارات الانحدارية.
٤. مقارنة المزايا والعيوب
| الخاصية | Vibe Coding | Spec Coding |
|---|---|---|
| سرعة البدء | سريع جدًا، نموذج أولي في دقائق | بطيء، يحتاج كتابة وثائق وتقسيم مهام |
| جودة الكود | منخفضة (قد يكون زائدًا، غير متناسق، أخطاء خفية) | عالية (قابل للقراءة، قابل للاختبار، متوافق مع الهندسة) |
| قابلية الصيانة | سيئة، لا يفهم الوافد الجديد "لماذا كتب بهذا الشكل" | جيدة، المواصفات هي التوثيق |
| الاعتماد على LLM | عالي جدًا، تغيير النموذج قد ينتج كودًا مختلفًا تمامًا | متوسط، طالما المواصفات واضحة، نماذج مختلفة تنتج هياكل مماثلة |
| صعوبة التصحيح | صعبة، لا تعرف من أين أتى المنطق | سهلة، يمكن التحقق بندًا بندًا حسب المواصفات |
| مناسب للتعاون الجماعي | يكاد يكون مستحيلًا | ممكن (المواصفات كعقد تواصل) |
| يقينية المخرجات | منخفضة، نتائج كل محادثة قد تختلف | عالية، نفس المواصفات تنتج مخرجات مستقرة |
٥. نصائح للاستخدام العملي
"في العمل، لن تختار بين vibe coding و spec coding، بل تستخدمهما معًا، وتطبق النهج المناسب في السياق المناسب:
- في مرحلة الاستكشاف (عند عدم اليقين بشأن التقنية أو تصميم واجهة المستخدم)، استخدم Vibe Coding للتحقق السريع من خيارات مختلفة، مثلاً 'اكتب مكون بطاقة باستخدام Tailwind لأرى كيف يبدو'.
- بمجرد تحديد الخيار، انتقل فورًا إلى Spec Coding: قم بتنظيم المواصفات بوضوح من النموذج الأولي الناجح (المدخلات/المخرجات، شروط الحدود، معالجة الأخطاء)، ثم اطلب من AI أو بشري إعادة كتابة كود إنتاجي بدقة وفقًا للمواصفات.
الوضع الخالص لـ Vibe مناسب فقط للنصوص البرمجية لمرة واحدة أو الأدوات الداخلية الصغيرة؛ أما للأنظمة التي تحتاج صيانة طويلة الأمد واستخدام متعدد من قبل فريق، فإن Spec Coding هو شرط أساسي."
评论
暂无已展示的评论。
发表评论(匿名)