「写経」で学ぶRust日記:その4
お疲れ様です。Y研究員です。ご無沙汰しております。プログラムの勉強を「写経」で続けています。
新しい言語のRustを勉強しています。しかし選んだ本が硬派というか、動くサンプルコードが無い本です。しかし言語を要素ごとに深く書いてあります。「写経」で学ぶには難しい本ですが、現代の力であるLLMを用いて解決できるか試しています。
最初は型の説明で、その次は所有権の説明が続きます。Rustの肝です。今は所有権の途中ですが、プログラムを書くことにしました。参考にしている書籍にも、なにか書きながら読み進めるのが良いと書いてあったからです。
何を作ろうか迷いましたが、自分が好きな物にしました。ネットワークツールのNmapです。コマンドラインで動かす便利ツールです。IPアドレスの幅を指定してPingを打ったりできます。例えば自宅のネットワークにラズパイをつなげたけど、IPアドレスがわからない場合などに便利です。ポートスキャンなどもできます。サイバーセキュリティの初歩ツールですね。
今日はとりあえず固定したIPアドレスにPingを打つところから始めました。ChatGPT-4oに問い合わせてプログラムを書いてもらいました。一気に書き写すのではなく、要素ごとに書きました。コンパイルしてエラーが出ない範囲で進めています。ChatGPTでもたまに間違えるので、そこは公式ドキュメントを参照して間違いを指摘しました。
とりあえずICMPのパケットを作る関数は書けたので、次は実際にPingを打つ関数を書きます。
最近、Twitterで「プログラミングの課題でLLMに頼りすぎる奴がいて問題だ」と見ました。正しい答えがでるまでプロンプトをいじくり回しているようです。この問題は「写経」で解決すると思いました。LLMが出してくるプログラムを手で書き写すと、細部に目が行きます。自分で間違いに気がついたり、理解ができない部分は改めて質問するなどすれば良いと思います。こうすることで、LLMが吐き出した理解できないコードをコピペする行いは改められると思います。
最も、今どきはLLMを効果的に使いこなす技術も身につける必要があります。それとは別に、本来のプログラムを自力で書く力も必要です。課題を出す方は大変ですが、これら2つは別問題なので課題も別々に出したほうが良いとアメリカの大学の先生が言っていたことを思い出しました。
それではまた。