Чтобы ответить на данный вопрос, я решил воспользоваться алгоритмами chat gpt для решения достаточно простой задачи по программированию на python. Данная задача была взята из курса ВШЭ по python, и, я полагаю, что её уровень сложности сопоставим с лабораторной работой по информатике на 1 курсе ВУЗа. Вполне вероятно её использование и в обучении на популярных онлайн‑курсах. Данная задача была выбрана, как реальный пример для обучения Python. Понятно, что для опытных программистов данная задача покажется легкой прогулкой.

Задача

Задача состоит в том, чтобы написать программу, имитирующую систему управления счетами клиентов. Данная система должна поддерживать следующие операции:

  • пополнение счета клиента;

  • снятие со счета;

  • запрос остатка денег по счету;

  • перевод между клиентами;

  • начисление процентов по вкладу.

Входные данные включают в себя количество передаваемых строк. В следующих строках через пробел вводятся название операции, имена клиентов и сумма операции.

# входные данные
7
DEPOSIT Ivanov 100
INCOME 5
BALANCE Ivanov
TRANSFER Ivanov Petrov 50
WITHDRAW Petrov 100
BALANCE Petrov
BALANCE Sidorov

На выходе программа должна вывести только функцию запроса баланса (остатка) по счету клиента. Если такого клиента нет в банке, то программа выводит «Error»:

# вывод
105
-50
ERROR

Решение chat gpt

После достаточно простого перевода формулировки задачи на английский язык бот выдал следующую программу:

class BankAccount:
    def __init__(self, name):
        self.name = name
        self.balance = 0
        
    def deposit(self, amount):
        self.balance += amount
        
    def withdraw(self, amount):
        self.balance -= amount
        
    def transfer(self, other, amount):
        self.balance -= amount
        other.balance += amount
        
    def income(self, p):
        self.balance += int(self.balance * p / 100)
        
class Bank:
    def __init__(self):
        self.accounts = {}
        
    def deposit(self, name, amount):
        if name not in self.accounts:
            self.accounts[name] = BankAccount(name)
        self.accounts[name].deposit(amount)
        
    def withdraw(self, name, amount):
        if name not in self.accounts:
            self.accounts[name] = BankAccount(name)
        self.accounts[name].withdraw(amount)
        
    def balance(self, name):
        if name in self.accounts:
            return self.accounts[name].balance
        else:
            return "ERROR"
        
    def transfer(self, name1, name2, amount):
        if name1 not in self.accounts:
            self.accounts[name1] = BankAccount(name1)
        if name2 not in self.accounts:
            self.accounts[name2] = BankAccount(name2)
        self.accounts[name1].transfer(self.accounts[name2], amount)
        
    def income(self, p):
        for account in self.accounts.values():
            if account.balance > 0:
                account.income(p)

bank = Bank()

# Example usage
bank.deposit("John Doe", 1000)
bank.deposit("Jane Doe", 500)
bank.withdraw("John Doe", 200)
print(bank.balance("John Doe")) # 800
print(bank.balance("Jane Doe")) # 500

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

def bank_operations(n, operations):
    bank = {}
    for i in range(n):
        operation = operations[i].split()
        if operation[0] == "DEPOSIT":
            name = operation[1]
            amount = int(operation[2])
            if name in bank:
                bank[name] += amount
            else:
                bank[name] = amount
        elif operation[0] == "WITHDRAW":
            name = operation[1]
            amount = int(operation[2])
            if name in bank:
                bank[name] -= amount
            else:
                bank[name] = -amount
        elif operation[0] == "BALANCE":
            name = operation[1]
            if name in bank:
                print(bank[name])
            else:
                print("ERROR")
        elif operation[0] == "TRANSFER":
            name1 = operation[1]
            name2 = operation[2]
            amount = int(operation[3])
            if name1 in bank and name2 in bank:
                bank[name1] -= amount
                bank[name2] += amount
            elif name1 in bank:
                bank[name1] -= amount
                bank[name2] = amount
            elif name2 in bank:
                bank[name1] = -amount
                bank[name2] += amount
            else:
                bank[name1] = -amount
                bank[name2] = amount
        elif operation[0] == "INCOME":
            p = int(operation[1])
            for name in bank:
                if bank[name] > 0:
                    bank[name] += bank[name] * p // 100
    return bank

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

К чему это всё?

На мой субъективный взгляд появление chat gpt полностью изменит текущую систему обучения. Ведь теперь, чтобы решить ту или иную задачу онлайн‑курса или написать код для лабораторной работы в ВУЗ, достаточно просто вбить формулировку упражнения в chat gpt и спустя минуту вы получаете готовый код, который сразу же проходит все тесты.

Изменения на рынке труда

Думаю, что это повлечет за собой то, что на рынке будут невостребованными профессия junior — разработчика, так как его функции с быстротой и легкостью исполнит ИИ (косвенно об этом свидетельствуют массовые увольнения IT — специалистов в ведущих компаниях мира). Следовательно, системы обучения должны будут подстроиться под подготовку разработчиков уровня middle/senior. На данный момент такое образование на выходе получают только выпускники престижных российских вузов, обучающиеся на топовых специальностях, у которых за плечами большой портфель из разного рода проектов.

Изменения в образовании

Появление chat gpt явно поставит проблемы перед рынком онлайн‑курсов по IT с целью обучения той или иной профессией, который был и без того сомнительным. Однако полагаю возрастет важность «понимания» кода ( в частности ответа chat gpt), причем не только 1 конкретного языка программирования, а нескольких языков. Что касается ВУЗов, то программа обучения должна существенно усложниться, чтобы выпускать разрботчиков более высокого уровня. Приведенный пример использования chat gpt позволяет понять, что текущие обучающие задачи ИИ щелкает, как орешки)

Изменения в стеке программистов

Что касается стека программистов, то, я полагаю, что он будет постепенно расширяться. Ведь теперь для написания программного кода не треубется уметь писать код конкретном языке программирования — достаточно понимать синтаксис ответа от ИИ. Также полагаю увеличится потребность у компаний в интеграционных взаимодействиях как в одной системе (между разными кусками кода), так и между разными системами. Во‑первых, на разработку кода будет уходить меньше времени, и за одинаковый промежуток времени можно зарелизить большее количество функций. Во‑вторых, всё таки бот это бот, и на 100% понять человека он пока не может, поэтому человеку будет трудно описать боту интеграционные механизмы.

Комментарии (26)


  1. randomsimplenumber
    31.01.2023 17:29
    +1

    Как этот chatgpt решает задачи из leetcode?


    1. anonymousmaharaj
      31.01.2023 17:47

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


      1. iig
        01.02.2023 08:07

        Чорт с ним, с leetcode. Как насчет классики?

        Пусть сочинит стихотворение о кибэротике! – сказал он наконец, радостно усмехаясь. – Пусть там будет не больше шести строк, а в них о любви и измене, о музыке, о неграх, о высшем обществе, о несчастье, о кровосмесительстве – в рифму и чтобы все слова были только на букву К!


    1. anonymousmaharaj
      31.01.2023 21:57

      Скриншоты

      Я взял первую попавшуюся хардовую задачу с литкода, прям через копи-паст вставил в ChatGPT и её ответ засунул обратно в литкод. Прошло с первого раза. В принципе что и следовало ожидать, но правда смысла от такого решения 0, разве что разобрать задачу, если сам прям не можешь сделать.


    1. Lolka555
      31.01.2023 23:40
      +1

      Решает достаточно слабо.
      Проверял на acmp/codeforces/codechef и известных задачах с ИОИП/ВСОШ гуляющих по сети.
      На уровне C (800 - 1200 рейтинга CF) решает конечно отлично (математика, ДП, комбинаторика, brute force), но начиная примерно с B (1400 - 1600 CF) задачи для нее становиться нереальными. Дальше DFS/BFS вы корректного ответа не получите, при том осмелюсь сказать, что ошибки довольно незначительны. Но если возьмете задачи уровня 1600+ вас будет ждать полное разочарование. Ошибки в логике, неправильный расчет временной сложности, неправильное использование методов ускорения (касается дерева отрезков и sqrt/HL decomposition) и тд.

      P.S
      Но замечу что задачи для ПИ (программной инженерии) она решает с легкостью (в статье как раз таки этот пример с расчетной программой). Так chatgpt смог решить высоко балльную задачу на отбор на "Интенсивы по анализу данных" Яндекс.


      1. Elena-314
        01.02.2023 11:23

        а что за интенсивы?


  1. aweawem
    31.01.2023 17:45
    +10

    Системы обучения никогда не смогут подстроиться под подготовку разработчиков уровня middle/senior, так как этот уровень сеньёрити подразумевает как раз таки большой практический опыт разработки для бизнеса, участие в бизнес-процессах и высокий уровень организации работы и процессов. То есть это буквально разработчик, который заработал свой опыт, а не выучил его. Ни один вуз на данный момент не сможет подготовить мидла. Это возможно только если этот «мидл» с 2-3 курса подрабатывает джуном, и вот тогда да, на выходе якобы из университета получается мидл. То есть тут вопрос не столько в качестве и объёме образования в университете, сколько в том, чтобы сделать эту нагрузку (и расписание) такой, чтобы студент мог работать с 3 курса. А текущая волна увольнений не что иное, как последствия мирового кризиса, истоки которого очень далеки от прогресса ИИ. И да, если этот ИИ и повлияет на работу джуна, то только в виде того, что понадобится больше джунов-отладчиков кода, быстро и не всегда красиво нагенеренного ИИ, сеньоры таким заниматься не будут.


  1. IvanGanev
    31.01.2023 18:09
    +6

    Думаю, что это повлечет за собой то, что на рынке будут невостребованными профессия junior - разработчика, так как его функции с быстротой и легкостью исполнит ИИ

    Джунов обычно берут на вырост. Основная задача джуна - понимать процессы в компании и принятый в компании стек. Это чатgpt делать умеет?

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

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

    Появление chat gpt явно поставит проблемы перед рынком онлайн-курсов по IT с целью обучения той или иной профессией, 

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


  1. stdrone
    31.01.2023 18:40
    +4

    Данная программа с первого раза прошла все тесты, и не потребовала ни одного изменения в коде программы.

            elif operation[0] == "WITHDRAW":
                name = operation[1]
                amount = int(operation[2])
                if name in bank:
                    bank[name] -= amount
                else:
                    bank[name] = -amount

    т.е. здесь всё норм?


    1. nochkin
      31.01.2023 21:27
      +1

      Вроде всё так. Если банка нет, то будет отрицательная баланс.

      "ERROR" возможен только на проверки баланса.


  1. volkkrash
    31.01.2023 23:40
    +1

    Жаль тех добряков, у которых будет вертеться приложение со 100500 elif


  1. ikostruba
    01.02.2023 00:35
    +2

    Прикольно, лет 10 назад и представить было трудно, что подобный уровень будет достигнут.
    Интересно, как ChatGPT сможет поддерживать кодовую базу, исправляя баги и добавляя фичи, не ломая обратную совместимость и не приводя БД в некорректное состояние? Мне кажется, что пока еще не сможет, но в будущем дойдёт и до этого.

    Я довольно давно играю в Го, и там был похожий процесс: сначала программы могли соперничать только с новичками, потом, с внедрением алгоритмов Монте-Карло, они начали побеждать сильных любителей, люди начали использовать такие программы для анализа партий и тренировок. Закончилось это появлением AlphaGo, которая начала разносить в пух и прах сильнейших профи, и анализ партии с помощью нейросети стал уже мэйнстримом. Причем, даже если лоди не понимают, почему надо играть именно так (но чаще всего понимают), ход программы, видимо, всё равно правильный.

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


  1. aaa_bbb
    01.02.2023 06:55
    +1

    Писал уже где-то в комментариях про ЧатЖПТ - но повторюсь - возможно наконец-то, у людей будет меньше времени занимать рутина, и останется больше времени на качество и оптимизацию.

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


  1. Zara6502
    01.02.2023 08:03
    +1

    На мой субъективный взгляд появление chat gpt полностью изменит текущую систему обучения.

    Нет

    Ведь теперь, чтобы решить ту или иную задачу онлайн‑курса или написать код для лабораторной работы в ВУЗ, достаточно просто вбить формулировку упражнения в chat gpt и спустя минуту вы получаете готовый код, который сразу же проходит все тесты.

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

    Думаю, что это повлечет за собой то, что на рынке будут невостребованными профессия junior

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

    косвенно об этом свидетельствуют массовые увольнения IT — специалистов в ведущих компаниях мира

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

    Следовательно, системы обучения должны будут подстроиться под подготовку разработчиков уровня middle/senior

    Нет. Потому что ни одна система обучения не занимается подготовкой джунов.

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

    Вы зря думаете что факт обучения в каком-то вузе это 100%-я гарантия успеха.

    Появление chat gpt явно поставит проблемы перед рынком онлайн‑курсов по IT с целью обучения той или иной профессией, который был и без того сомнительным

    И какие именно проблемы? Я вижу только одну - товар пытаются втюхать всем подряд, хотя очевидно что и 5% из всех людей окончивших курсы не являются гениями. Это просто бизнес-модель. Обучение как всегда, внезапно, подразумевает только возможность, а воспользуетесь ли вы ей, есть ли у вас природный дар к чему-то или вы просто балбес купивший курсы - система про такое не знает.

    Однако полагаю возрастет важность «понимания» кода ( в частности ответа chat gpt), причем не только 1 конкретного языка программирования, а нескольких языков

    Порой понять написанное проще чем правильно составить запрос. Это видно на тестовых системах вроде ЕГЭ, где у вас в вариантах ответов один уже 100%-но верный.

    Что касается ВУЗов, то программа обучения должна существенно усложниться, чтобы выпускать разрботчиков более высокого уровня

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

    Приведенный пример использования chat gpt позволяет понять, что текущие обучающие задачи ИИ щелкает, как орешки

    И какая полезность в этом для конкретного Васи? Для бизнеса я могу придумать пару направлений по использованию чата, но для школьника и будущего студента польза нулевая. Вот для меня, как для независимого разработчика он полезен, мне не нужно учить питон чтобы написать скрипт который делает простой конвертер спрайтов. С этой задачей уже сейчас неплохо справляются различные форумы по интересам и гугл.

    Ведь теперь для написания программного кода не треубется уметь писать код конкретном языке программирования — достаточно понимать синтаксис ответа от ИИ

    Вот смотрите. Я когда сам пишу код, я в него погружаюсь, он в моей голове обрастает, цепляется корнями. Когда я читаю чужой код я вообще не понимаю зачем так было делать что-то. Это мешает, сбивает с толку, угнетает и ТОРМОЗИТ работу. Поэтому не все очень хорошие программисты кинутся использовать чат, просто потому, что ему потом с этим кодом работать. Поэтому как дополнительный инструмент - вероятно, как основной - сомнительно (во всяком случае в ближайшее время).

    Во‑первых, на разработку кода будет уходить меньше времени, и за одинаковый промежуток времени можно зарелизить большее количество функций

    На основании чего такое предположение, на основании куска кода в 50 строк? Я сомневаюсь что в ближайшие лет 10 чат дорастёт до состояния когда можно будет сказать "мне нужна виндовс 25 с блекджеком и ш" и чат выдаст вам ISO образ. Я уверен что запрос к чату о том, какая вин25 должна быть и с какими технологическими и дизайнерскими решениями - будет по количеству строк ничуть не меньше чем сам код. А главное - как вы потом это будете тестировать?

    ---

    Итог - вы бежите впереди паровоза и как Гарри Гаррисон уверены, что могут быть роботы, которые сами в себя подсыпают угля, антропоморфны, грациозны и умны.

    ЧатГПТ - это мощный сложный инструмент, который находится в стадии производства. Он безусловно внесёт новое в привычную жизнь и несомненно убьёт пару тройку рабочих мест (я не про общее число, а про конкретные позиции), но не будет никакой тотальной замены всего и вся на чат (если будет, то - остановите землю я сойду и тут не вопрос в том что я старый, а в том что это могут сделать только идиоты).


    1. Zara6502
      02.02.2023 04:44

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

      я в 93 году уже за деньги писал код для сокурсников на ассемблере. Препод быстро увидел что по стилю написания лабы делали 2-3 человека. Но ему было все равно кто написал код, ему было важно чтобы списавший смог всё объяснить и не плавал в теме, а это уже сделали немногие. В любом случае тот кто думает что сломал систему и получил оценку даром интересно как будет работать в принципе?


  1. vk4arm
    01.02.2023 09:37

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

    По коду, который она сгенерила - ну так себе.
    Я для кассандры попросил сделать graph traversal - получил очень связный текст, примеры DDL, SQL, но.... если почитает человек - скажет "ОГО", но если посмотреть внимательней - она навтыкала того, чего в кассандре просто нет (например with).

    Для ряда фибоначчи - дала самый простой код, который скорее школьник даст. Но тут нюанс - а как оценивается качество? Ведь самый простой == самый понятный.

    А вот что касается гуманитарных вопросов - она решает очень хорошо. + очень хорошо умеет в объяснялки, где ответ уже есть.
    Например, "связь dex с defi" она напишет красиво, а вот бредовый вопрос - нет.

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

    Например, можно поспать )))))


    1. Neikist
      01.02.2023 10:18

      А вот что касается гуманитарных вопросов — она решает очень хорошо. + очень хорошо умеет в объяснялки, где ответ уже есть.

      Да вот не сказал бы. Пробовал из эксперимента использовать как препода по английскому — временами выдумывала какие то странные правила, и это на простых темах вроде объяснения present simple. Попросил ее рассказать о японском языке — вообще билиберду нести начала.


      1. vk4arm
        01.02.2023 17:02

        такое не спрашивал )


  1. 18741878
    01.02.2023 10:44

    Как ChatGPT ответит на старый вопрос: ты продолжаешь бить свою жену?


    1. Neikist
      01.02.2023 11:24

      По идее ответит что так как он ИИ у него нет и не может быть жены. А еще бить ему кого либо просто нечем.


      1. 18741878
        01.02.2023 12:47

        Любой ответ "да" или "нет" на этот вопрос для человека выглядит нелепо. Допустим "да": буду продолжать бить. А если "нет": значит, раньше бил, а сейчас перестал )

        Другой вопрос из этой же серии: парадокс критянина (Эпименида). Ищется легко

        Или совсем просто "Это высказывание ложно". Говорю я правду или лгу?


    1. Revertis
      01.02.2023 15:23

      У нас спрашивали "твоя мама знает, что ты дурак?".


    1. vk4arm
      01.02.2023 17:03

      ты продолжаешь бить свою жену?

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


      1. 18741878
        01.02.2023 17:19

        Допустим, что так. Но позже я привел еще один вариант вопроса (уже довольно абстрактного характера) для которого был бы интересен ответ.

        Кстати, следующий вопрос: а почему я должен тебе (т.е. ChatGPT) верить (шутка)?


  1. svk2016
    01.02.2023 13:23

    Скрипт с такими возможностями у меня в me был. Для C++. В первой половине 90-ых.


  1. SithPasha
    01.02.2023 18:21

    я так пока и не понял ... решает ли этот чат бот что то
    или тупо ищет в миллиардах ответов в интернете
    ибо всё , что он делает по сути ... мало кому нужно
    когда просят написать простенький код на простенькую задачу
    он пишет тонну IF-ов
    где по ходу не нашёл ответ и просто методом состыковки
    кучи ответов , что нашёл и разобрал
    рисует ханойскую башню IF-ов
    самое смешное ... когда ему пытаются скормить задачу
    которую нагуглили с каких то тестов и конкурсов
    если её нагуглили оттуда ... то вероятность нахождения гуглением
    решения тоже равна 80%
    ну по мне это более жирный гугл
    но ... если задача сложнее почесать яйцо
    то проверка , что он там тебе сделал
    займёт в разы больше чем сделать самому
    хм ... хотя почесать яйцо ... тоже в целом гипер-инженерная задача
    связанная с знанием анатомии и биомеханики