python

Как Chat GPT повлияет на текущую систему образования?

  • среда, 1 февраля 2023 г. в 00:54:54
https://habr.com/ru/post/714002/
  • Python
  • Алгоритмы


Чтобы ответить на данный вопрос, я решил воспользоваться алгоритмами 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% понять человека он пока не может, поэтому человеку будет трудно описать боту интеграционные механизмы.