墨风如雪博客

  • 源码小店
  • 导航站
  • 登录
  • java
  • 资源分享
让AI使用变得如此简单
  1. 首页
  2. AI
  3. 正文

探索AI编程的边界:GPT、Gemini、DeepSeek三巨头过招,谁能更胜一筹?

2025年 2月 2日 191点热度 0人点赞 0条评论

2025年,人工智能(AI)技术正以惊人的速度渗透到我们生活的方方面面。编程领域也不例外,AI编程工具的涌现,让代码编写效率和质量都得到了极大提升。

本文将聚焦三款备受瞩目的AI编程工具:GPT、Gemini和DeepSeek,通过三个精心设计的编程题目,考察它们在代码生成、问题解决和数据库设计等方面的能力。

三道试金石,谁是AI编程王者?

为了全面评估三款AI工具的实力,我们设置了三道具有代表性的题目:

  1. 小球弹跳:

    • 题目: 编写一个程序,实现一个小球在一个三角形内部弹跳,碰到边界则反弹。
    • 考察: 几何算法、物理模拟、编程逻辑。
  2. 贪吃蛇游戏:

    • 题目: 编写一个功能完善的贪吃蛇游戏,包括食物、碰撞检测、计分等。
    • 考察: 游戏逻辑、数据结构、用户交互。
  3. 图书管理系统数据库设计:

    • 题目: 设计一个图书管理系统的数据库,包括表结构设计、表关系定义、完整SQL代码编写。
    • 考察: 数据库设计、SQL语言、系统架构。

三强争霸,AI编程哪家强?

第一道题的测试结果:

DeepSeek:

deepSeek01

Gemini:

gemini01

GPT:

openAI01

第二道题的测试结果:

DeepSeek:

deepseek02

Gemini:

gemini02

GPT:

openai02

第三道题的测试结果:

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编程的未来!

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: AI
最后更新:2025年 2月 2日

墨风如雪

一个热爱生活,热爱分享的程序员

打赏 点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

墨风如雪

一个热爱生活,热爱分享的程序员

最新 热点 随机
最新 热点 随机
降维打击!Mistral Voxtral:开源语音的“终结者”已上线! AI“游侠”降临A股:16个“大脑”组团“炒股”,30秒“算命”市场! 视频魔法来了!AI能实时“变脸”直播,连游戏画面也能瞬间换装? 告别“听指令”,AI要“自己动手”了!ChatGPT Agent,AI界的“全能选手”已上线! 8B 模型吊打 671B?数学证明界“卷王”Goedel-Prover-V2 来了! Kiro来了!亚马逊放大招,软件开发要被AI“绑架”了吗?
昆仑万维扔出王炸:32B模型干翻671B,代码界迎来全能修理工!8亿参数撬动实时混音!谷歌开源“口袋DJ”,人人都能玩转音乐告别插件时代!OmniGen2:一个模型,通吃所有AIGC神操作2000万次呼唤背后,蓝骑士有了“赛博外挂”智能触手可及:Google Gemma-3n 系列模型,让万物皆能“思考”AI圈大地震!120亿参数的FLUX编辑器开源,你的显卡准备好了吗?
II-Agent来了!开源智能体新力量崛起,真能挑战闭源巨头? 320亿参数逆袭6710亿!阿里QwQ-32B开源引爆AI效率革命:单卡运行、成本降60倍,国产芯片突围AGI 降维打击!Mistral Voxtral:开源语音的“终结者”已上线! java IOC框架PicoContainer的(超详细总结) java Web框架Spring MVC的(超详细总结) 阿里云万相2.1:开源视频生成模型的全面解析
标签聚合
AI deepseek 教程 大模型 设计模式 java spring 算法

COPYRIGHT © 2023 墨风如雪博客. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

免责声明 - 隐私政策