أستخدم ChatGPT لمساعدتي في إصلاح الشفرة بشكل أسرع، ولكن بأي ثمن؟

صورة5.jpg

في وقت سابق من هذا الأسبوع، قمت بعرض لك كيف يمكن لـ ChatGPT أن ينشئ مكون إضافي بالكامل لـ WordPress يلبي مواصفات وظيفية محددة، على الرغم من أنها قد تكون بسيطة إلى حد ما. الآن، أنا أواصل اختباري لـ ChatGPT للاستفسار عما إذا كان يمكن أن يكون أداة مفيدة - في هذا الحالة، لمساعدتي في الحصول على بعض التوجيه التقني.

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

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

فهم تغيرات لغة البرمجة

مزود خدمة الاستضافة الخاص بي يقوم بنقل جميع مواقعه من PHP 7.4 القديمة جدًا إلى PHP 8. PHP هي لغة برمجة ويب تعتمد عليها ووردبرس وعدد من أدوات إدارة الويب الأخرى. كان لدي بعض الإضافات التي ليست متوافقة مع PHP 8 ، وأردت أن أحدد الجوانب التي يجب أن أجدها وأراها لتصحيحها.

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

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

في PHP ٨، تم تغيير سلوك دالة extract() ليكون أكثر صرامة. في الإصدارات السابقة من PHP، ستُعيد دالة extract() ببساطة false إذا لم يتم تمريرها بمصفوفة، ولكن في PHP ٨، ستقوم برمي خطأ فادح إذا لم يتم تمريرها بمصفوفة. تم إجراء هذا التغيير لتحسين قوة الدالة ولمساعدة في منع حدوث أخطاء محتملة بسبب إدخال غير متوقع.

يمكنك التحقق مما إذا كانت المتغير الممرر إلى الدالة هو مصفوفة أم لا عن طريق استخدام الدالة is_array() قبل استدعاء extract().

صورة 3.jpg

يمكنك أيضًا استخدام وظيفة array_key_exists() للتحقق مما إذا كانت المتغير الممرر هو مصفوفة أم لا.

صورة6.jpg

بدلاً من ذلك، يمكنك استخدام عامل التفكيك ... لفصل المصفوفة إلى متغيرات.

صورة7.jpg

كما تبين، كانت إجابة ChatGPT مفيدة للغاية ، وقمت بإصلاح تلك العلة في دقائق قليلة. كان جزءًا كبيرًا من قدرتي على إصلاح تلك العلة هو معرفة مكان البحث. أوضح ChatGPT كيف تغير سلوك الوظيفة بين إصدارات PHP.

نظرًا لأني كنت أحاول ضمان جاهزية الإضافة بأكملها للإصدار الجديد الذي سأقوم بالتحديث إليه، فقد سألت أيضًا هذا:

أي وظائف PHP من المرجح أن تتعطل عند الانتقال من PHP 7.4 إلى PHP 8؟

عند الانتقال من PHP 7.4 إلى PHP 8، هناك بعض الوظائف والميزات التي قد تتعطل أو تتصرف بشكل مختلف. فيما يلي بعض التغييرات البارزة التي يمكن أن تسبب مشاكل بوتيرة كبيرة:

  • تم إضافة وظيفة extract() كما ذكر في الإجابة السابقة، تُلقي الآن خطأ قاتلاً إذا لم يُمر إليها مصفوفة.
  • تمت إزالة وظيفة each() في PHP 8.0. يمكنك استخدام foreach و array_keys() و current() بدلاً منها.
  • تمت إزالة وظيفة create_function() في PHP 8.0. يُوصى باستخدام الدوال المجهولة بدلاً منها.
  • عند استخدام البنية list() مع foreach، تعيد الآن المفتاح والقيمة كمتغيرات منفصلة بدلاً من مصفوفة واحدة.
  • تمت إزالة وظيفة __autoload() في PHP 8.0. يجب عليك استخدام spl_autoload_register() بدلاً منها.
  • تمت إزالة المتغير $php_errormsg في PHP 8.0. يجب عليك استخدام وظيفة error_get_last() بدلاً منه.
  • تمت إزالة بعض الاستبانات السابقة في إصدارات PHP القديمة في PHP 8.0. تمت إزالة وظيفة create_function() و each() و __autoload() و $php_errormsg.

هذه مجرد أمثلة قليلة على التغييرات التي قد تسبب مشاكل عند الانتقال من PHP 7.4 إلى PHP 8. من الجيد أن تقوم بإختبار شامل لشفرتك وتطبيقاتك قبل الترقية للتأكد من أن كل شيء يعمل كما هو متوقع.

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

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

ما هو أفضل طريقة لإعادة كتابة الكود باستخدام create_function في PHP؟ هل يمكن أن تعطيني مثالاً باستخدام create_function، ثم مثال باستخدام الآلية الحالية الصحيحة؟

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

هنا مثال على استخدام create_function:

صورة2.jpg

وهنا هو الكود المعادل باستخدام وظيفة مجهولة:

صورة8.jpg

بالإضافة إلى ذلك، يمكنك استخدام كلمة use لتمرير المتغيرات داخل الإغلاق.

صورة1.jpg

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

كما تبين ، كان هذا شرحًا واضحًا جدًا وتمكنت من إعادة كتابة الشيفرة بشكل مناسب بسرعة. هذا البرنامج المساعد يعمل الآن في بيئة PHP 8 الجديدة لمزود خدمة الاستضافة الخاص بي بدون مشكلة.

دعم فني لنظام التشغيل macOS

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

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

ميزة "تحسين تخزين Mac" في macOS تستخدم iCloud لنقل الملفات التي لا تستخدم بشكل متكرر من جهاز Mac الخاص بك إلى السحابة، مع الاحتفاظ بملف "مؤشر" على جهازك المحلي لتمثيل الملف الأصلي. يمكن أن يوفر هذا مساحة على قرص Mac الصلب الخاص بك.

عند إعداد آلة الزمن لإجراء نسخ احتياطية، ستتم عمل نسخة احتياطية لجميع الملفات، بما في ذلك تلك التي تم تفعيل "تحسين تخزين Mac". ومع ذلك، سيتم عمل نسخة احتياطية لملفات المؤشر التي تمثل الملفات التي تم تفعيلها بدلاً من الملفات الأصلية.

ويعني هذا أنه إذا قمت بإعادة تجديد جهاز Mac الخاص بك باستخدام نسخة احتياطية من نظام Time Machine تم إنشاؤها عندما كانت الخيار "تحسين التخزين في Mac" مفعلة، فإن أي ملفات غير موجودة محليًا لن يتم تضمينها في عملية الاستعادة وستحتاج إلى تنزيلها مرة أخرى من خلال iCloud.

من المهم أن نلاحظ أنه إذا كان لديك الكثير من الملفات التي تم تفريغها، فقد يؤدي استخدام تحسين مساحة ماك إلى أن نسخ احتياطيات Time Machine تستغرق مساحة أكبر مما لو لم تستخدم تحسين مساحة ماك؛ لأن Time Machine ستقوم بعمل نسخ احتياطي لملفات العلامات التجارية (stub files) التي تستغرق مساحة أقل ولكن Time Machine ستعاملها كملفات أصلية.

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

ابقى متابعًا. هذه الزيادة في الذكاء الاصطناعي الناتج يجعل موجة كبيرة. استمر معي ومع ZDNET حيث نحاول فهم ما يعنيه ذلك بالنسبة لنا جميعًا.

شاتGPT، عندما تجيب على سؤال، هل تعتمد على المعرفة المساهمة من الآخرين وتستلهم العمل والإشادة عنهم؟

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

إذاً، نعم. هذا. "كميات هائلة من النصوص من الإنترنت." استمروا يا جماعة. لا شيء يستحق المشاهدة هنا.

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

كانت إجابة صحيحة.

التداعيات

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

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

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

أتساءل حقًا من أين جاءت المعلومات، هل هناك كاتب هناك مثلي كتب مقالًا معلوماتيًا عميقًا حول extract أو create_function وتتم "دوران" كلماته إلى استجابة من ChatGPT بدون إقران أو نشر؟ هل يتم استخدام معرفة شخص ما الثابتة كمصدر غير معتمد لتلك الإجابات؟

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

عرض المزيد >>

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