Erfahrung in der Chatgpt-Nutzung und Hilfsprogrammierung

Erfahrung in der Chatgpt-Nutzung und Hilfsprogrammierung

1. Einleitung

Was in den letzten Monaten am beliebtesten war, muss Chatgpt sein. Obwohl es in China verschiedene Einschränkungen für seine Verwendung gibt, kann es die Begeisterung aller Gesellschaftsschichten nicht stoppen. Übrigens sind auch verschiedene Leitern populär geworden, und Auch inländische große Hersteller haben LLM eingeführt. Auf LLM basierende Frage-und-Antwort-Anwendungen wie Wen Xin Yi Yan und Tong Yi Qian Wen wurden nacheinander eingeführt. Als chatgpt zum ersten Mal herauskam, dachte ich, es könnte ein Konzept wie das Metaverse sein und den Kapitalmarkt verrückt machen. Aber als ich wirklich damit in Kontakt kam, war meine Idee völlig anders. Es würde wirklich eine Revolution werden, und das würde es auch wie das Internet. Eine Revolution, die die Art und Weise verändert, wie Menschen leben und arbeiten. Warum sagen Sie das? Denn wie das Internet bringt es den Menschen höhere Effizienz und erweiterte Möglichkeiten und kann Menschen süchtig machen.
Ich glaube, dass viele Menschen begonnen haben, sich auf Chatgpt zu verlassen, z. B. beim Schreiben, beim Wissenserwerb, beim Design, beim Programmieren usw. In diesem Artikel werden die Funktionen von Chatgpt aus der Perspektive der Hilfsprogrammierung kurz vorgestellt.

2 Assistierte Programmiererfahrung

Hier finden Sie eine kurze Einführung in verschiedene Hilfsprogrammierungsszenarien. Sie können weitere Möglichkeiten erkunden, selbst zu spielen.

2.1 Unterstützung beim Schreiben von Code

Frage: Bitte helfen Sie mir, einen Markdown-Editor mit Java Swing
Chatgpt zu schreiben. Antwort: Okay, das Folgende ist ein Beispielcode eines einfachen Java Swing Markdown-Editors:

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();
    }
}

Dieser Editor verwendet die CommonMark-Bibliothek, um Markdown-Text zu analysieren und in HTML zu rendern. Es enthält eine Symbolleiste mit einer Vorschauschaltfläche. Wenn der Benutzer auf die Schaltfläche klickt, analysiert es den Markdown-Text in HTML und zeigt die Vorschau im rechten Bedienfeld an.

Im Hinblick auf die Codegenerierung ist der generierte Code grundsätzlich für die Generierung allgemeiner Algorithmen für maschinelles Lernen, einfacher Logik und häufig verwendeter Codes in verschiedenen Frameworks verwendbar.

2.2 Finden Sie Codeprobleme

Frage:

package main

myvar := 1 //error

func main() {  

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

chatgpt antwortete:
111

2.3 Codeoptimierung

Frage:

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 antwortete:
prüfen

2.4 Erklären Sie den Code

Frage:

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 antwortete:

以下是对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中。

Abschluss

Nachdem ich chatgpt in den letzten Monaten verwendet habe, stellte ich fest, dass ich sehr abhängig davon geworden bin. Ich verwende es zum Überprüfen von Informationen, zum Entwerfen der Systemarchitektur, zum Schreiben von Code und zum Schreiben von Dokumenten. Obwohl es das gibt In heimischen Städten gibt es kein vergleichbares Produkt, aber ich glaube, dass LLM-basierte Anwendungen in naher Zukunft überall sein werden.


Guess you like

Origin blog.csdn.net/water1209/article/details/130304969