Я взялся за довольно сложную задачу. Это значит взять какой-нибудь уродливый корпоративный код C# и перевести его на Python. Прежде чем приступить к более глубокому погружению, я чувствую, что мне нужно кое-что объяснить.
Этот проект C# служит слоем передачи данных для некоторых моделей машинного обучения. Увидев, что вы слышите данные, первое, что должно прийти вам на ум, — это Python. К сожалению, это не так, и чтобы улучшить ситуацию, используется расширение .NET для Apache Spark. Миграция его на Python имеет смысл, поскольку здесь используется довольно нестандартная для решения задачи технология, что затрудняет найм будущих талантов. Есть и другие очевидные проблемы, общие и для других корпоративных языков ООП, например, несколько уровней абстракции, повсеместное наследование, инверсия управления и т. д., опять же, вещи, которые вы не делаете при передаче данных. И чтобы еще больше накормить дьявола, первоначальная команда подрядчиков/консультантов (потому что кто еще будет использовать C#, кроме какого-то консультанта по корпоративным ценам) собирается уйти в следующем месяце.
Кстати, я использую Neovim, и я использую Github Copilot уже почти два года, а также Copilot Chat (технически ChatGPT), с тех пор как я получил в свои руки предварительную версию, так что я ни в коем случае не являюсь полным новичком, когда это доходит до LLM и кода.
Каково это — программировать с помощью Claude 3.5? Ну, есть хорошие, плохие и неприятные моменты. Но в большинстве случаев вы понятия не имеете, что происходит, даже если вы можете написать ту же функциональность с нуля.
Claude 3.5 обычно дает удивительно правильные результаты, однако иногда он пытается быть умным и терпит неудачу, но вы можете помочь ему исправить проблемы. В целом, это хороший компаньон для того, чтобы задавать вопросы, и я, поскольку у меня был строгий рабочий процесс и я приложил много усилий, чтобы создать сложную подсказку с множеством примеров и крайних случаев, я был более чем доволен. Я мог бы пройти курс C# и перевести важные части на Python, что потребовало бы совсем немного дополнительных инструкций.
Обычно я могу пойти и написать код в течение 12 часов, время от времени делая перерывы в туалете и наполняя флягу с водой. И да, я не чувствую голода, когда действительно этим увлекаюсь. С Клодом я действительно вошел в поток, но примерно через три часа я почувствовал себя мертвым. За эти 3 часа я написал много кода и чувствовал себя продуктивным, но это было похоже на непрерывную проверку кода, запрос на изменения и большую часть времени поиск документации или ее отсутствие, действительно ли то, что было создано.
Если вы программист, вы, вероятно, в некоторой степени знакомы с написанным вами кодом. Это знакомство имеет тенденцию исчезать со временем, но если вы достаточно долго работаете с кодовой базой, вы знаете, как сориентироваться. С кодом, сгенерированным LLM, этого просто не происходит. Я очень плохо понимал, что происходит. В течение нескольких дней я писал много кода, просматривал каждую строчку, время от времени просил внести некоторые изменения, но в конце концов я практически не имел представления о том, что на самом деле происходит. В конце кодовая база показалась мне чужой, чего я не писал. И что еще хуже, фактический стиль кода был непоследовательным, можно было сказать, какие файлы были написаны в один и тот же день. Было такое ощущение, что это написали разные люди.
Я потратил много времени, чтобы пересмотреть, переделать и настроить этот полноценный подход к кодированию LLM, однако в большинстве случаев результатом является просто код, который в некоторой степени работает, но вы понятия не имеете, почему и как. Большой вопрос:
Стоит ли в конечном итоге получить кодовую базу, к которой у вас мало привязанности, и сразу возникает ощущение, будто вы написали ее год назад с когда-то воображаемыми коллегами.
Подводя итог, я чувствовал, что написал больше кода, однако качество было ниже, чем обычно. В некоторых случаях такое низкое качество оправдано, особенно если вас это не волнует. Но чего я боюсь, так это того, что приближается время, когда каждая кодовая база станет «унаследованной» в рекордно короткие сроки.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3