HUOXIU

ChatGPT4oを使用してプログラマーが作業効率を向上させる方法を8000語と20枚の画像で詳しく説明します。

出典: Nezha Programming


みなさんこんにちは。Nezhaです。

中国では、ChatGPTにアクセスできるだけで、すでに多くの人より一歩先を行くことができます。すでに上位1%に入っているのです


80% は ChatGPT の概念について聞いたことはあるものの、実際に使用したことはありません。70% は概念について聞いたことがあり、使用しようとしましたが、障壁に阻まれました。10% は使用には成功しましたが、試してみた後、二度とログインしていません。


頻繁に使用し、熟練している人は 1% 未満です...


ChatGPT とさまざまな質問方法を使いこなせるようになったら、おめでとうございます。あなたはすでにトップ 1% に加わっています。


しかし、たった1%でも、さまざまな可能性が検討されました。


今日は、ChatGPT4oのコンピューター分野における応用例をご紹介します。 おそらく、あなたが建築家になるための唯一の障壁はChatGPTかもしれません。


目次:

1. コードを書く

2. コードエラーを修正し、コードを最適化します。

3. コードの機能とコード変換を理解する

4. コードコメントを追加する

5. ユニット テスト クラスを記述し、テスト ケースを提供します。

6. バグを修正する

7. SQL文を書く

8. JARパッケージバージョンの脆弱性を解決する

9. ユーティリティクラスの開発

10. JavaコードをPythonなどの言語に変換する

11. 推奨される解決策

12. 端末として機能する

ChatGPTはプログラミング専用に設計されたものではありませんが、効果的なプログラミング支援ツールとして機能します。自然言語による記述を通じて、ChatGPTはプログラミングに似た機能を実行できるため、プログラミングへの参入障壁が低く、プログラミングスキルの低いユーザーでもタスクを完了できます。プログラミングタスクを容易に処理できるだけでなく、コードエラーの修正、コードの説明、コメントの追加、コードの最適化、コードの翻訳も可能です。

さらに、ChatGPTはLinuxターミナル、SQLターミナル、Pythonコンパイラ、JavaScriptコンソールとしても機能します。ユーザーは技術的な問題が発生した場合、ChatGPTから包括的な技術ソリューションを求めることもできます。

ChatGPT は、Python、Java、JavaScript、C++、C#、Ruby、PHP、Swift、Kotlin、TypeScript、Go、Rust、Scala、R、MATLAB、Dart、Lua、SQL、シェル スクリプト (Bash など) など、さまざまなプログラミング言語をサポートしています。

さらに、ChatGPTはWebページ作成に必要なHTMLとCSSも記述できます。ユーザーはChatGPTに自然言語で要件を明確に記述するだけで、ChatGPTはその指示に基づいて対応するコードを生成するため、プログラマーの作業負荷を大幅に軽減します。

I. コードを書く

プロンプト: Java でサンプルのバイナリ検索を記述してください。

以下は、Java で記述されたバイナリ検索アルゴリズムのサンプル コードです。

 public class BinarySearchExample {

// 二分查找方法
public static int binarySearch ( int [] array, int target) {
int left = 0 ;
int right = array.length - 1 ;

while (left <= right) {
int mid = left + (right - left) / 2 ;

// 检查目标值是否位于中间位置
if (array[mid] == target) {
return mid;
}

// 如果目标值较大,忽略左半部分
if (array[mid] < target) {
left = mid + 1 ;
} else {
// 如果目标值较小,忽略右半部分
right = mid - 1 ;
}
}

// 如果目标值不存在于数组中,返回 -1
return - 1 ;
}

public static void main (String[] args) {
int [] array = { 2 , 3 , 4 , 10 , 40 };
int target = 10 ;
int result = binarySearch(array, target);

if (result == - 1 ) {
System.out.println( "元素不在数组中" );
} else {
System.out.println( "元素位于数组的索引位置: " + result);
}
}
}

II. コードエラーの修正とコードの最適化

ChatGPTは、コードの作成に加えて、コード内のエラーのチェックと修正もプログラマーに支援します。与えられたコードを分析し、構文エラー、論理的な欠陥、潜在的なパフォーマンスの問題などをチェックします。このプロセスにおいて、ChatGPTはプログラミング経験、ベストプラクティス、既知のプログラミングパターンに基づいた提案も提供します。

ChatGPTは、プログラマーがコードの最適化、ロジックの簡素化、冗長な部分の統合、より簡潔な構文の採用を行うのにも役立ちます。命名規則、コメント、空白やインデントの使用など、コードの可読性をチェックします。さらに、ChatGPTはコードのモジュール性を向上させ、冗長な計算、非効率的なデータ構造、過剰なメモリ割り当てといったパフォーマンスの問題を分析します。

また、例外処理とエラーチェックのメカニズムについてコードをチェックし、プログラムが問題を適切に処理できることを確認します。さらに、ChatGPTはSQLインジェクションやクロスサイトスクリプティング(XSS)攻撃などのコード内の潜在的なセキュリティ脆弱性を検出し、適切な修正案を提供します。

プロンプト: Huawei OD アルゴリズムの問​​題の説明をアップロードし、Java ソリューション コードを渡して、どのような問題があるかを尋ねてみましょう。

 import java.util.Arrays;
import java.util.Scanner;

public class Test06 {
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
int [] arr = Arrays.stream(sc.nextLine().split( " " )).mapToInt(Integer::parseInt).toArray();
// 天兵天将将离开的时间H
int H = arr[arr.length - 1 ];

// 获取每棵树上蟠桃个数
arr = Arrays.copyOf(arr, arr.length - 1 );

// 使用二分查找寻找最小速度K
int minSpeed = findMinSpeed(arr, H);

System.out.println(minSpeed);
}

// 使用二分查找寻找最小速度K
private static int findMinSpeed ( int [] arr, int H) {
int left = 1 ;
int right = Arrays.stream(arr).max().getAsInt();

while (left < right) {
int mid = left + (left - right) / 2 ;
if (canEatAll(arr, H, mid)) {
right = mid;
} else {
left = mid + 1 ;
}
}
return left;
}

// 判断在速度K下是否能在H小时内吃完所有桃子
private static boolean canEatAll ( int [] arr, int H, int K) {
int hours = 0 ;
for ( int i = 0 ; i < arr.length; i++) {
hours += arr[i] / K;
if (arr[i] % K != 0 ) {
hours++;
}
}
return hours <= H;
}
}

III. コードの機能とコード変換の理解

トレーニングプロセス中に、ChatGPTは多数のプログラミング例と関連知識を学習し、さまざまなプログラミング言語とプログラムフレームワークの基本構造を理解し、コード機能を解釈する能力を持つようになりました。

まず、ChatGPT はコードの構文とキーワードによって Java、Python、C++ などのプログラミング言語を識別できます。

次に、ChatGPT は関数、クラス、ループ、条件文などのコードの構造を分析し、コードがどのように構成されているかを理解します。

最後に、ChatGPTはコードのアルゴリズムとロジックを分析し、プログラムの機能と目的を理解します。これには、変数値の追跡、関数呼び出しの関係の理解、入出力の決定が含まれます。コードの機能を解釈する際には、コードの意図、潜在的な適用シナリオ、他のコードセグメントとの関係など、コードのコンテキストも考慮します。

これらのステップを通じて、ChatGPT はさまざまなプログラミング言語のコードを完全に理解して解析できるようになり、それによって機能をより効果的に実行できるようになります。

プロンプト: 「改善されたアルゴリズム」の解決方法を説明してください。

注: ChatGPT4o にはコンテキスト メモリ機能があり、キーワードを使用して以前の質問や回答を見つけることができます。

要点の要約:

IV. コードコメントを追加する

プロンプト: 「改善されたアルゴリズム」のコードに詳細なコメントを追加してください。

 import java.util.Arrays;
import java.util.Scanner;

public class Test06 {
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
// 读取输入,并将输入转换为整数数组
int [] arr = Arrays.stream(sc.nextLine().split( " " )).mapToInt(Integer::parseInt).toArray();
// 获取最后一个元素,作为天兵天将离开的时间 H
int H = arr[arr.length - 1 ];

// 获取每棵树上的蟠桃个数,去掉数组中的最后一个元素
arr = Arrays.copyOf(arr, arr.length - 1 );

// 使用二分查找寻找最小的速度 K
int minSpeed = findMinSpeed(arr, H);

// 输出最小速度 K
System.out.println(minSpeed);
}

/**
* 使用二分查找寻找吃完所有桃子的最小速度 K
*
* @param arr 每棵树上的蟠桃个数
* @param H 天兵天将离开的时间
* @return 最小速度 K
*/

private static int findMinSpeed ( int [] arr, int H) {
// 初始化二分查找的左边界和右边界
int left = 1 ; // 最小速度为 1
int right = Arrays.stream(arr).max().getAsInt(); // 最大速度为最大的一棵树上的桃子数

// 二分查找
while (left < right) {
// 计算中间值 mid
int mid = left + (right - left) / 2 ;
// 检查是否可以在速度为 mid 的情况下,在 H 小时内吃完所有桃子
if (canEatAll(arr, H, mid)) {
// 如果可以,则尝试更小的速度,将右边界移动到 mid
right = mid;
} else {
// 如果不可以,则需要更快的速度,将左边界移动到 mid + 1
left = mid + 1 ;
}
}
// 返回最小速度
return left;
}

/**
* 判断在给定速度 K 下,是否可以在 H 小时内吃完所有桃子
*
* @param arr 每棵树上的蟠桃个数
* @param H 天兵天将离开的时间
* @param K 给定的速度
* @return 是否可以在 H 小时内吃完所有桃子
*/

private static boolean canEatAll ( int [] arr, int H, int K) {
// 初始化所需的总时间
int hours = 0 ;
// 遍历每棵树,计算吃完每棵树上的桃子所需的时间
for ( int i = 0 ; i < arr.length; i++) {
// 计算当前树上的桃子需要的整小时数
hours += arr[i] / K;
// 如果不能整除,则需要额外增加一小时
if (arr[i] % K != 0 ) {
hours++;
}
}
// 如果总时间不超过 H 小时,返回 true,否则返回 false
return hours <= H;
}
}

5. ユニット テスト クラスを記述し、テスト ケースを提供します。

プロンプト: 「改善されたアルゴリズム」のコードに基づいて、いくつかのテスト ケースを記述してください。

プロンプト: 次のコードの単体テスト クラスを作成し、モック メッセージを記述し、POST リクエストを作成して、戻り値を処理してください。

ユニットテストクラスの重要なポイント:

VI. バグ修正

友人が私に技術的な質問をしましたが、私は数秒でそれを解決し、自分の専門的なスキルを発揮しました。

VII. SQL文の書き方

ChatGPTは専用のデータベース開発ツールではありませんが、SQL文を記述できます。必要な操作、関連するテーブル、フィールド、条件を指定するだけで、ChatGPTは対応するSQLコードを生成します。特定のアプリケーションシナリオでは、より詳細な情報を提供することで、より正確なSQL文を生成できます。

プロンプト: 画像に示すテーブル構造を持ち、「ビジネス」でグループ化され、「スコア」で降順に並べ替えられた SQL ステートメントを MySQL で記述します。

 SELECT c1.business,
c1.dish,
c1.efficiency,
c1.sales_volume,
c1.score
FROM commodity c1
JOIN (
SELECT business, MAX (score) AS max_score
FROM commodity
GROUP BY business
) c2
ON c1.business = c2.business AND c1.score = c2.max_score
ORDER BY c1.score DESC ;

このクエリは、まずサブクエリでビジネステーブルをグループ化し、各グループ内の最高スコアを検索します。次に、メインクエリで、この最高スコアを持つ元のテーブルを結合し、最後に結果をスコアの降順で並べ替えます。

8. JARパッケージバージョンの脆弱性の解決

プロンプト: IntelliJ IDEA で脆弱な依存関係を表示する方法

プロンプト: bcprov-jdk15on 1.70 に脆弱性があります。どのバージョンにアップグレードすればよいですか?脆弱性がない場合は…

IX. ユーティリティクラスの開発

プロンプト: Java で HTTPS サーバーおよびクライアント コードを記述し、証明書を追加します。

10. JavaコードをPythonなどの言語に変換する

ChatGPT を 1 回受講するだけで、すべての言語をマスターできます。

プロンプト: Java でバイナリ検索コードを記述します。

プロンプト: 上記のコードを Python に変換します。

XI. 推奨ソリューション

プロジェクトの開発・運用においては、技術的な課題や運用上の障害に頻繁に遭遇します。こうした状況において、経験豊富な技術マネージャーやアーキテクトは、解決策を提案する必要があります。その品質はプロジェクトの成否に直接影響を及ぼします。ChatGPTは、コンピュータサイエンス、ネットワーク技術、ソフトウェア開発など、幅広いITトレーニングを通じて、様々な技術的問題を理解し、体系的な解決策を提供することができます。ユーザーのニーズに基づいて解決策を詳細に分析し、最適な解決策を見つけるための複数の選択肢を提供します。

質問:FTPサーバーからファイルを取得し、その内容を読み取り、Oracleデータベースに保存するという要件があります。しかし、ファイルの数が多く、ファイルに含まれるデータ量が多いため、実行速度が非常に遅くなります。このプロセスを最適化するにはどうすればよいでしょうか?

1. ファイルのダウンロードと読み取りのマルチスレッド実装

 import java.io.*;
import java.net.URL;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class FTPDownloader {

private static final int THREAD_COUNT = 10 ;

public static void main (String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(THREAD_COUNT);
String[] fileUrls = { /* List of file URLs */ };

for (String fileUrl : fileUrls) {
executorService.execute(() -> downloadFile(fileUrl));
}

executorService.shutdown();
}

private static void downloadFile (String fileUrl) {
try (InputStream in = new URL(fileUrl).openStream()) {
BufferedReader reader = new BufferedReader( new InputStreamReader(in));
String line;
while ((line = reader.readLine()) != null ) {
// Process each line and store in database
DatabaseWriter.addData(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

2. バッチデータ挿入の実装

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class DatabaseWriter {

private static final String DB_URL = "jdbc:oracle:thin:@localhost:1521:orcl" ;
private static final String USER = "username" ;
private static final String PASS = "password" ;
private static final int BATCH_SIZE = 1000 ;

private static List<String> buffer = new ArrayList<>();

public static synchronized void addData (String data) {
buffer.add(data);
if (buffer.size() >= BATCH_SIZE) {
writeToDatabase();
}
}

private static void writeToDatabase () {
try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASS)) {
conn.setAutoCommit( false );
String sql = "INSERT INTO your_table (column1) VALUES (?)" ;
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
for (String data : buffer) {
pstmt.setString( 1 , data);
pstmt.addBatch();
}
pstmt.executeBatch();
conn.commit();
}
buffer.clear();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

3. 要点のまとめ

  1. マルチスレッドの並列ファイルダウンロードと処理: スレッド プールを利用して、ファイルのダウンロードと読み取り操作を並列に処理します。
  2. バッチ挿入: JDBC バッチ挿入機能を使用して、複数のレコードを一度にデータベースに挿入します。
  3. データベースを最適化します。挿入とクエリのパフォーマンスを向上させるために、データベース テーブルの構造とインデックスが最適化されていることを確認します。
  4. 非同期処理: 非同期 I/O を利用してデータ処理の同時実行性を向上させます。
  5. 圧縮転送: 可能であれば、圧縮方法を使用してファイルを転送し、ネットワーク転送時間を短縮します。

上記の方法により、FTP サーバーからファイルを取得し、その内容を Oracle データベースに保存する際の効率が大幅に向上します。

12. 端末として機能する

ChatGPTは、Linuxターミナル、SQLコンソール、JavaScriptコンソール、Pythonインタープリターなどの特定のターミナル環境に直接組み込むことはできませんが、ターミナルエミュレーターとして機能することができます。つまり、ChatGPTはターミナルコマンドを理解し、実行をシミュレートすることができます。例えば、Linuxターミナルで特定のコマンドライン命令の使い方を尋ねられた場合、ChatGPTは対応するコマンドライン命令を理解して生成し、実行結果を予測することさえ可能です。

ChatGPTはこれらの端末で直接コマンドを実行することはできませんが、コマンド実行プロセスをシミュレートすることで、ユーザーがコマンドの使い方を理解し、習得するのに役立ちます。プログラミング初心者や新しい技術を学習している開発者にとって、この端末シミュレーション機能は、様々なプログラミング言語やコマンドラインツールの使い方をより深く理解し、習得するのに役立ちます。

プロンプト:Linux端末の役割を担っていただきます。コマンドを入力し、端末に表示される内容を返信してください。返信には端末の出力結果のみを単一のコードブロックで記述してください。それ以外の記述は不要です。説明文を書いたり、指示がない限りコマンドを入力したりしないでください。