Comments 30
Т.е. я поймал себя на мысли, что очень вероятно copilot со своим развитием сломает те самые традиционные устои. И вот второе беспокойство: если не нужны джуны, то откуда возьмутся новые сеньоры?
продолжу ... не будет сеньоров кто продолжит разработку copilot?
Так называемый ИИ не понимает смысла, он может, как сказано выше, только воспроизводить среднее + некоторая энтропия. Соответственно чем больше контекста в задаче тем хуже будет работать copilot, а лучше соответственно на абстрактных, обобщенных и наиболее часто встречающихся кусках кода. Человечество уже придумало решение для этого, называется библиотеки. Если код настолько часто встречается и довольно абстрактен, не лучше ли сделать из него библиотеку? а заодно поднять ее качество с посредственного, да еще и от возможных ошибок избавить. Тогда нужен только хороший поиск, чтобы ИИ сказал в какой наиболее хорошей библиотеке есть нужная функция чтобы ее использовать, а не раздувать кодовую базу делая одинаковые функции в каждом проекте.
Соответственно чем больше контекста в задаче тем хуже будет работать copilot
Вы не правы. Вообще чем больше контекста, тем лушге работает GPT. И это заметно на практике. Более того он прекрасно понимает какой фреймворк вы используете React или Angular, а также какую библиотеку компонентов.
Если код настолько часто встречается и довольно абстрактен, не лучше ли сделать из него библиотеку?
Конечно же нет. Библиотека накладывает огромные обязательства. Или вы сторонник использования миллона библиотек дергая из них по одному методу?
а не раздувать кодовую базу делая одинаковые функции в каждом проекте.
Конечно, будем раздувать зависимости.
Конечно же нет. Библиотека накладывает огромные обязательства. Или вы сторонник использования миллона библиотек дергая из них по одному методу?
Библиотеку точно также можно скопипастить. Теперь ещё и в случае лицензионных проблем, можно попробовать свалить на copilot.
Тут вопрос, насколько
"Create user with email and avatar" внутри copilot будет полезнее "react component user email avatar site:github.com" внутри поисковой строки Гугла.
Копипастить библиотеку целиком зачастую не нужно. Пару методов удрать - это норма.
Дефакто вообще другие ощущения. В гугле что-то ищешь, как-то копируешь, что-то правишь. Тут оно прямо встраивается, зачастую даже инициализируясь вашими переменными из кода. Это работает на удивление хорошо в JavaScript. Был поражен, иначе бы статью не писал.
Я попробовал Copilot, я бы не сказал, что от контекста качество увиличивается. Наоборот, он начинает почему-то повторять бессмысленный для текущей процедуры код, который был нагенерирован для предыдущих процедур. У GPT-3 та же проблема, насколько я могу судить. На длинных текстах она просто начинает повторяться с лёгким изменением синтаксиса.
Поэтому ручной работы получается больше: надо проинспектировать сгенерированный кусок текста, понять, что это муть, отредактировать его, или просто стереть и написать руками.
А для того, чтобы понять, что Copilot выдал муть, нужно, мне кажется, быть уровнем повыше junior. Потому что там иногда муть в очень тонких местах: деление с плавающей точкой вместо целочисленного, лишние слагаемые в выражениях и т.д. Вчитываться надо и обладать опытом хождения по граблям.
Возможно, со временем станет лучше. Но для этого надо больше примеров. А откуда их взять? Обычный программист этим пользоваться не будет, потому что скорость работы уменьшается. О том, выкладывать ли код на GitHub, люди сейчас будут думать в два раза больше. Получается, основной feedback в Copilot будет от junior-ов с соответствующим качеством кода... Какая-то такая картинка вырисовывается.
А для того, чтобы понять, что Copilot выдал муть, нужно, мне кажется, быть уровнем повыше junior. Потому что там иногда муть в очень тонких местах: деление с плавающей точкой вместо целочисленного, лишние слагаемые в выражениях и т.д. Вчитываться надо и обладать опытом хождения по граблям.
В точку.
О том, выкладывать ли код на GitHub, люди сейчас будут думать в два раза больше.
И тут туда же.
Angular или React это как раз общий и абстракный контекст, я имел ввиду предметный контекст. Например учесть особенности бизнес процессов конкретного предприятия в функции обновления статуса.
Сгенерированный код тоже накладывает обязательства, его нужно поддерживать, тестировать, понимать как работает вместо нормальной документации с примерами. микробиблиотеки это тоже не очень хорошо, возможно стоит использовать copilot для поиска популярных проблем и создания крупных библиотека типа boost'а.
Так copilot он еще и вероятностный алгоритм, вместо проверенного quicksort он на 1кк раз будет выдавать слегка поломанный код, или просто отличающийся. И каждому нужно будет разбираться а не косячит ли эта "самописная" функция.
Наверно если как с шахматным компьютером когда то устраивать соревнования с призами, то можно в некоторое время понять, насколько код может быть написан нечеловеческим AI.
Все же по мне больше похож на джуна - он нагуглил, скопипастил, а ты ревьюишь :).
Как по мне copilot занимается странными вещами, лучше бы он помогал подбирать подходящие функции по смыслу из публичных библиотек, которые уже протестированы, вместо того чтобы копировать код и рефакторить названия переменных из опенсорсных проектов.
Проблема программирования - не написать кусок кода, а разобраться что изменить в сложной системе (программе или множестве программ), чтобы добавить/изменить необходимую функциональность.
Пока всё-таки больше похоже на расширенные инструменты автодополнения. Или code snippets.
Я бы не переживал по поводу замены программистов ИИ, ведь, при появлении подобного ИИ экономика (система распредления ресурсов) тоже должна претерпеть серьёзные изменения.
Проблема программирования - не написать кусок кода, а разобраться что изменить в сложной системе (программе или множестве программ), чтобы добавить/изменить необходимую функциональность.
Все это CP умеет.
Я бы не переживал по поводу замены программистов ИИ, ведь, при появлении подобного ИИ экономика (система распредления ресурсов) тоже должна претерпеть серьёзные изменения.
Экономика отлично смотрит на прогресс. Она вторична в этом плане и подстраиватеся под новые реалии. Про замену посмотрите доклад Тагира, там это хорошо разложено.
разобраться что изменить в сложной системе, чтобы добавить/изменить необходимую функциональность
Все это CP умеетКак умеет? С ним можно поговорить на естественном языке?
Типичная задача: есть огромный проект с миллионами строк кода, и заказчик хочет, чтобы в определённом сценарии при определённых условиях менялся список получателей оповещения по e-mail.
Что тут CP умеет? Он поможет найти место, в которое надо дописать код?
Он неплохо умеет писать то, что надо. А что надо очень неплохо умеет понимать по контексту. Конечно место где писать и понимание что, нужно иметь человеку, но саму реализацию он предлагает весьма неплохо.
Например, типичный случай, я добавил в модель пару новых полей.
И теперь эту пару полей нужно добавить во все DTO, во все конфиги ORM, во все переливалки между классами.
Copilot сможет увидеть, что я только что добавил поля в один класс, и когда я встаю в середину другого, предложить добавить те же самое поля? (но, конечно, с обвязкой и стилем, характерными для нового класса).
Дописывать за программиста на js — так себе достижение. Вот когда она хотелки бухгалтера и обновления законов в код 1С дописывать научится, вот это прорыв будет. Вот тут-то рынок наш тряханёт на 15 баллов
Искусственный интеллект в программировании: чего ждать, чего бояться