“软件领域的杰出人物Kent Beck曾谈及人工智能时,说过一句引人深思的话:由于ChatGDP的崛起,他自身的90%技能价值归零,但剩下的10%价值却提升了千倍。 或许你还不熟悉Kent Beck是谁?我来简要介绍一下:他是软件开发领域的领军人物,致力于研究编程模式和重构,他是敏捷开发的创始人之一,极限编程和测试驱动开发(TDD)的奠基人,同时还担任JUnit的作者。 提到这些,相信大多数程序员都能感受到他在行业中的地位。 在我看来,Kent所说的90%技能指的是基本的编程能力,包括大部分的代码编写工作;而剩下的10%则是对复杂系统的深入理解,以及批判性和创新性思维,这些都是ChatGDP难以替代的部分。 然而,要说90%的价值为0,那只是对于他个人而言。对于整个行业来说,尽管AI能够完成大量的代码编写任务,但它还远未能完全替代人类。因此,说基础编程工作的价值为零,并不符合实际情况。 如果你对编程技术有着浓厚兴趣,无论你是初学者还是从业者,如何利用ChatGDP提升学习和工作效率,才是当务之急。”
本贴将从以下几点,为你分享ChatGPT如何助力编程。
1、基础入门开发
2、bug修改、代码优化
3、独立软件开发
4、完整项目开发
5、其他辅助支持
6、牛人操作
1、基础入门
大家都知道,ChatGPT具备编程能力,简单的编程对它来说基本就是秒出。
因为太简单,无需角色设定或逻辑铺垫,只需用自然语言简单描述清楚任务需求即可,这部分大多数刚接触ChatGPT的小白也可轻松完成。
比如,程序员在学习一个新的编程语言时,通常都是从“Hello World”开始的,我们让它快速写出10种语言的hello world。
提示语如下:
请用10种市面上主流的编程语言,分别实现“hello world”的代码示例
ChatGPT给出了下面的回应:
当下市面上有很多主流的编程语言。以下是使用其中10种主流编程语言编写的“Hello World”代码示例:
1. Python:
print(“Hello, World!”)
2. JavaScript:
console.log(“Hello, World!”);
3. Java:
public class HelloWorld {
public static void main(String[] args) {
System.out.println(“Hello, World!”);
}
}
4. C:
#include <stdio.h>
int main() {
printf(“Hello, World!\n”);
return 0;
}
5. C++:
#include <iostream>
int main() {
std::cout << “Hello, World!” << std::endl;
return 0;
}
6. C#:
using System;
class HelloWorld {
static void Main() {
Console.WriteLine(“Hello, World!”);
}
}
7. Ruby:
puts “Hello, World!”
8. Swift:
import Swift
print(“Hello, World!”)
9. Go:
package main
import “fmt”
func main() {
fmt.Println(“Hello, World!”)
}
10. Rust:
fn main() {
println!(“Hello, World!”);
}
这些示例涵盖了Python、JavaScript、Java、C、C++、C#、Ruby、Swift、Go和Rust这10种主流编程语言。每个示例都会打印出“Hello, World!”的消息。
我们可以看到,ChatGPT可以飞快完成基础代码编写,且支持各种编程语言。
比如我让它用java快速完成一个冒泡排序:
提示语如下:
请使用Java编程语言,完成一个冒泡算法排序的示例
ChatGPT给出了下面的回应:
以下是使用Java编程语言实现冒泡排序算法的示例代码:
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {5, 2, 8, 12, 1, 6, 3, 9, 4, 7};
System.out.println(“原始数组:”);
printArray(arr);
bubbleSort(arr);
System.out.println(“\n排序后的数组:”);
printArray(arr);
}
public static void bubbleSort(int[] arr) {
int n = arr.length;
for (int i = 0; i < n – 1; i++) {
for (int j = 0; j < n – i – 1; j++) {
if (arr[j] > arr[j + 1]) {
// 交换arr[j]和arr[j+1]
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
public static void printArray(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + ” “);
}
}
}
该示例中的`bubbleSort`方法实现了冒泡排序算法。在`main`方法中,首先定义了一个整型数组`arr`,然后调用`bubbleSort`方法对数组进行排序。最后,使用`printArray`方法打印排序后的数组。执行程序将输出原始数组和排序后的数组。
2、bug修改、代码优化
让我们稍微进阶一些,ChatGPT可用于快速写出基础代码,也可以让它帮我们改代码。
如果对自己写的代码没信心,或者别人的代码让你很恼火,都可以让ChatGPT先帮你优化一把。
还是举例说明,比如下面这段Js代码,问题巨大,但确实是很多小白常犯的错误。功能很简单,即让Js提取网页输入,并将其输出。
提示语如下:
你现在是资深代码评审专家,请检查下这段代码有没有问题
var userInput = document.getElementById(“userInput”).value;
document.getElementById(“output”).innerHTML = userInput;
ChatGPT给出了下面的回应:
这段代码存在一个重大的安全问题,可能使你的网站或应用程序暴露于跨站脚本攻击(XSS)的风险之下。在这个例子中,你正在从一个元素中取得用户的输入,并将这个输入直接放入另一个元素的`innerHTML`。这就意味着,如果用户输入的内容包含JavaScript代码,那么这段代码将会在浏览器中执行。
例如,一个恶意的用户可以输入`<script>alert(‘Hacked!’);</script>`,当这段代码被放入`innerHTML`时,浏览器就会执行这个`alert`脚本。
要防止这种攻击,你需要在将用户的输入放入HTML之前,对输入进行合适的转义。以下是一个可能的解决方案:
“`javascript
var userInput = document.getElementById(“userInput”).value;
document.getElementById(“output”).textContent = userInput;
“`
在这个例子中,我们使用`textContent`代替`innerHTML`。`textContent`不会解析HTML标记,因此,如果用户的输入中包含任何HTML或JavaScript代码,这些代码将会被当作纯文本对待,而不会被执行。然而,这也意味着你不能使用`textContent`来插入含有HTML标签的内容。
如果你需要插入含有HTML标签的内容,你应该使用一个可靠的库来进行HTML的转义,比如jQuery的`text`函数,或者你可以编写自己的转义函数。但是,你应该尽量避免这种情况,因为即使是最小的错误也可能导致XSS攻击。
我们看到,ChatGPT不但能检查出代码潜在Bug,还开起了小讲堂,为用户讲清楚了来龙去脉。
再举个例子,比如你在读一段烂代码,无注释无命名规范无逻辑,正想摔键盘的时候想到了ChatGPT。
提示语如下:
请帮我分析出下方代码的功能,并给出具体的优化方案
let a = [1, 2, 3, 4, 5];
let b = [2, 3, 4, 5, 6];
let c = (d, e) => {
let f = [];
for(let g = 0; g < d.length; g++) {
let h = false;
for(let i = 0; i < e.length; i++) {
if (d[g] === e[i]) {
h = true;
break;
}
}
if (!h) {
f.push(d[g]);
}
}
return f;
};
console.log(c(a, b));
ChatGPT给出了下面的回应:
这段代码的目标是找出在数组`a`中存在,但在数组`b`中不存在的元素,并返回这个新的数组。
不过,这段代码的可读性非常差,因为它使用了不清晰的单字母变量名,并且没有任何注释。另外,实现这个目标的方式也很低效,因为它使用了双层循环,时间复杂度为O(n^2)。
下面是优化后的版本,我们使用了更清晰的变量名,添加了注释,并使用了一种更有效的方法:
// 使用 Set 可以在 O(1) 时间复杂度内进行查找,效率更高
let setB = new Set([2, 3, 4, 5, 6]);
let arrayA = [1, 2, 3, 4, 5];
// 过滤 arrayA,只保留那些在 setB 中不存在的元素
let difference = arrayA.filter(item => !setB.has(item));
console.log(difference);
在优化后的代码中,我们使用`Set`来存储数组`b`的元素,因为`Set`具有O(1)的查找时间复杂度。然后我们使用`Array.prototype.filter`和`Set.prototype.has`来找出只在数组`a`中存在的元素。这种方法的时间复杂度为O(n),效率更高。此外,我们还使用了更有意义的变量名,并添加了必要的注释,以提高代码的可读性。
对于这种代码,ChatGPT能够快速分析出代码逻辑,并能给出详细说明以及优化方案。
再操作的花哨一些,可以直接将你项目组的代码规范投喂给ChatGPT,把它训练成你的专属代码审查员。
如果是简单的规则投喂,直接通过输入框输入需求即可,稍微复杂点的,比如你的代码规范写在公司网页上,那么可以借助谷歌浏览器插件:WebChatGPT。
通过这个插件,ChatGPT将具备联网能力,可以直接扔给他一个链接让它快速学习该网页链接的内容。具体案例可以参考我之前发的这个帖子:https://t.zsxq.com/11mNOkj0k
3、独立软件开发
比如,你有时候你可能需要一些小软件、工具等,想自己动手却没有足够的编码经验,也很难找到合适的人帮你去做;再比如,你是有经验的程序员,但在独立面对陌生领域开发时,猛一下子也会不知所措;
放在以前这些确实都是问题,但现在有了ChatGPT,门槛一下降低了很多。不夸张地讲,即便你是不懂技术的小白,现在也可利用ChatGPT完成一些编程任务。
通常思路如下:
1、让AI提供思路、操作方法;
2、让AI按方法步骤去执行;
3、人工辅助、AI自我问题修正;
4、AI功能优化;
具体如何操作,星球的 了不起 之前分享过一个帖子,利用ChatGPT,0基础开发了一个谷歌浏览器插件,帖子中详细梳理了每个操作步骤,很具有参考价值,大家可以看看。
链接:https://t.zsxq.com/11GrKMU4B
4、完整项目开发
基础模块开发,代码段检查,独立工具开发,这些均可划分为个人作战部分,但通产一个项目、需要很多人参与其中,这种情况,ChatGPT是否还能胜任呢?
答案是:依旧可以!
如何利用ChatGPT开发项目级的工程,这里也提供一个通用思路。
1.人工梳理你的项目需求;
2.ChatGPT完成功能模块拆解;
3.根据业务逻辑优先级,人工利用ChatGPT将各个模块拆解成函数;
4.ChatGPT具体实现拆解出来的每一个函数;
5.按照3-5的步骤,逐个实现每一个模块;
6.项目整合,人工将各模块组装起来;
7.中间环节遇到问题,人工引导ChatGPT灵活解决。
如何操作?看星球基础篇第四课的内容,利用ChatGPT快速开发一款股票行情监控系统,按这个方式,我半小时就完成了一个功能模块前端到后端的完整流程。
链接:https://t.zsxq.com/11KYo1RRI
5、其他辅助支持
除了开发编码等工作,ChatGPT在编程方向,还能提供大量辅助性支持。
比如帮你生成测试数据、制定代码规范、撰写学习计划、编写说明文档等等,这里也列举一个例子吧。
之前我一位前端同事,有一项工作任务,就是模拟假数据,为了数据多样,有时这个任务会消耗他一上午去完成。那现在,利用ChatGPT,1分钟就可以搞定这个工作。
比如现在需要模拟api查询银行账户的响应数据,返回数据包含以下字段:
- 账户ID (account_id)
- 账户名字 (account_name)
- 账户类型 (account_type)
- 账户状态 (account_status)
- 当前余额 (current_balance)
- 可用余额 (available_balance)
- 货币 (currency)
- 开户日期 (opening_date)
- 利率 (interest_rate)
- 分行名称 (branch_name)
- 分支代码 (branch_code)
- SWIFT代码 (swift_code)
- IBAN国际银行账号 (iban)
- 透支限额 (overdraft_limit)
- 最后交易日期 (last_transaction_date)
- 关联电话 (linked_phone)
- 关联电子邮箱 (linked_email)
- 提名人姓名 (nominee_name)
- 提名人与账户持有者关系 (nominee_relationship)
- 最后更新日期 (last_updated)
![图片[1]-ChatGDP,AI写代码,ai人工智能,ai编程](https://5ai99.com/wp-content/uploads/2024/01/5.webp)
如上图所示,我们可利用ChatGPT直接帮我们快速以上文格式,输出多条数据;也可直接让它帮你生成一个循环代码,设置参数即可生成目标数量的模拟数据。
6、牛人操作
善于借助AI的力量,真的能创造太多可能了。
比如你能花60个小时去通关一个游戏,有人却能用60小时去开发一款游戏,并通过游戏赚到钱。
这是真事,抖音一博主用60小时,独立开发了一款名为《细胞防线》的塔防小游戏打到通关,其游戏解说的视频合集累计观看量达到344万。
是不是很疯狂呢,目前该游戏通过卖道具或解锁广告内容,每天都有稳定收入。
这对于个体开发者,非常有参考价值。
参考链接:https://mp.weixin.qq.com/s/RCFry06B37xqQ62-FIxR_w
不得不说,在AI的加持下,过去很多难以触及的事情,现在门槛已大幅降低,只要你执行力跟得上,结果肯定差不了太多。
暂无评论内容