2025年,人工智能(AI)技术正以惊人的速度渗透到我们生活的方方面面。编程领域也不例外,AI编程工具的涌现,让代码编写效率和质量都得到了极大提升。
本文将聚焦三款备受瞩目的AI编程工具:GPT、Gemini和DeepSeek,通过三个精心设计的编程题目,考察它们在代码生成、问题解决和数据库设计等方面的能力。
三道试金石,谁是AI编程王者?
为了全面评估三款AI工具的实力,我们设置了三道具有代表性的题目:
-
小球弹跳:
- 题目: 编写一个程序,实现一个小球在一个三角形内部弹跳,碰到边界则反弹。
- 考察: 几何算法、物理模拟、编程逻辑。
-
贪吃蛇游戏:
- 题目: 编写一个功能完善的贪吃蛇游戏,包括食物、碰撞检测、计分等。
- 考察: 游戏逻辑、数据结构、用户交互。
-
图书管理系统数据库设计:
- 题目: 设计一个图书管理系统的数据库,包括表结构设计、表关系定义、完整SQL代码编写。
- 考察: 数据库设计、SQL语言、系统架构。
三强争霸,AI编程哪家强?
第一道题的测试结果:
DeepSeek:

Gemini:

GPT:

第二道题的测试结果:
DeepSeek:

Gemini:

GPT:

第三道题的测试结果:
DeepSeek:
-- 表结构创建SQL
-- 创建数据库
CREATE DATABASE IF NOT EXISTS library_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
USE library_db;
-- 用户表
CREATE TABLE users (
user_id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
real_name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
phone VARCHAR(20),
role ENUM('admin', 'librarian', 'user') DEFAULT 'user',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- 出版社表
CREATE TABLE publishers (
publisher_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) UNIQUE NOT NULL,
address VARCHAR(200),
contact_phone VARCHAR(20),
contact_email VARCHAR(100)
);
-- 分类表
CREATE TABLE categories (
category_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) UNIQUE NOT NULL,
parent_id INT DEFAULT NULL,
FOREIGN KEY (parent_id) REFERENCES categories(category_id) ON DELETE SET NULL
);
-- 图书表
CREATE TABLE books (
book_id INT AUTO_INCREMENT PRIMARY KEY,
isbn VARCHAR(13) UNIQUE NOT NULL,
title VARCHAR(200) NOT NULL,
author VARCHAR(100) NOT NULL,
publisher_id INT NOT NULL,
publish_date DATE,
price DECIMAL(10,2),
total_copies INT DEFAULT 1 CHECK (total_copies >= 0),
available_copies INT DEFAULT 1 CHECK (available_copies >= 0),
category_id INT NOT NULL,
location VARCHAR(50),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (publisher_id) REFERENCES publishers(publisher_id),
FOREIGN KEY (category_id) REFERENCES categories(category_id)
);
-- 借阅记录表
CREATE TABLE borrow_records (
record_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
book_id INT NOT NULL,
borrow_date DATE NOT NULL,
due_date DATE NOT NULL,
return_date DATE,
status ENUM('borrowed', 'returned', 'overdue') DEFAULT 'borrowed',
FOREIGN KEY (user_id) REFERENCES users(user_id),
FOREIGN KEY (book_id) REFERENCES books(book_id),
INDEX idx_borrow_user (user_id),
INDEX idx_borrow_book (book_id)
);
-- 预约表
CREATE TABLE reservations (
reservation_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
book_id INT NOT NULL,
reserve_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
status ENUM('pending', 'fulfilled', 'canceled') DEFAULT 'pending',
FOREIGN KEY (user_id) REFERENCES users(user_id),
FOREIGN KEY (book_id) REFERENCES books(book_id),
UNIQUE KEY unique_reservation (user_id, book_id),
INDEX idx_reserve_user (user_id),
INDEX idx_reserve_book (book_id)
);
-- 触发器:更新图书可借数量
DELIMITER $$
CREATE TRIGGER after_borrow
AFTER INSERT ON borrow_records
FOR EACH ROW
BEGIN
UPDATE books
SET available_copies = available_copies - 1
WHERE book_id = NEW.book_id;
END$$
CREATE TRIGGER after_return
AFTER UPDATE ON borrow_records
FOR EACH ROW
BEGIN
IF NEW.return_date IS NOT NULL AND OLD.return_date IS NULL THEN
UPDATE books
SET available_copies = available_copies + 1
WHERE book_id = NEW.book_id;
END IF;
END$$
DELIMITER ;
-- 索引优化
-- 添加复合索引
CREATE INDEX idx_book_search ON books(title, author);
CREATE INDEX idx_user_activity ON borrow_records(user_id, borrow_date);
-- 视图
-- 当前借阅视图
CREATE VIEW current_borrows AS
SELECT u.username, b.title, br.borrow_date, br.due_date
FROM borrow_records br
JOIN users u ON br.user_id = u.user_id
JOIN books b ON br.book_id = b.book_id
WHERE br.status = 'borrowed';
-- 图书库存视图
CREATE VIEW book_inventory AS
SELECT
b.title,
b.total_copies,
b.available_copies,
(b.total_copies - b.available_copies) AS borrowed_count
FROM books b;
-- 存储过程
DELIMITER $$
CREATE PROCEDURE borrow_book(
IN p_user_id INT,
IN p_book_id INT,
IN p_borrow_days INT
)
BEGIN
DECLARE available INT;
START TRANSACTION;
SELECT available_copies INTO available
FROM books WHERE book_id = p_book_id FOR UPDATE;
IF available > 0 THEN
INSERT INTO borrow_records
(user_id, book_id, borrow_date, due_date)
VALUES (
p_user_id,
p_book_id,
CURDATE(),
CURDATE() + INTERVAL p_borrow_days DAY
);
UPDATE books
SET available_copies = available_copies - 1
WHERE book_id = p_book_id;
COMMIT;
ELSE
ROLLBACK;
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'No available copies';
END IF;
END$$
DELIMITER ;
Gemini:
-- 创建数据库 (如果数据库不存在)
CREATE DATABASE IF NOT EXISTS library_management;
-- 使用数据库
USE library_management;
-- 创建分类表 (Category)
CREATE TABLE Category (
category_id INT AUTO_INCREMENT PRIMARY KEY,
category_name VARCHAR(255) NOT NULL
);
-- 创建图书表 (Book)
CREATE TABLE Book (
book_id INT AUTO_INCREMENT PRIMARY KEY,
category_id INT,
title VARCHAR(255) NOT NULL,
author VARCHAR(255) NOT NULL,
publisher VARCHAR(255),
isbn VARCHAR(20) UNIQUE,
publication_date DATE,
price DECIMAL(10, 2),
stock INT,
FOREIGN KEY (category_id) REFERENCES Category(category_id)
);
-- 创建读者表 (Reader)
CREATE TABLE Reader (
reader_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
gender VARCHAR(10),
phone VARCHAR(20) UNIQUE,
address VARCHAR(255)
);
-- 创建借阅记录表 (Borrowing)
CREATE TABLE Borrowing (
borrowing_id INT AUTO_INCREMENT PRIMARY KEY,
book_id INT,
reader_id INT,
borrow_date DATE,
return_date DATE,
FOREIGN KEY (book_id) REFERENCES Book(book_id),
FOREIGN KEY (reader_id) REFERENCES Reader(reader_id)
);
-- 创建管理员表 (Admin)
CREATE TABLE Admin (
admin_id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) UNIQUE,
password VARCHAR(255) NOT NULL
);
-- 插入示例数据 (可选)
INSERT INTO Category (category_name) VALUES
('文学'), ('计算机'), ('历史'), ('哲学');
INSERT INTO Book (category_id, title, author, isbn, publication_date, price, stock) VALUES
(1, '《红楼梦》', '曹雪芹', '978-7-02-014010-1', '1754-01-01', 98.00, 10),
(2, '《Java编程思想》', 'Bruce Eckel', '978-0-13-187256-2', '2006-06-05', 128.00, 5),
(3, '《中国近代史》', '李剑农', '978-7-301-21083-2', '2012-01-01', 68.00, 8);
INSERT INTO Reader (name, gender, phone, address) VALUES
('张三', '男', '13812345678', '北京市海淀区'),
('李四', '女', '13987654321', '上海市徐汇区');
INSERT INTO Borrowing (book_id, reader_id, borrow_date) VALUES
(1, 1, '2024-07-20'),
(2, 2, '2024-07-21');
INSERT INTO Admin (username, password) VALUES
('admin', '123456');
GPT:
-- 创建数据库
CREATE DATABASE LibrarySystem;
USE LibrarySystem;
-- 1. 用户表
CREATE TABLE users (
user_id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password_hash VARCHAR(255) NOT NULL,
email VARCHAR(100) UNIQUE,
phone VARCHAR(20),
role ENUM('admin', 'member') DEFAULT 'member',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 2. 图书类别表
CREATE TABLE categories (
category_id INT AUTO_INCREMENT PRIMARY KEY,
category_name VARCHAR(100) NOT NULL UNIQUE
);
-- 3. 图书表
CREATE TABLE books (
book_id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
category_id INT,
isbn VARCHAR(20) UNIQUE,
published_year YEAR,
total_copies INT DEFAULT 1,
available_copies INT DEFAULT 1,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (category_id) REFERENCES categories(category_id) ON DELETE SET NULL
);
-- 4. 作者信息表
CREATE TABLE authors (
author_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL UNIQUE
);
-- 5. 书籍-作者关系表 (多对多)
CREATE TABLE book_authors (
book_id INT,
author_id INT,
PRIMARY KEY (book_id, author_id),
FOREIGN KEY (book_id) REFERENCES books(book_id) ON DELETE CASCADE,
FOREIGN KEY (author_id) REFERENCES authors(author_id) ON DELETE CASCADE
);
-- 6. 借阅记录表
CREATE TABLE borrow_records (
borrow_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
book_id INT,
borrow_date DATE NOT NULL,
return_date DATE DEFAULT NULL,
status ENUM('borrowed', 'returned') DEFAULT 'borrowed',
FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE,
FOREIGN KEY (book_id) REFERENCES books(book_id) ON DELETE CASCADE
);
面对这三道精心设计的题目,GPT、Gemini和DeepSeek都展现了各自的实力。它们在代码生成、逻辑推理和问题解决方面都表现出色,但也存在一些差异。
-
GPT: 在第一道题当中表现的最符合题目要求 演示的结果最好,在第二道题的演示也是三个里面中规中矩的 加入了积分系统 比Gemini的演示好一点 第三道题里面SQL写的也是一般 没有惊艳的表现。
-
Gemini: 三道题表现的都很一般 第一道题目 小球速度过快 看不清球体 第二道题也就完成了基础的功能 没有扩展 第三道题目只给出了最基础的SQL。
-
DeepSeek: 在第一道题目上小球有一点出范围 还有会打印思考过程但是浪费了很多时间 足足打印了五分钟 才给我输出正确答案 但是后面几次效果好了很多 第二道题不仅有积分 还有死亡动画,在第三道题里面sql也给的最完整 有索引建立 还有执行实例。
AI编程的未来:
通过这次对比评测,我们看到了AI编程工具在提升开发效率、降低编程门槛方面的巨大潜力。它们可以帮助开发者更专注于业务逻辑和创新,而无需花费大量时间在繁琐的代码编写上。
当然,AI编程工具并非完美无缺,它们在处理复杂问题、生成高质量代码方面仍有提升空间。但随着技术的不断发展,我们可以期待AI编程工具在未来能够发挥更大的作用,甚至颠覆传统的编程模式。
结语:
AI编程的时代已经来临,GPT、Gemini、DeepSeek等工具的涌现,为开发者带来了前所未有的机遇和挑战。让我们拥抱AI,与AI携手共进,共同探索编程的无限可能!
所需的文件的下载地址: 文件下载地址
读者互动:
- 您认为哪款AI编程工具更具潜力?
- 您在实际开发中如何使用AI编程工具?
- 您对AI编程的未来有何展望?
欢迎在评论区分享您的观点和看法,与我们一同探讨AI编程的未来!
文章评论