Ранее я писал о том, что ChatGPT совершает безумные поступки в области разработки программного обеспечения.





Сегодня я хотел проверить, насколько сильны его навыки программирования, и попросил ChatGPT придумать программу Python для игры в крестики-нолики.

Вот код Python, сгенерированный ChatGPT.

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QGridLayout, QWidget


class TicTacToe(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.turn = "X"
        self.grid = QGridLayout()
        self.wid = QWidget()
        self.wid.setLayout(self.grid)
        self.setCentralWidget(self.wid)

        self.buttons = {}
        for i in range(3):
            for j in range(3):
                self.buttons[(i, j)] = QPushButton("")
                self.buttons[(i, j)].clicked.connect(lambda: self.play(i, j))
                self.grid.addWidget(self.buttons[(i, j)], i, j)

        self.show()

    def play(self, i, j):
        if self.buttons[(i, j)].text() == "":
            self.buttons[(i, j)].setText(self.turn)
            if self.turn == "X":
                self.turn = "O"
            else:
                self.turn = "X"


app = QApplication(sys.argv)
game = TicTacToe()
sys.exit(app.exec_())

Конечно, программа работает на PyCharm без каких-либо проблем с синтаксисом.

Но работает ли это так, как ожидалось? Нет!

Появляется окно PyQt, но ничего не работает, когда я нажимаю кнопки. После появления первого X на последней кнопке, независимо от того, где я нажимаю в окне, больше ничего не происходит.

Это связано с тем, как настроена функция clicked.connect кнопки. Лямбда-функция не вызывается должным образом. Это должно быть изменено немного, как это.

        for i in range(3):
            for j in range(3):
                btn = QPushButton("")
                name = str(i) + "-" + str(j)
                btn.setText("")
                btn.clicked.connect(lambda state, x=name: self.play(x))
                self.grid.addWidget(btn, i, j)
                self.buttons[name] = btn

Кхм… очевидно, ChatGPT ПОКА не заберет «все рабочие места по разработке программного обеспечения».

Но это все равно окажет существенное влияние, потому что на то, чтобы придумать даже этот базовый фреймворк, у программиста начального уровня может уйти от 4 до 5 часов. Опытный программист мог бы отладить это и исправить максимум за час или два.

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