Я использую ChatGPT, чтобы помочь мне быстрее исправлять код, но по какой цене?

изображение5.jpg

Ранее на этой неделе я показал вам, как ChatGPT может создать целый плагин для WordPress, который соответствует конкретной, хоть и простой, функциональной спецификации. Теперь я продолжаю тестирование ChatGPT, чтобы понять, может ли он быть полезным инструментом - в этом случае, чтобы помочь мне получить некоторые технические рекомендации.

Также:Я попросил ChatGPT написать плагин для WordPress. Он сделал это менее чем за 5 минут

Как я делал в предыдущих исследованиях ChatGPT, мои слова будут написаны обычным или жирным шрифтом, а ответы ИИ будут выделены курсивом. Сначала я покажу вам вопросы и ответы, а затем обсудим их значения.

Понимание изменений языка программирования

Мой хостинг-провайдер переводит все свои сайты с устаревшей версии PHP 7.4 на PHP 8. PHP - это язык программирования для веб-разработки, на котором основаны WordPress и ряд других инструментов для управления вебом. У меня есть несколько плагинов, которые не совместимы с PHP 8, и я хотел узнать, какие части их кода мне нужно найти и исправить.

Обычно я бы изучал сайт PHP.net, выполнял множество поисковых запросов в Google и изучал комментарии на StackExchange, чтобы узнать, какую программную работу мне нужно было бы выполнить. Но это довольно громоздкий и времязатратный процесс. Вместо этого я задал подробный и прямой вопрос ChatGPT и получил очень полезный ответ, включая блоки иллюстративного кода.

У меня возникли проблемы с функцией извлечения PHP, которая вызывает фатальную ошибку, если в нее не передан массив. В PHP 7.4 у меня не было такой ошибки, но в PHP 8, кажется, появилась. Изменилась ли функция extract в PHP 8?

В PHP 8, поведение функции extract() было изменено для повышения строгости. В предыдущих версиях PHP, функция extract() просто возвращала false, если ей не передавался массив. Но в PHP 8 она будет вызывать фатальную ошибку, если ей не передан массив. Это изменение было сделано для улучшения надежности функции и предотвращения возможных ошибок, вызванных неожиданными входными данными.

Вы можете проверить, является ли переданная переменная в функцию массивом или нет, используя функцию 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. Вместо нее анонимные функции, также известные как замыкания (closures), могут быть созданы с помощью ключевого слова 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.

При настройке Time Machine для создания резервных копий, будут резервироваться все файлы, включая те, которые были выгружены с помощью функции "Оптимизировать хранилище на Mac". Однако, вместо оригинальных файлов будут резервироваться файлы-заглушки, представляющие выгруженные файлы.

Это означает, что если вы восстановите ваш Mac из резервной копии Time Machine, сделанной во время включенной функции "Оптимизация хранения на Mac", все отдельные файлы не будут включены в восстановление и должны будут быть загружены снова с iCloud.

Важно отметить, что если у вас есть много файлов, которые выгружены, резервные копии Time Machine могут занимать больше места, чем если вы не используете оптимизацию размещения на Mac, потому что Time Machine будет создавать резервные копии заглушек файлов, которые занимают меньше места, но Time Machine будет считать их оригинальными файлами.

Мне это действительно беспокоит. По крайней мере с Google авторы имеют шанс получать трафик от поисковой системы в обмен на предоставленную информацию. Но с чатботом, таким как ChatGPT, оригинальная ветвь теряется. Конечно, я получил пользу от быстрого ответа. Но может ли кто-то там потерять признание своей работы?

Оставайтесь с нами. Этот всплеск в генеративном искусственном интеллекте создает большие волны. Оставайтесь со мной и ZDNET, когда мы пытаемся понять, что это значит для всех нас.

ChatGPT, когда вы отвечаете на вопросы, вы используете знания, предоставленные другими людьми, и забираете работу и заслуги у оригинальных источников?

В качестве модели языка ИИ, созданной OpenAI, у меня нет личных мнений или мыслей. Однако я могу сказать вам, что информация, которую я использую для генерации своих ответов, основана на данных, на которых меня обучили - это огромные объемы текста из Интернета. Этот текст был написан множеством разных людей и источников, и у меня нет возможности указывать кредит тем или иным лицам за представляемую мной информацию. Моя цель - предоставить полезную и точную информацию, помочь пользователям найти то, что они ищут. Важно помнить, что мои ответы генерируются на основе закономерностей в данных, на которых я был обучен, и могут не всегда быть полностью точными или актуальными.

Итак, да. Так. "Большие объемы текста из интернета." Проходите, граждане. Здесь ничего интересного.

Итак, вкратце, Time Machine будет создавать неполные резервные копии, если вы используете функцию "Оптимизация хранения Mac", так как он будет резервировать только заглушечные файлы вместо оригинальных файлов, которые были выгружены в облако.

Это был правильный ответ.

Последствия

Ну, это, конечно, сэкономило время. Обычно программирование в Интернете связано с взаимодействием между средой программирования и отладки, и множеством пошаговых поисков веб-страниц, где отслеживаются подсказки, а также ознакомления с обсуждениями и комментариями.

Не поймите меня неправильно. Этот процесс может быть очень информативным, и в комментариях к коду хранится много народной мудрости, которую вы никогда не получите от чатботов. Но это неэффективное использование времени, когда вы спешите или у вас критический срок. Задавать эти вопросы о кодировании Чат-ГПТ оказалось очень эффективным.

Как и с любым искусственным интеллектом, важно понимать, что у АИ есть пробелы в знаниях и вы можете получить совершенно неправильные ответы. Однако использование ChatGPT как прямого инструмента, подобно любому другому инструменту в моем арсенале, оказалось довольно продуктивным.

Однако я задаюсь вопросом: откуда он черпает свою информацию? Есть ли там деятель, похожий на меня, который написал глубокоинформативную статью об extract или create_function и чьи слова использованы "под копирку" ChatGPT без указания авторства или монетизации? Используется ли знания, заработанные на собственном опыте, в качестве неаккредитованного источника материала для этих ответов?

Связанные статьи

Показать больше >>

Раскройте возможности искусственного интеллекта с помощью HIX.AI!