Как Chat GPT повлияет на текущую систему образования?
- среда, 1 февраля 2023 г. в 00:54:54
Чтобы ответить на данный вопрос, я решил воспользоваться алгоритмами 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
После достаточно простого перевода формулировки задачи на английский язык бот выдал следующую программу:
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% понять человека он пока не может, поэтому человеку будет трудно описать боту интеграционные механизмы.