平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“利用OpenAI ChatGPT进行编码尝试体验”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际使用顺序,把思路、关键写法和容易踩坑的地方讲清楚,方便你直接对照操作。
结合项目来看,ChatGPT 是一种以类似聊天的方式进行交互的人工智能网络,从名字上看起来像是另一个“聊天机器人”,但实际上已经远超聊天的范畴了,当要求它编写一些代码时,结果相等震撼,它可以写出一些意想不到的连贯代码,而这些代码对于开发者很有启发。
结合项目来看,开始要求它采用 JavaScript 编写一个散列(HASH)密码的函数。具体一点就是编写一个 JavaScript 函数,它接受密码的字符串输入同时输出散列(HASH)密码。
function hashPassword(password) {
return crypto.createHash("sha256").update(password).digest("hex");
}随后逐步提高编码的难度,实现一些更加符合项目开发的需求,于是输入:
结合项目来看,编写一个在请求正下文包含用户名和密码的 Express 路由处理程序,对密码进行哈希处理,在 MySQL 数据库中查找现有用户同时检查哈希后的密码是否匹配。
const express = require("express");
const bcrypt = require("bcrypt");
const mysql = require("mysql");
// 创建 MySQL 数据库连接
const db = mysql.createConnection({
host: "localhost",
user: "root",
password: "",
database: "mydb",
});
// 连接数据库
db.connect((err) => {
if (err) {
throw err;
}
console.log("MySQL connected...");
});
// 创建 express app
const app = express();
// 路由 handler
app.post("/login", (req, res) => {
// get username and password from request body
const { username, password } = req.body;
// HASH 密码
const hashedPassword = bcrypt.hashSync(password, 10);
// 在数据库中查找用户名称
let sql = `SELECT * FROM users WHERE username = '${username}'`;
let query = db.query(sql, (err, result) => {
if (err) throw err;
// 检查密码是否匹配
if (bcrypt.compareSync(result[0].password, hashedPassword)) {
res.send("Login successful!");
} else {
res.send("Incorrect username or password");
}
});
});从实现思路看,这段 JavaScript 代码基本是没什么问题的,可以直接复制到项目中进行调试。接下来采用别的语言来试一下:
从实现思路看,用C语言编写一个链表结构的代码,具有根据“标识”属性在链表中添加、删除和查找节点的功能。
#include#include // Structure for a node in the linked list typedef struct Node { int identity; // Property of the node struct Node *next; // Pointer to the next node } Node; // Function to add a node to the linked list void addNode(Node **head, int identity) { // Create a new node Node *newNode = (Node*)malloc(sizeof(Node)); // Set the identity of the new node newNode->identity = identity; // Set the next pointer of the new node to point to the head newNode->next = *head; // Set the head to point to the new node *head = newNode; } // Function to delete a node from the linked list void deleteNode(Node **head, int identity) { // Create a temporary node to traverse the linked list Node *temp = *head; // Check if the head is the node to be deleted if (temp != NULL && temp->identity == identity) { // Set the head to point to the next node *head = temp->next; // Free the memory allocated for the node free(temp); return; } // Traverse the linked list to find the node to be deleted while (temp != NULL && temp->identity != identity) { // Set the previous node to the current node Node *prev = temp; // Set the current node to the next node temp = temp->next; } // Check if the node was found if (temp == NULL) return; // Set the previous node to point to the next node prev->next = temp->next; // Free the memory allocated for the node free(temp); } // Function to find a node in the linked list Node* findNode(Node *head, int identity) { // Create a temporary node to traverse the linked list Node *temp = head; // Traverse the linked list to find the node while (temp != NULL) { // Check if the current node has the given identity if (temp->identity == identity) { return temp; } // Set the current node to the next node temp = temp->next; } // Return NULL if the node was not found return NULL; } int main() { // Create a head node for the linked list Node *head = NULL; // Add some nodes to the linked list addNode(&head, 1); addNode(&head, 2); addNode(&head, 3); // Find a node in the linked list Node *node = findNode(head, 2); // Print the identity of the node printf("Node with identity 2: %d\n", node->identity); // Delete a node from the linked list deleteNode(&head, 2); // Find the deleted node in the linked list node = findNode(head, 2); // Check if the node was deleted if (node == NULL) { printf("Node with identity 2 was deleted\n"); } return 0; }
落到代码里,于是似乎开始担心未来的程序员,对于AI的机器学习能力,肯定是强于人类的。一个程序员宝贵的职业生涯就算 20 年,就假设这个程序员在职业生涯中相当勤奋好学,可AI应该能够借助学习收集全世界所有程序员的经验!人脑无法与在极其庞大的数据集上训练有素的 AI 模型的计算能力相提同时论。未来是不是有可能程序员借助AI把自己这个职业淘汰掉!
总结
落到代码里,总的来说,openai chatgpt这部分内容适合结合实际项目边做边理解。先抓住核心思路,再逐步补上细节和边界处理,最后效果会更稳定,也更容易复用。

