Никита Поляков
👋 Привет Пол (и привет всем)
Недавно я сходил на свою первую Java конференцию в Лондоне.
В кулуарах мы занимались типичными активностями — травили байки и мерились, кто тут самый старпер. Всех уел разраб, первой средой разработки которого была еще IBM VisualAge (что-то древнее, что умерло 20+ лет назад).
Но дальше он начал рассказывать про свой опыт использования 4х разных AI в написании кода, и мне порвало шаблон. Все вокруг начали наперебой делиться опытом , а мне же оставалось только шаркнуть ножкой 🤡 Получается, единственный старпер здесь я
По всем законам конформизма я задумался:
с чем же и мне может помочь AI❓
⚠️ Сегодня на проде у меня потерялся запрос. Как оказалось, причиной была самая популярная ошибка в Java.
Я получил сообщение c номером счета, а метод ниже должен был вернуть валюту счета:
public String getCurrencyName(String account) {
var currencyCode = account.substring(5, 8);
return currencyCodeNameMap.get(currencyCode);
}
// пример данных в currencyCodeNameMap
// 810, RUR
// 840, USD
// 826, GBP
}
Но так получилось, что счет пришел битый, с кодом, которого не было в currencyCodeNameMap. Поэтому .get() вернул null, а где-то позже все и сломалось.
💡 Хорошим решением было бы ловить такие ошибки на уровне валидации полученного сообщения. С вопросом о том, как это лучше сделать, я решил выйти не в Интернет, а написать Machinet AI.
Примерно за 10 минут, большая часть из которых ушла на объяснение, что account состоит из 3х групп и что есть enum CurrencyType с уже нужными кодами, я получил такое решение:
String accountRegex = "\\d{5}(810|840|826|)\\d{12}";
Ответ почти устроил, ведь регулярку будет легко добавить в @Pattern.
Но оставался риск забыть поправить и ее при добавлении значения в enum.
Сходу идей как решить данную проблему не было, и, уже вставая из-за рабочего стола, я подумал,
а было бы интересно задать те же вопросы GitHab Copilot и сравнить...
Успех! Повторил первые два промта и точно также попытался скормить ему enum. Получил почти готовое решение (итоговая версия будет в комментах).
Полнейший восторг! Вот, что я испытывал, глядя как строчка за строчкой проявляется решение. А в голове сам собой складывался план, как бы я шел к аналогичному результату.
За 10 минут я получил ответ, освежил в памяти regex, чуть лучше начал понимать, как использовать AI.
🧠 Как итог, Copilot оказался намного умнее:
1. С первого сообщения понял, как нужно исползовать enum
2. Без подсказок решил проблему консистентности
3. Выдал готовое решение меньше, чем за 1 минуту (против 10-15 у Machinet AI)
🪦 Из минусов:
Copilot умер и уже часов 8 не подает признаков жизни
Вместе со смертью потер всю историю запросов
По общим ощущениям показалось, что Copilot больше заточен на работу с кодом, поскольку для Machinet AI пришлось руками вырезать из enum коды валют, несколько раз переписывать весь промт, тк иначе он не мог понять, что нужно сделать. Но, главное, каждый AI дал возможность сгенерировать regex декларативно.
Ну, и, как мне раньше советовал ChatGPT
По окончании поста задайте вопросы для обсуждения. Это может помочь сгенерировать больше обратной связи и вовлечь ваших подписчиков.
Поделитесь своими любимыми способами использовать AI?
И, что вы думете, можно ли использовать технологию, которая каждый раз на один и тот же вопрос отвечает по-новому?
6 · 548 ·