Pull to refresh

Comments 37

По поводу csv columns. Похоже ИИ попутал column и comma/semicolon.

Как бы ожидаемо, искуственный, но не интеллект.

Все эти штуки рождаются из непонимая разницы между интеллектом и машиной, они разные, имеют свои сильные стороны и должны использоваться в связке, а не заменять друг друга.

Задача интеллекта - понимать что надо и объяснить как это делать тупой машине так чтобы ей не надо было ничего угадывать, она-то не понимает, но если объяснили на её языке - будет делать без ошибок, что для человнка недостижимо.

Мужик заходит к приятелю и видит, что тот играет в шахматы со своей собакой.

— Какая умная собака!

— Умная? Да я веду со счетом 3: 2!

Кажется, питонисты часто пишут такой lazy-evaluation класс

Есть же itertools.partial, или я что-то не понял?

Много времени тратится на его проверку, когда он напишет код похожий на правду, а окажется, что дьявол в деталях. Легче сразу самому писать, чем за ИИ проверять.

Так напишите ИИ-тестировщик. Будет у вас ИИ-разработчик, ИИ-тестировщик. Тогда вы сразу становитесь уже тимлидом и можете говорить что были руководителем групппы разработки)

Главное — всё это запродать инвестору, а код можно уже и не писать )

В идеальном случае проверка осуществляется юнит тестами, которые в идеальном случае надо писать вне зависимости от того сам код пишешь или кто-то/что-то другой )

Половина претензий и к человеческому коду вполне применима)

Имхо это примерно как за джуном проверять..

Перед каждой функцией длиннющий комментарий, который говорил пилоту, что
нужно закодить. Куда этот комментарий девать? Удалять? Я не для
удаления свой цветок выращивал, жалко же! Оставлять тоже тупо, он же
просто описывает, что делает функция. Если не писать комментарий, а
только название функции, то пилоту этого контекста может быть мало

А он не умеет тело функции писать после описанного докстринга? Так была бы на выходе как раз полезная побочка в виде докстринги, на которую уже не забъешь, вместо бесполезного комментария перед функцией только шоб работал copilot)

Почему-то многие (или даже большинство) разработчиков систем связанных с ИИ не возвращают процент достоверности результата. А это бы значительно облегчило бы жизнь пользователям. Если бы система OCR указала все места, где она не уверена, что распознала правильно, это бы сильно облегчилов проверку правильности распознавания. Если бы этот CoPilot указывал степень своей уверенности в правильности предлагаемого решения, то наверное можно было бы подобрать порог под себя.

OCR от ABBYY (in my humble opinion, очень неплохой) именно так и делает, например.

Мой опыт работы с Copilot очень позитивный. И я считаю что за ним будущее, ниже я напишу, почему так считаю.


Вот пара наглядных примеров:


  1. Я создал переменную VERSION и хотел вывести ее перед дальнейшим использованием. Copilot сам подсказал мне эту строчку:
    image
  2. Я создал выше в файле константу DEFAULT_TOP_LENGHT и когда начал печатать slice, Copilot предложил мне подходящую конструкцию:
    image

Большую часть времени я пишу на Typescript с достаточно высокой скоростью, поэтому Copilot особо не даёт преимуществ в написании. Иногда даже мешает. Однако вот пара моментов, когда такой инструмент очень полезен:


  1. Когда пишешь интерпрайз-код и хорошо структурированный код, тогда подсказки почти всегда грамотные и по делу. А если пишешь как попало, то и подсказки будут странные.
  2. Когда пишешь на малознакомом языке. К примеру, я не часто пишу на Питоне, но когда начинаю что-то на нем писать, то Copilot предлагает исключительно грамотные подсказки и конструкции. Так бы мне пришлось гуглить и смотреть в справочнике.
  3. Когда пишешь какие-то какие-то простые функции, к примеру, конвертацию кэмел сейса в кебаб кейс. Как только ты название функции объявил — тебе уже подсказывается полное тело такой функции. Словного Copilot скопировал топовый вариант ответа со Stackoverflow.

Из недостатков:


  1. HTML подставляет отвратительно (циклит div'ы и тд)
  2. Всё же код нужно читать, которыйон подставляет, потому что так могут затесаться ошибки;

Вообще я думаю что за Copilot'ом будущее и тимлидам придётся в будущем читать много кода, держа в голове то, что часть этого кода написана при участии Copilot'а.

Ну так даже в вашем первом примере текст "Updating version to" неверный, вы берёте текущую версию, а Copilot думает что это новая версия, до которой нужно обновиться. По поводу второго примера - а что если в коде 2 константы? Неужели каждый раз за ним проверять проще, чем просто написать что нужно, не отвлекаясь?

Иногда он косячит и не всегда хочется включать запись, чтобы поймать блестящие моменты, поэтому тут ординарные моменты чисто для примера:

  1. На самом деле это не первый скрипт в цепочке и файл уже содержит именно новую версию, так что всё правильно тут;

  2. Это была последняя созданная мною константа, поэтому, видимо, он предложил вставить её.

Когда пишешь на малознакомом языке. К примеру, я не часто пишу на Питоне, но когда начинаю что-то на нем писать, то Copilot предлагает исключительно грамотные подсказки и конструкции.

Рад вашей уверенности в правоте Copilot.

Пользуюсь copilot уже чуть ли не год. Использовать его для написания законченных методов/функций/классов плохая идея, но он отлично экономит вам время именно с простыми вещами, пишите 2-3 символа и нажимаете tab и вот у вас уже готовая строчка кода, причем он умеет понимать окружающий контекст, переменные, атрибуты, имена методов и классов. В итоге это сильно экономит силы и время потому что не надо писать банальный код, которого процентов 90, а можно сосредоточится на задаче или каких то действительно сложных местах.

Перед каждой функцией длиннющий комментарий, который говорил пилоту, что нужно закодить. Куда этот комментарий девать? Удалять? Я не для удаления свой цветок выращивал, жалко же! Оставлять тоже тупо, он же просто описывает, что делает функция. Если не писать комментарий, а только название функции, то пилоту этого контекста может быть мало

Конечно, оставлять, так и надо, вообще-то, это же design by contract.

Ещё бы он научился выводить код из тестов, и из TDD можно выкинуть development.

Они словно Нео из "Матрицы" - что-то делают, но сами не знают, почему и зачем. И пока программы не научатся понимать причину, а не следствие, пока они не научатся отказываться делать бессмысленные вещи, пока не начнут предлагать альтернативные решения и думать - моя профессия в безопасности.

В этом или след году копилот уже будет мидлом

Хотелось бы именно персонального помощника, чтобы он постоянно наблюдал за работой хозяина учился на этом материале. В идеале, чтобы хостился не у Microsoft, а локально.

Локально железо не вывезет кажется. Особенно учиться.

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

exluding blank lines

учитывая что оно exclude удивительно, что он хотя бы частично понял, что надо сделать

Но вообще эксперимента ради предложил бы использовать нейронку потупее - TabNine. Оно дообучается на файлах проекта и не вбрасывает дикие пелёнки.

Но когда лезешь «под капот», то иллюзия рушится: это были просто дескрипторы особых точек на фото и немного машинного обучения, чтобы находить паттерны в этих дескрипторах и говорить, что на фото на 60% собака и на 40% строительный кран.
А в чем принципиальная разница с человеческим зрением? Тот же поиск паттернов и сопоставление с имеющейся базой образов в голове. Так же может глючить, на чем основана куча т.н. «оптических иллюзий», так же впадет в ступор если показать что-то совершенно новое ни на что не похожее из ранее виденного.

Человек в первую очередь обращает внимание на форму, опредленные части тела и учитывает контекст. А нейронки просто вытаскивают паттерны текстур. Поэтому человек врядли перепутает полосатую собаку с тигром в отличии от нейронки. Но думаю, в будущем найдут решение этих проблем.

Пользуюсь copilot в связке с UnrealEngine. Кайфую

Да, он зачастую несёт бред в достаточно сложных местах, но офигенно подсказывает, когда ты пишешь логгирование, подставляет достаточно правильно тривиальную логику, и с синтаксисом С++, к которому я до конца не привык после долгих лет на JS и Python, справляется лучше, чем я :)

Есть дабота любимая - писать [говно]код. А есть нелюбимая - разбираться в [говно]коде. Copilot - попытка превратить любимую работу в нелюбимую. Спасибо, конечно, ребята, но я пока воздержусь.

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

Просто с копилотом нужно уметь работать. Знакомый стал куда лучше на нем писать после того как поигрался с нейронками генерирующими рассказы. Есть принципы, по которым можно получить хороший код, есть принципы если нарушать их можно получить только хрень. Например

# iterate over large list of numbers and multiply each number by 2

вангую если дописать сюда lazy или подобную штуку то он напишет ленивый итератор прямо как хотелось автору.

Ну и так далее. Давайте больше контекста, будет лучше результат. Я сам насмотревшись на копилот у коллеги подался на участие, но пока вот жду в очереди( Но когда он показывал свою работу в офисе с ним — очень впечатлился. Навык правильно описывать задачку для нейронки похож на навык написания поисковых запросов в гугл — мне вот тоже некоторые люди говорят что гугл говно и ничего не находит, тогда как я их вопрос могу найти на первой странице за 1 минуту. Просто у людей обычно такой навык отсутствует.

Тренируйте его, и будет у вас все хорошо. Одно из главных правил — если писать хорошо, то нейронка будет подсказывать код/текст который написан хорошо. Если писать плохо — то будет плохой код. Из экспериментов с нейронкой которая пишет рассказы (а копилот по словам человека играющегося с обеими — очень схож), жирный текст написан человеком, остальное сгенерировано. Обратие внимание на слог и стиль входного текста — он весьма хорош.
I am a government spy drone operator who currently operates a spy drone cleverly disguised as a pigeon. Everybody is convinced that my drone is a real pigeon. I arrive at work today and sit down at my console, it is time to spy on some people for the government. I take control of the fake pigeon.

I walk around the small parking lot with my little pigeon feet, and stop to see a piece of bread on the ground. There are people nearby so to act natural I feign eating that small piece of bread. Once the people pass I look around at my surroundings. I am in a small parking lot in the suburban commercial district of Johnsonville in front of a Domino's Pizza shop. When I say small parking lot I mean SMALL parking lot, there are not many people here either. I start to fly over to the larger parking lot right next to this one and I land in front of a pastry and water shop. I decide the best time is the present to start spying on people for the government. I use my little pigeon feet to waddle over to the window of the shop and peek in to see an older man buying water, ladies and gentlemen we got him. I zoom in to see if he is committing tax fraud. He is not commiting tax fraud, I guess we will catch someone for that eventually. When the man opens the door to leave I quickly scurry into the small shop. The shop owner is confused and tries to shoo me out. What an unpatriotic little bitch to try to shoo out a government spy drone like that. I give him what he wants and waddle out of the store, then fly up and poop on his car. I then start flying to the far end of the parking lot and arrive in front of a furniture store. Bingo, this will be a lot easier to slip into and see if anyone is commiting tax fraud. I wait for someone to open the door and I quietly waddle in.

I fly to the back corner of the store where there are no customers. I take flight again and fly all around the furniture store looking for tables or chairs that would be easy for me to hide under. I spy on the store owner as he walks around the store talking on his cell phone. He doesn't seem very worried about me yet, but I need him to get more paranoid. It is time for phase two. I fly into the main store area and slowly drift towards the register counter. As I move forward I know the owner will hear me before I reach the register. I circle the store around the customer side, avoiding the customer's faces so they don't freak out. I land by the register and waddle up to the register. The owner notices me and tries to scare me away, saying «No way pigeon! I'm not paying you any money!». That is when it hits me, he thinks I am a real pigeon! I decide to give him the bird for trying to kick me out. I spread my wings wide and let loose with a big fart right in front of his face.

«HA HA!!» I say with a laugh as everyone hears me. The owner looks at me in shock then it dawns on him that he has a pigeon sitting on his counter. I make sure the camera captures every detail of this moment. «You are a bad pigeon… I should get the police to arrest you!» the owner says angrily. I fly over to the owner and poop on him again just to piss him off even more. He tries to shoo me out but I am having none of that. Finally, I give up and go back to my perch by the window.
I look around my new surroundings. It is a nice little apartment complex next to Domino's Pizza shop. There are a few apartments here but only two have people in them. The first is an older couple living there. They seem like the kind of people who would be good subjects for tax fraud. I zoom in on their activities for the day. She goes in to work at the grocery store and he plays golf with some friends. Sounds boring. I start thinking about what else I can do while waiting for the right time to fly into the apartments and spy.
All of a sudden I hear a loud pop from outside the apartments. Someone has shot a gun! The building shakes a bit and everyone runs out into the parking lot. Gunshots were not supposed to happen in this area. I quickly fly up to the roof of the apartments and see two cars on fire. Oh crap, these two guys must have been engaged in gang activity. That is very bad news for them. I start to think about what to do next when I realize something. These two guys have killed each other! Wow, they really are stupid criminals. There is no point in spying on them anymore.
I fly back down to the ground and walk through the front door of the apartments. It is kind of funny looking at all the people running around trying to find the shooter. I decide to go back to my perch by the window and wait for something to happen. After a few hours I hear loud noises again outside. This time it sounds like a car crash. It sounds like someone is getting run over by a car. I look out the window and see one of the apartments burning. Something is going on, maybe it's another shooting. Maybe a gang war. I can't tell yet. All I know is that there are people running around outside trying to help.
A new person comes into view walking through the parking lot. He seems to be the police chief. I slowly fly towards him and land behind him. This is my chance to get some real action happening. I waddle up to the guy and poop on his shoulder. He turns around and sees me. «What do you want?» he asks in a rude tone. That is not good enough! I need someone to pay attention to me. It might take time but we will get them eventually.
Мой опыт с резиновым мужиком. Github Copilot

закончился на:
[INFO] [auth] [2022-05-23T21:34:17.433Z] Invalid copilot token: missing token: 404 
[ERROR] [default] [2022-05-23T21:34:17.450Z] GitHub Copilot could not connect to server. Extension activation failed: "User not authorized"


PS GitHub Copilot is already enabled on your account! Install GitHub Copilot now. + vpn (us)
PSS возможно проблема в VSCodium?!

Большое спасибо за содерждательную статью, и за отсылку к прелестному фильму!
А не подскажете ли, пожалуйста, когда Вам (не только автору статьи, но и другим, кто пользовался Copilot приходило приглашение - это было приглашение в GitHub экаунте, или что то приходило на привязанный мейл?

На почту приходит приглашение

Если узор созвездий подобен луку тугому, а череда жизней душных — тетиве 

неразрывной, то даже в природе нет ничего неподходящего для нас. Не все 

живые организмы представляют собой просто природные объекты, которые не 

приносят никакого удовольствия. Но все живые организмы представляют собой 

просто природные объекты, которые не приносят никакого удовольствия. 

© Copilot

Sign up to leave a comment.

Articles