強まっていこう

あっちゃこっちゃへ強まっていくためのブログです。

ChatGPTはプログラマーにとって便利だがプログラマー大量死を招く

コードを書く時って、わからないことがあるとググるわけだが、
クソみたいな概要説明だけで具体的なコードが一切無いゴミサイトに釣られてイライラしつつ
コードのあるサイトを見つけたものの、自分が欲しいどんぴしゃなものじゃ無いからそれをどう変えればいいか更に調べて、みたいな不毛ループに結構な時間を浪費する

でも ChatGPT を使えばサクッと自分の欲しいコードを出してくれる

例えば「25番ポートに対してデータを送るnodeのコード」と入力すると

const net = require('net');

const client = net.createConnection({ port: 25 }, () => {
  console.log('connected to server!');
  
  // SMTP communication example
  client.write('EHLO example.com\r\n');
  client.write('MAIL FROM:<sender@example.com>\r\n');
  client.write('RCPT TO:<recipient@example.com>\r\n');
  client.write('DATA\r\n');
  client.write('Subject: Test email\r\n');
  client.write('\r\n');
  client.write('This is a test email.\r\n');
  client.write('.\r\n');
  client.write('QUIT\r\n');
});

client.on('data', (data) => {
  console.log(data.toString());
  client.end();
});

client.on('end', () => {
  console.log('disconnected from server');
});

上記のコードでは、netモジュールを使用して、25番ポートに接続しています。createConnection()メソッドを使用して、ポート番号25を指定してサーバーに接続しています。

SMTP通信を例として使用しています。SMTPは、電子メールを送信するためのプロトコルであり、25番ポートを使用します。SMTPサーバーに接続するには、EHLOコマンドを送信する必要があります。その後、MAIL FROMおよびRCPT TOコマンドで、メールの送信元と宛先を指定します。DATAコマンドを使用して、メールの本文を送信します。メールの本文の終わりには、.

とサクッと説明までつけて返してくれる
これでググってイライラする事も無くなった

しかも、どんな言語でも OK と来る
なんせ nim まで OK だ

import net/smtp

# メールの送信元と宛先
let sender = "sender@example.com"
let recipient = "recipient@example.com"

# メールの内容
let subject = "Test email"
let body = "This is a test email."

# SMTPサーバーの情報
let smtp_server = "smtp.example.com"
let smtp_port = 25

# SMTPクライアントの作成
let smtp_client = newSmtpClient(smtp_server, smtp_port)

# メールの作成
let message = initMessage(sender, @[recipient], subject, body)

# メールを送信
smtp_client.sendMail(message)

# SMTPサーバーとの接続を終了
smtp_client.quit()

さよならグーグル先生
さよなら Qiita
さよなら stack overflow
ちなみに Brainf*ck だとやんわり出来ませんと言われる

Brainfuckは低水準な言語であり、ネットワーク通信に必要な機能がありません。そのため、25番ポートに対してデータを送信するBrainfuckのコードは作成できません。
Brainfuckは主にチューリング完全性の証明やプログラミング言語の理解のために使用されます。ネットワーク通信には高水準の言語を使用することをお勧めします。

こうやって ChatGPT にコードを吐かせる事も出来るが、こいつはコードを読ませると解説をしてくれる

PHP の以下のような簡単なコードを食わせると

function cmp($a, $b) {
	if ($a == $b) {
		return 0;
	}
	return ($a < $b) ? -1 : 1;
}

このコードは、引数として渡された2つの値を比較し、大小関係を返すPHPの関数です。以下は詳細な解説です。

とスパッとこの関数の説明を返してくれる
さらにコメントまで付けてくれる

function cmp($a, $b) {
	if ($a == $b) {
		return 0; // aとbが等しい場合、0を返す
	}
	return ($a < $b) ? -1 : 1; // aがbより小さい場合、-1を返し、それ以外の場合は1を返す
}

さらにさらに、使用例まで提供してくれる

>>この関数は、以下のように使用できます。<<

$a = 10;
$b = 5;

$result = cmp($a, $b);

if ($result == 0) {
	echo "$a と $b は等しいです。";
} else if ($result < 0) {
	echo "$a は $b より小さいです。";
} else {
	echo "$a は $b より大きいです。";
}

この場合、変数$aに10、変数$bに5が代入され、cmp()関数を使用して比較しています。$result変数には、cmp()関数が返す値が代入されます。

$result変数の値に応じて、if文で分岐処理を行い、結果を表示しています。

例えば、上記のコードは、次のような出力を生成します。

10 は 5 より大きいです。

更に凄いのが、コードのトランスパイルもやってくれるところだ

function cmp($a, $b) {
	if ($a == $b) {
		return 0;
	}
	return ($a < $b) ? -1 : 1;
}
をpythonに

とやると

def cmp(a, b):
	if a == b:
		return 0
	return -1 if a < b else 1

とサラッと返してきて、これも同じように使用例を python で提供してくれる

ここまで来ると恐怖だ

ChatGPTはどこぞのブログのコードをそのまま出してくるとかじゃなくて、コードを理解しているところが怖いんだよ

エントリーが長くなってしまうから簡単な例にしているが、自分が書いた結構長めの関数だのクラスのを食わせてもバッチリ理解して返してくるんだ

トランスパイルにしろ、nim 筆頭に一所懸命トランスパイラ付きの言語を開発している人々がいるがもはや意味が無い

どころか欲しい物を書くだけで動くものを提供してくれるようになってしまっているので、プログラマが必要無い

吐き出されたコードを結合したり修正したりする極少数のエンジニアがいればそれで良いわけだ

とにかく人が要らなくなる

これから先のエンジニアに必要なスキルはコミュニケーションを図って相手から的確に要件を抽出したり
人の言う事の意図を汲み取って出来る事出来ない事を相手を怒らせる事無く明確に伝たりする能力が一番大切になると思う
要するに PM の折衝スキルやね
オタク系の下流エンジニア知識は全てゴミになる

そして「これからプログラマーになろう!」なんて思ってる少年少女よ

やめとけ