Обзор кода Gemini.

Это никогда не было задолго до того, как Google попал в игру Code Assistance с Gemini. Заголовок — это количество завершений, предлагаемых бесплатно на их платформе — 90x то, что предлагает Github Copilot — и позади этого понимание этого масштаба — это то, что Google делает хорошо. Так что это та же игра, что и Gmail, давая каждому пользователю гораздо большую часть пространства, чем конкуренты, когда он запущен в 2004 году.

Кодекс Близнецов, а также претендует на претензии, поддерживает более 20 языков, что снова является сильным предложением в масштабе. Но поскольку Google не предлагает свою собственную IDE, они, вероятно, будут зависеть во многих случаях от кода Microsoft Visual Studio (VS -код). Я начинаю задумываться о том, получают ли альтернативы, такие как Jetbrains, по этой причине массовый импульс. Тем не менее, по умолчанию кажется, что код VS:

Возможно, вы видели, как я перевозил помощников по коде из Copilot, чтобы увеличить, и я сделаю то же самое сейчас — но переход от Augment к Code Assist, чтобы проверить это.

Я открыл код VS на своем MacBook M4 и сразу же искал расширение, недавно доступное в этот день:

Загрузка расширения, по -видимому, занимала некоторое время, хотя в коде VS нет измерителя прогресса. Конечно, серверы будут забиты в первый день для новой версии.

Была приветственная страница, но ничего о настройке. Поскольку я даже не подписал в Google, он вряд ли будет на самом деле готов. У левой боковой панели был значок Близнецов, и выбрав его, заполнил боковую панель запросом для входа. Но это только подчеркивает то, что я говорил ранее: путешествие клиента с ассистентами по загрузке расширения в коде VS.

Меня бросили на веб -страницу, чтобы войти в систему, и отправился обратно в мою IDE, чтобы увидеть следующее:

В то время как боковая панель контролировалась Близнецами, я все еще не знал, кто контролировал завершение кода. Похоже, что нижняя панель инструментов предполагает, что она может сожительствовать с увеличением:

(Мое меню Copilot поднялось на вершину, хотя само расширение Copilot заявило, что необходимо перезагрузить.)

Я отключил расширение расширения, чтобы Близнецы приняли единственный контроль. Но это беспорядок, который должен быть исправлен Microsoft.

Между тем, Google необходимо поместить предупреждение о своем расширении, как и AUGMENT.

Как и прежде, я внесу реальные изменения в своем проекте и посмотрю, как ведет себя завершение кода. Мой игровой проект использует случайные числа, но мне нужно взять их из списка, чтобы я мог сгенерировать их на месте, или использовать предварительно подключенный набор чисел для тестирования. Поскольку заказ вызовов, который может быть принят номер, может измениться во время разработки, мне нужно убедиться, что каждый вызов принимает фиксированный индекс в списке, и, кроме того, я случайно не принимаю одинаковое число дважды. Тем не менее, это было бы трудно управлять в петях, поэтому я возвращаю блок чисел.

Я обнаружил, что Близнецы сделали несколько плохих завершений. Это имело тенденцию прыгать перед пониманием контекста, например:

… Частный RN[] RandomNumbers = новый RN[MAXRN]; … for (short i; i В приведенном выше примере Gemini предложил строку журнала, которая распечатывает индекс и значение, но пропускает преобразование в «преобразован», который мой список напрямую использует. Я часто обнаружил, что, когда я обновлял свое решение и удаляя старый код, Близнецы предложили вернуть удаленные линии. Это заставляет меня задуматься о том, сколько Близнецов было проверено во время гибкой разработки, где рефакторинг так важен.

(На каком -то этапе Augment снова включилось и удалив расширение, не имеющее никакого значения. Только после того, как уйти и открытие резервного копирования полностью исчезло. Теперь я очень знаю, что моя ситуация, рассматривающая различных помощников, делает меня намного более открытым для столкновений с столкновением, но я боюсь, что, хотя обзор должен быть о Близнецах, я не был ограничен полной неспособностью контролировать расширения.).

Близнецы разумно подчеркивают «умные действия», используя Команда-I.который находится между завершением кода и попыткой написать для вас объемный код:

Сначала я попросил Близнецов «объяснить это» на выбранном методе, где запрашивается блок случайных чисел. Потребовалось около 10 секунд (что довольно длинное), чтобы произвести выход:

«Метод запросаnewindexedblock предназначен для того, чтобы предоставить для запроса и« зарезервировать »конкретный блок предварительно сгенерированных или случайно генерируемых чисел из системы случайных передачи. Он выступает в качестве менеджера для распределения этих блоков ».

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

В то время как метод и весь класс работают, вы можете видеть, что я должен использовать Aushort (без знака Short) для StoreIndex, поскольку негативный индекс не является разумным. Поэтому я попробовал второе умное действие «исправить», чтобы увидеть, предложил ли оно это:

Сказать нам быть осторожными с сгенерированным кодом на этом этапе, это немного похоже на то, чтобы рассказать Алисе, что следуя за кроликами в отверстиях в страну чудес могут иметь непредсказуемые результаты!

Как и норма, он создал временный файл DIFF. Результат предложил лишнюю проверку на блоке, которая, хотя и технически корректа, опиралась на предположения о внутренних группах другого класса. Во всяком случае, это заставило меня уменьшить доступ к RNBLOCK, так что это было косвенно хорошо. Необъяснимо, поскольку временный файл не был частью проекта, Copilot пытался внести предложения! Мои предыдущие замечания о том, как VS Code обрабатывает расширения, охватывает это.

Наконец, я позволил ему попробовать окончательное умное действие «генерировать модульные тесты» для этого метода. У меня есть отдельная сборка в проекте с тестами и насмешливой библиотекой (MOQ), хотя я не написал ни одного для этого класса — и я не был уверен, что Близнецы могли видеть это. Вглядываясь на код, вы можете видеть, что есть два случая, чтобы проверить, когда я бросаю для них исключения.

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

[Test] public void requestNewIndexedBlock_validindex_returnsblockandmarksastaken () {// Аранжировка randomnumber rng = randomnumber.getactiverandommanmer (); Short validindex = 5; // act randomnumber.rnblock block = rng.requestnewindexedblock (validindex); // assert assert.isnotnull (block); Assert.areequal (validindex, block.storeindex); Assert.istrue (block.taken); } 1234567891011121314

[Test] public void requestNewIndexedBlock_validindex_returnsblockandmarksastaken () {// Аранжировка randomnumber rng = randomnumber.getactiverandommanmer (); Short validindex = 5; // act randomnumber.rnblock block = rng.requestnewindexedblock (validindex); // assert assert.isnotnull (block); Assert.areequal (validindex, block.storeindex); Assert.istrue (block.taken); }

Заключение

Я проявил обеспокоенность по поводу неспособности VS Code обрабатывать множество расширений, борющихся за одну и ту же функциональность LLM, совершенно ясную, но помощь Code Gemini должна добиться большего успеха, помогая пользователю отключить предыдущие расширения.

Единственная вещь, которая касается меня в отношении помощи коду Близнецов, — это скорость завершения кода, которая иногда была немного более опомб. В то время как код рерсируется, ни один ассистент кода никогда не может быть уверен, какие части кода больше не являются частью нового решения. Но я вообще чувствовал, что Близнецы не совсем не отставали от меня — несмотря на то, что кодексовые объяснения были точными.

Качество завершения кода было в целом в порядке — хотя в моих недавних тестах как Copilot, так и AUGMENT дали мне превосходные результаты. Но ваш пробег может варьироваться, и я не сомневаюсь, что масштабирование достаточно времени обработки может быть проблемой здесь. Кроме того, если есть одна вещь, которую мы знаем, это то, что выход LLM улучшается со временем.

Trending Stories youtube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Дэвид был лондонским профессиональным разработчиком программного обеспечения в Oracle Corp. и British Telecom, а также консультантом, помогающим командам работать более гибким образом. Он написал книгу по дизайну пользовательского интерфейса и с тех пор пишет технические статьи …. Подробнее от Дэвида Истмана

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *