一篇文章讲透ChatGPT如何助力编程,效率double。

“软件领域的杰出人物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] + ” “);

        }

        System.out.println();

    }

}

该示例中的`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查询银行账户的响应数据,返回数据包含以下字段:

  1. 账户ID (account_id)
  2. 账户名字 (account_name)
  3. 账户类型 (account_type)
  4. 账户状态 (account_status)
  5. 当前余额 (current_balance)
  6. 可用余额 (available_balance)
  7. 货币 (currency)
  8. 开户日期 (opening_date)
  9. 利率 (interest_rate)
  10. 分行名称 (branch_name)
  11. 分支代码 (branch_code)
  12. SWIFT代码 (swift_code)
  13. IBAN国际银行账号 (iban)
  14. 透支限额 (overdraft_limit)
  15. 最后交易日期 (last_transaction_date)
  16. 关联电话 (linked_phone)
  17. 关联电子邮箱 (linked_email)
  18. 提名人姓名 (nominee_name)
  19. 提名人与账户持有者关系 (nominee_relationship)
  20. 最后更新日期 (last_updated)
图片[1]-ChatGDP,AI写代码,ai人工智能,ai编程

如上图所示,我们可利用ChatGPT直接帮我们快速以上文格式,输出多条数据;也可直接让它帮你生成一个循环代码,设置参数即可生成目标数量的模拟数据。

6、牛人操作

善于借助AI的力量,真的能创造太多可能了。

比如你能花60个小时去通关一个游戏,有人却能用60小时去开发一款游戏,并通过游戏赚到钱。

这是真事,抖音一博主用60小时,独立开发了一款名为《细胞防线》的塔防小游戏打到通关,其游戏解说的视频合集累计观看量达到344万。

是不是很疯狂呢,目前该游戏通过卖道具或解锁广告内容,每天都有稳定收入。

这对于个体开发者,非常有参考价值。

参考链接:https://mp.weixin.qq.com/s/RCFry06B37xqQ62-FIxR_w

不得不说,在AI的加持下,过去很多难以触及的事情,现在门槛已大幅降低,只要你执行力跟得上,结果肯定差不了太多。

THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容