chatgpt使用及辅助编程方面的体验

chatgpt使用及辅助编程方面的体验

文章目录

  • chatgpt使用及辅助编程方面的体验
    • [1 引言](#1 引言)
    • [2 辅助编程体验](#2 辅助编程体验)
      • [2.1 辅助编写代码](#2.1 辅助编写代码)
      • [2.2 找出代码问题](#2.2 找出代码问题)
      • [2.3 代码优化](#2.3 代码优化)
      • [2.4 解释代码](#2.4 解释代码)
      • 结束语

1 引言

最近几个月什么最火,那一定时chatgpt,虽然在国内使用存在各种限制,但是还是挡不住各行各业的热情,顺便各种梯子也火了起来,国内大厂也纷纷布局LLM,先后推出了文心一言、通义千问等基于LLM的问答式应用。chatgpt刚出来时,我以为可能和元宇宙一样炒个概念,让资本市场疯狂一次,但是当我真的接触之后,想法完全不一样了,它真的会成为一次革命,一次像互联网一样,能够改变人们生活、工作方式的革命,为什么这样说?因为它像互联网一样,给人们带来的是效率的提升和能力的延展,会让人上瘾。

相信很多人已经开始依赖chatgpt了,比如协助写作、协助知识获取、协助设计、协助编程等等,本文从辅助编程的角度来简单介绍下chatgpt的能力。

2 辅助编程体验

这里简单介绍下几个辅助编程的场景,更多玩法可自行摸索。

2.1 辅助编写代码

提问:请帮我用java swing编写markdown编辑器

chatgpt回答:好的,以下是一个简单的Java Swing Markdown编辑器的示例代码:

markd 复制代码
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
import org.commonmark.node.Node;
import org.commonmark.parser.Parser;
import org.commonmark.renderer.html.HtmlRenderer;
public class MarkdownEditor extends JFrame implements ActionListener {
    private static final long serialVersionUID = 1L;
    private JTextArea textArea;
    private JButton previewButton;
    private JPanel previewPanel;
    private HtmlRenderer renderer;
    private Parser parser;
    public MarkdownEditor() {
        super("Markdown Editor");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        // Initialize parser and renderer
        parser = Parser.builder().build();
        renderer = HtmlRenderer.builder().build();
        // Create toolbar
        JToolBar toolbar = new JToolBar();
        // Create preview button
        previewButton = new JButton("Preview");
        previewButton.addActionListener(this);
        toolbar.add(previewButton);
        // Add toolbar to frame
        add(toolbar, BorderLayout.PAGE_START);
        // Create text area
        textArea = new JTextArea();
        textArea.setFont(new Font("Arial", Font.PLAIN, 14));
        textArea.setForeground(Color.BLACK);
        textArea.setLineWrap(true);
        textArea.setWrapStyleWord(true);
        // Add text area to scroll pane
        JScrollPane scrollPane = new JScrollPane(textArea);
        scrollPane.setPreferredSize(new Dimension(400, 400));
        // Add scroll pane to frame
        add(scrollPane, BorderLayout.CENTER);
        // Create preview panel
        previewPanel = new JPanel();
        previewPanel.setBackground(Color.WHITE);
        // Add preview panel to frame
        add(previewPanel, BorderLayout.LINE_END);
        // Set frame properties
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        // Render preview
        Node document = parser.parse(textArea.getText());
        String html = renderer.render(document);
        previewPanel.removeAll();
        previewPanel.add(new JScrollPane(new JTextArea(html)));
        previewPanel.revalidate();
        previewPanel.repaint();
    }
    public static void main(String[] args) {
        new MarkdownEditor();
    }
}

这个编辑器使用了CommonMark库来解析Markdown文本,并将其渲染为HTML。它包括一个工具栏,其中有一个预览按钮,当用户点击该按钮时,它会将Markdown文本解析为HTML,并在右侧的面板中显示预览。

生成代码方面,对于通用机器学习算法、简单逻辑、各种框架内常用代码的生成,生成的代码基本可用。

2.2 找出代码问题

提问:

复制代码
package main

myvar := 1 //error

func main() {  

}
以上golang代码问题出在哪里

chatgpt回答:

2.3 代码优化

提问:

test 复制代码
func ReadFLVTag(r io.Reader) (t byte, timestamp uint32, payload []byte, err error) {
    head := make([]byte, 11)
    if _, err = io.ReadFull(r, head); err != nil {
        return
    }
    t = head[0]
    dataSize := util.ReadBEint
    timestamp = (uint32(head[7]) << 24) | (uint32(head[4]) << 16) | (uint32(head[5]) << 8) | uint32(head[6])
    payload = make([]byte, dataSize)
    if _, err = io.ReadFull(r, payload); err == nil {
        _, err = io.ReadFull(r, head[:4])
    }
    return
}请对以上代码进行优化,并给出优化前后的对比

chatgpt回答:

2.4 解释代码

提问:

test 复制代码
func WriteFLVTag(w io.Writer, t byte, timestamp uint32, payload net.Buffers) (err error) {
    head := make([]byte, 11)
    tail := make([]byte, 4)
    head[0] = t
    dataSize := uint32(util.SizeOfBuffers(payload))
    util.PutBE(tail, dataSize+11)
    util.PutBE(head[1:4], dataSize)
    head[4] = byte(timestamp >> 16)
    head[5] = byte(timestamp >> 8)
    head[6] = byte(timestamp)
    head[7] = byte(timestamp >> 24)
    var tag = net.Buffers{head}
    tag = append(tag, payload...)
    tag = append(tag, tail)
    // Tag Data
    _, err = tag.WriteTo(w)
    return
}请对以上代码进行解释,并添加注释

chatgpt回答:

test 复制代码
以下是对WriteFLVTag函数的注释:
func WriteFLVTag(w io.Writer, t byte, timestamp uint32, payload net.Buffers) (err error) {
    // 创建长度为11的头部和长度为4的尾部
    head := make([]byte, 11)
    tail := make([]byte, 4)
    // 头部第一个字节表示标签类型
    head[0] = t
    // 数据长度为有效负载长度加上11个字节的头部长度
    dataSize := uint32(util.SizeOfBuffers(payload))
    util.PutBE(tail, dataSize+11) // 将标签长度放入尾部中
    util.PutBE(head[1:4], dataSize) // 将数据长度放入头部中
    // 时间戳占用3个字节,需要进行位移和按位或运算
    head[4] = byte(timestamp >> 16)
    head[5] = byte(timestamp >> 8)
    head[6] = byte(timestamp)
    head[7] = byte(timestamp >> 24)
    // 将头部和有效负载合并为一个net.Buffers对象
    var tag = net.Buffers{head}
    tag = append(tag, payload...)
    tag = append(tag, tail)
    // 将合并后的数据写入io.Writer中
    _, err = tag.WriteTo(w)
    return
}
这个函数的作用是将FLV标签写入一个io.Writer对象中。函数接受标签的类型、时间戳和有效负载,然后创建一个FLV标签,包括一个长度为11的头部、有效负载和一个长度为4的尾部。头部包括标签类型、数据长度和时间戳,尾部包括数据长度。然后将这个标签写入io.Writer对象中。
这个函数的核心是构建FLV标签,首先计算标签的长度和各个字段的值,然后将它们放入标签的头部和尾部。最后,将头部、有效负载和尾部合并到一个net.Buffers对象中,并将这个对象写入io.Writer中。

结束语

通过这几个月对chatgpt的使用,发现自己已经非常依赖它了,查资料用它,系统架构设计用它,写代码用它,编写文档也用它,虽然国内还没有城市的类似的产品,但是相信不久的将来基于LLM的应用会无处不在。


相关推荐
仗剑_走天涯43 分钟前
基于pytorch.nn模块实现线性模型
人工智能·pytorch·python·深度学习
cnbestec2 小时前
协作机器人UR7e与UR12e:轻量化设计与高负载能力助力“小而美”智造升级
人工智能·机器人·协作机器人·ur协作机器人·ur7e·ur12e
zskj_zhyl2 小时前
毫米波雷达守护银发安全:七彩喜跌倒检测仪重构居家养老防线
人工智能·安全·重构
gaosushexiangji3 小时前
利用sCMOS科学相机测量激光散射强度
大数据·人工智能·数码相机·计算机视觉
ai小鬼头4 小时前
AIStarter新版重磅来袭!永久订阅限时福利抢先看
人工智能·开源·github
说私域4 小时前
从品牌附庸到自我表达:定制开发开源AI智能名片S2B2C商城小程序赋能下的营销变革
人工智能·小程序
飞哥数智坊5 小时前
新版定价不够用,Cursor如何退回旧版定价
人工智能·cursor
12点一刻5 小时前
搭建自动化工作流:探寻解放双手的有效方案(2)
运维·人工智能·自动化·deepseek
未来之窗软件服务5 小时前
东方仙盟AI数据中间件使用教程:开启数据交互与自动化应用新时代——仙盟创梦IDE
运维·人工智能·自动化·仙盟创梦ide·东方仙盟·阿雪技术观
JNU freshman6 小时前
计算机视觉速成 之 概述
人工智能·计算机视觉