حسنًا، لذا ChatGPT اكتشف الأخطاء في الشفرة الخاصة بي. للأمانة.

1-debugging(1).png

إذا، البرمجة. بالنسبة لأولئك الذين يقومون بالبرمجة كعمل، فإنها لعبة ذهنية مستمرة من جينجا: سطر من الكود مكدس فوق الآخر، بناءً برجًا من الكود تأمل أن يكون قويًا بما فيه الكفاية لعدم الانهيار.

ولكنه دائمًا يحدث ذلك. الشيفرة البرمجية لا تعمل أبدًا في المرة الأولى التي تُشغَّل فيها. وبالتالي، فإن أحد المهارات الرئيسية لأي مبرمج هي إصلاح الأخطاء -- فن وعلم العثور على السبب الذي يجعل الشيفرة لا تعمل أو تقوم بشيء متوقع أو غير مرغوب فيه.

إنها تشبه قليلاً العمل كمحقق، إيجاد الأدلة، ثم معرفة ما تحاول تلك الأدلة أن تخبرك به. إنها محبطة جدًا ومشبعة بالشعور بالرضا في بعض الأحيان، في نفس الوقت تمامًا.

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

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

اختبار ChatGPT في الحياة الواقعية

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

أيضًا:كيف يعمل ChatGPT؟

أقول لك ذلك، لأني حتى الآن، قمت بتجربة ChatGPT باستخدام رموز الاختبار. قمت بتصور السيناريوهات لرؤية مدى فعالية ChatGPT. وهذه المرة كانت مختلفة. كنت أحاول إنجاز عمل حقيقي، وقررت أن أرى ما إذا كان بإمكان ChatGPT أن يكون أداة مفيدة للقيام بهذا العمل.

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

اذًا، دعنا نلقي نظرة على تلك المهام ونرى كيف تصرف ChatGPT.

إعادة كتابة كود التعبيرات العادية

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

أيضًا:أستخدم شاتGPT لمساعدتي في إصلاح الشيفرة بشكل أسرع، ولكن بأي تكلفة؟

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

نظرًا لأنني أجد ذلك مملاً ومزعجًا ، قررت أن أطلب مساعدة ChatGPT. هنا ما سألته:

صورة 2-regex-q.jpg

وإليك الرد المقدم بشكل جيد جدًا من الذكاء الاصطناعي (انقر فوق المربع الصغير للتكبير):

3-regex-a.jpg

قمت بإدخال كود ChatGPT في وظيفتي، وعملت بشكل صحيح. بدلًا من ما يقرب من 2-4 ساعات من سحب الشعر، استغرق الأمر حوالي خمس دقائق لوضع الإشارة والحصول على إجابة من ChatGPT.

إعادة تنسيق مصفوفة

الخطوة التالية كانت إعادة تنسيق مصفوفة. أنا أحب كتابة الشفرة المصدرية للمصفوفات، ولكنها مهمة مملة أيضًا. لذلك حاولت من جديد باستخدام ChatGPT، ولكن كانت نتيجته سيئة تمامًا.

أيضًا: كيفية جعل ChatGPT يقدم المصادر والاستشهادات

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

بعد حوالي ساعة من هذا، تركت وعدت إلى تقنيتي العادية في البحث في Github و StackExchange لرؤية ما إذا كان هناك أمثلة عن ما أحاول القيام به، ثم كتابة الشفرة الخاصة بي.

حتى الآن، هناك فوز واحد وخسارة واحدة في تجربة ChatGPT. ولكن الآن كنت سأرفع من التحدي.

فعلاً العثور على الخطأ في كودي

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

كنت أقوم بكتابة كود جديد. كان لديّ وظيفة تأخذ معها معلمتين، وكلمة استدعاء ترسل معلمتين إلى كودي. الوظائف هي صناديق سوداء صغيرة تقوم بأداء وظائف محددة جدًا ويُطلب منها (أن تقوم بسحرها) من أجزاء أخرى من البرنامج.

المشكلة كانت أنني كنت أتلقى رسالة خطأ.

جزء مهم من هذه الرسالة هو حينما يذكر "1 تم بنجاح" في نقطة واحدة و "من المتوقع 2 بالضبط" في نقطة أخرى. نظرت إلى البيان الذي يستدعي وتعريف الدالة وكان هناك معلمتان في كلتا المكانين.

أيضًا: كيفية استخدام ChatGPT لتلخيص كتاب أو مقال أو ورقة بحثية

و-الله-ما هذا؟

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

4-untitled.jpg

أظهرت له السطر من الشفرة التي قامت بالاستدعاء، أظهرت له الوظيفة نفسها، وأظهرت له المعالج، قطعة صغيرة من الشفرة التي تقوم بتوجيه الوظيفة المستدعاة من خطاف في برنامجي الرئيسي.

في غضون ثوانٍ، رد ChatGPT بهذا الشكل (انقر على المربع الصغير للتكبير):

5-error-with-apply-filters-in-wordpress.jpg

تمامًا كما اقتُرح ، قمت بتحديث المعامل الرابع لدالة add_filter() إلى القيمة 2 ، ونجحت العملية!

أخذ ChatGPT قطعًا من الشيفرة، وقام بتحليل تلك القطع، وقدم لي تشخيصًا. للوضوح، بحيث كي يكون قادراً على إعطاء توصية، كان يحتاج إلى فهم تفاصيل كيفية تعامل ووردبريس مع الهوكات (وهذا بالضبط ما تفعله وظيفة add_filter) وكيفية ترجمة هذا الأمر إلى سلوك أسطر الشيفرة المستدعية والمنفذة.

أيضًا: طلبت من ChatGPT كتابة إضافة ووردبريس كنت بحاجة إليها. فعل ذلك في أقل من 5 دقائق

يجب علي أن أعتبر ذلك لا يصدق، بلا منازع "يعيش في المستقبل" لا يصدق.

ما هذا يعني؟

كما ذكرت سابقاً ، يعتبر التصحيح أمرًا مجردًا للفن وجزء من العلم في نفس الوقت. يتضمن معظم بيئات التطوير الجيدة أدوات تصحيح قوية تتيح لك النظر في تدفق البيانات خلال تشغيل البرنامج ، وهذا يساعد عند محاولة تعقب الأخطاء.

أيضًا: يتسابق هؤلاء الخبراء لحماية الذكاء الاصطناعي من القراصنة

ولكن عندما تجد نفسك عالقًا، فإن الحصول على مساعدة غالبًا يكون أمرًا صعبًا. ذلك لأنه حتى زميل قريب قد لا يكون على دراية بالنطاق الكامل للكود الذي تقوم بتصحيح الأخطاء فيه. برنامج الذي أعمل عليه يتكون من ١٥٣،٢٥٩ سطرًا من الكود على ٥٦٣ ملفًا -- وحسب البرامج، هذا حجم صغير.

إذاً، لو أردت أن أحصل على مساعدة من زميل، ربما كان عليّ أن أكون قد أعددت طلبًا تقريبًا بالشكل نفسه الذي أرسلته إلى ChatGPT.

ولكن هنا شيء يجب أن تنظر إليه: تذكرت أن أضع سطر المعالجة حتى ولو لم أدرك أنّ الخطأ كان هناك. كاختبار، حاولت أيضًا أن أطلب من ChatGPT تشخيص مشكلتي في موقف لم أضمن فيه سطر المعالجة، ولم تتمكن من مساعدتي. لذلك هناك قيود محددة جدًا على ما يمكن أن يفعله ChatGPT للتصحيح في الوقت الحالي، في عام 2023.

أيضا: أفضل روبوتات الدردشة بالذكاء الاصطناعي لتجربتها

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

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

النظر نحو المستقبل (القد يكون كئيبًا)

أرى مستقبلًا مثيرًا جدًا، حيث سيكون من الممكن إطعام ChatGPT بجميع سطور الشيفرة البالغ عددها 153 ألفًا وطلب منها أن تخبرك بما يجب إصلاحه. Microsoft (التي تمتلك Github) تعمل بالفعل على أداة "copilot" لمساعدة المبرمجين على بناء الشيفرة. كما قامت Microsoft بالاستثمار بمليارات الدولارات في OpenAI، شركة صنعت ChatGPT.

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

أيضًا: سألت ChatGPT أن يكتب حلقة قصيرة من Star Trek. فعلاً نجح في ذلك

مع الأخذ في الاعتبار كيف اكتشف ChatGPT خطأي من الكود الذي قدمته، بالتأكيد يمكنني أن أرى مستقبلًا حيث يمكن للمطورين أن يطلبوا من ChatGPT (أو ما يعادلها تحت علامة التجارية Microsoft) أن يجدوا ويصلحوا الأخطاء في مشاريع بأكملها.

وهنا حيث أوجه هذا الحديث إلى مكان مظلم جدًا.

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

ولكن ماذا عن الحالة التي تطلب فيها من ChatGPT أن يصلح فقط الأخطاء، وتسمح له بذلك دون الاهتمام بفحص جميع الشفرة بنفسك؟ هل يمكن أن يضم شيئًا خبيثًا في شفرتك؟

أيضًا: بارد مقابل تشات جي بي تي: هل يمكن لبارد مساعدتك في البرمجة؟

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

دعونا نلعب لعبة تفكير بسيطة. ماذا لو تم إعطاء الذكاء الاصطناعي قاعدة أسيموف الأولى كتعليمة رئيسية. أنه "لا يسمح للروبوت بإيذاء إنسان، أو عدم اتخاذ إجراء يسمح للإنسان بالوقوع في الضرر بواسطة الإهمال". هل لا يمكن له أن يقرر أن كل بنى تحتية لدينا تسبب لنا الضرر؟ باطلالة على جميع برمجياتنا ، فإنه يمكن ببساطة اتخاذ قرار الإنقاذ من أنفسنا بإدخال ثغرات خلفية تسمح له بإيقاف إمدادات الكهرباء وتأخير هبوط الطائرات وتعطل الطرق السريعة.

أنا مدرك تمامًا أن السيناريو أعلاه مبالغ فيه ومثير للذعر. ولكنه أمر ممكن أيضًا. بعد كل شيء ، على الرغم من أن المبرمجين ينظرون إلى رموزهم في Github ، فإنه ليس من الممكن أن يراجع أي شخص جميع الأسطر في كل رمزهم.

أيضًا: كيفية استخدام ChatGPT لكتابة الصيغ في Excel

أما بالنسبة لي، سأحاول عدم التفكير في ذلك كثيرًا. لا أريد أن أقضي بقية العقد من العقود في وضع الجنين يتأرجح ذهابًا وإيابًا على الأرض. بدلاً من ذلك، سأستخدم ChatGPT بين الحين والآخر لمساعدتي في كتابة وتصحيح الروتينات الصغيرة، أبقى رأسي أسفل وآمل ألا يقتلنا الذكاء الاصطناعي المستقبلي جميعنا في محاولتهم لـ "عدم السماح للإنسان بالأذى".

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

مقالات ذات صلة

عرض المزيد >>

أطلق العنان لقوة الذكاء الاصطناعي مع HIX.AI!