传统编程与AIGC的碰撞
随着科技的飞速发展,传统编程与人工智能生成代码(AIGC)之间的界限正变得越来越模糊。AIGC技术的崛起为编程领域带来了新的机遇和挑战,同时也促使我们思考如何更好地融合这两者,以提高编程的效率和质量。本文将探讨传统编程与AIGC的融合,并分析这种融合带来的优势和挑战
何为传统编程
传统编程作为软件开发的核心,其基础在于标准化的架构设计和高效的流水线操作。在大厂中,成千上万的程序员协同工作,通过遵循既定的编程规范和最佳实践,确保软件的稳定性和可维护性。这种模式下,程序员们通过编写代码来满足业务需求,同时不断优化技术栈,以提高软件的性能和用户体验。
Node.js和npm的崛起
在后端编程领域,Node.js以其高效的异步I/O模型和丰富的生态系统而备受推崇。npm作为Node.js的包管理器,为开发者提供了便捷的方式来安装和管理依赖项。通过npm,开发者可以轻松地引入各种库和框架,从而加速开发进程。以爬虫项目为例,我们可以使用npm i request-promise
安装request-promise库来发送HTTP请求,以及npm i cheerio
安装cheerio库来解析HTML内容,从而高效地爬取豆瓣电影等数据。
爬取代码为:
const request = require('request-promise');
const cheerio = require('cheerio');
// 入口文件
// 异步的
// 将douban 网页的电影列表html,爬取,
// 返回JSON数组, 每一电影项包含name, desc, score...
// 单点入口
async function main() {
// 代码 分步细化,程序员思维
// 伪代码
// 根据url 发送一个http请求 拿到html
// 根据html 分析, 拿到电影内容
// 返回内容
// await LLM
// 良好的编程规范
const URL = "<https://movie.douban.com/chart>";
// http 请求 html 408 基于请求
// 攻击
const html = await request({
url: URL
})
console.log(html);
// 代码的可读性,可能要比功能更重要
// html分析 document + 选择器 cheerio 满足
// 编程素养 将html字符串加载到内存中,$ =Document
let $ = cheerio.load(html);
// console.log($('.article table').length)
// 严谨
const movieNodes = $('#content .article .item');
const movieList = [];
for (let i = 0; i < movieNodes.length; i++) {
// 封装?
// 将一段电影的html解析,剥离出去,
// 这段功能相对独立 复用的
// main 比较复杂了, 一个函数超过10行代码, 一定可以再分函数
movieList.push(getMovieInfo(movieNodes[i]));
}
console.log(movieList);
}
const getMovieInfo = function(node) {
let movieInfo = {};
// 将tr加载进内存
let $$ = cheerio.load(node);
let title = $$('.pl2 a').text()
let pic = $$('.nbg img').attr('src')
// console.log(pic)
// console.log(title);
let info = $$('p.pl').text()
let rating_nums = $$('.rating_nums').text()
movieInfo.title = title
movieInfo.pic = pic
movieInfo.info = info
movieInfo.rating_nums = rating_nums
return movieInfo
}
main()
以上是经典传统编程而有的代码量而我们如果引入AI可以将部分代码交给AI能减少1/3的代码量
传统编程与AI的融合
传统编程与AIGC的融合是一个值得探讨的话题。在实际应用中,我们可以将AIGC技术应用于自动化生成重复性代码、优化代码结构等方面,从而减少程序员的劳动量,提高开发效率。同时,我们还可以利用AIGC技术来预测和修复潜在的代码错误,从而提高软件的质量和稳定性。此外,AIGC还可以帮助程序员更好地理解和分析代码库,以便更好地进行维护和升级。
然而,在融合传统编程与AIGC时,我们也需要注意一些问题。首先,我们需要确保数据的隐私和安全,避免泄露敏感信息。其次,我们需要对AI生成的代码进行充分的测试和验证,以确保其质量和可靠性。最后,我们还需要关注AI技术的局限性,避免过度依赖AI而忽略程序员的创造力和判断力。就上述爬虫问题我们通过npm i openai
安装openai库来引入AI:
实现代码就是:
const request = require('request-promise');
const cheerio = require('cheerio');
// AIGC LLM 生成式内容
// tr 字符串要生成movie json 对象
// input prompt
const OpenAI = require('openai');
const client = new OpenAI({
// 凭证 密钥 算力收费 token
apiKey: '****',
baseURL: 'https://api.chatanywhere.tech/v1'
})
// 入口文件
// 异步的
// 将douban 网页的电影列表html,爬取,
// 返回JSON数组, 每一电影项包含name, desc, score...
// 单点入口
async function main() {
// 代码 分步细化,程序员思维
// 伪代码
// 根据url 发送一个http请求 拿到html
// 根据html 分析, 拿到电影内容
// 返回内容
// await LLM
// 良好的编程规范
const URL = "https://movie.douban.com/chart";
// http 请求 html 408 基于请求
const html = await request({
url: URL
})
console.log(html);
// 代码的可读性,可能要比功能更重要
// html分析 document + 选择器 cheerio 满足
// 编程素养 将html字符串加载到内存中,$ =Document
let $ = cheerio.load(html);
// console.log($('.article table').length)
// 严谨
const movieNodes = $('#content .article .item');
let movie_html = ''
for ( let i =0; i < 2; i++) {
movie_html += cheerio.load(movieNodes[i]).html()
}
// console.log(movie_html);
let prompt = `
${movie_html}
这是一段电影列表html,请获取电影名(name), 封面链接(picture),
简介(info),评分(score),评论人数(commentsNumber),
请使用括号的单词作为属性名,以JSON数组的格式返回。
`
const chatCompletion = await client.chat.completions.create({
model: 'gpt-3.5-turbo', // 适合聊天的模型 很多种
messages: [
{
role: 'user',
content: prompt
}
]
})
console.log(chatCompletion.choices);
main()
对比上面传统编程一些函数我们就可以省略通过自动化生成代码和优化代码结构,我们可以减少程序员的劳动量,提高开发效率。
总结
传统编程与AIGC的融合是编程领域的一个重要趋势。通过融合两者,我们可以提高编程的效率和质量,推动软件开发行业的进一步发展。然而,在融合过程中,我们也需要注意数据隐私、代码安全以及AI技术的局限性等问题。未来,随着AI技术的不断进步和完善,我们相信传统编程与AIGC的融合将会更加紧密和深入。
转载自:https://juejin.cn/post/7370952994135998499