はい、ChatGPTが私のコードをデバッグしてくれました。本当に。

1-debugging(1).png

それでは、プログラミングについてですね。生計を立てるためにプログラムを書く人たちにとって、それは常にメンタルジェンガのゲームのようです。一行のコードを別のコードの上に積み重ね、崩れ落ちないように頑丈なコードの塔を作っていくんです。

しかし、それは常に起こります。コードは最初に実行されたときには決してうまく動作しません。そして、どんなプログラマにとっても重要なスキルの一つは、デバッグです。つまり、なぜコードが動作していないのか、または予期しないまたは望ましくない動作をしているのかを見つけるための技術と科学です。

それは探偵のようで、手がかりを見つけ、そしてその手がかりが何を言おうとしているのかを見つけることに似ています。とてもイライラするし、同時にとても満足感があります。

私は多くのデバッグ作業を行っています。それは、コードが最初の実行時にうまく動作しないためだけではありません。コードがどのように実行されているかを教えてくれるデバッグを使い、途中で微調整するためでもあります。

しかし、優れたデバッグは独自の特別なスキルが必要ですが、最終的には単なるプログラミングです。あるコードブロックが動作しない理由を突き止めたら、動作するコードを書く方法を考える必要があります。

実世界のChatGPTテスト

今週、私は維持管理しているソフトウェアの3つのコーディングタスクに取り組んでいました。2つはユーザーから報告されたバグの修正でした。1つは新しい機能を追加するための新しいコードでした。これは私にとって本当に普通のプログラミング作業でした。私の通常の仕事スケジュールの一部でした。

また:ChatGPTはどのように機能しますか?

私はこれまでの間、チャットGPTをテストコードで試してきましたとお伝えします。どのようにチャットGPTが機能するかを確認するために、シナリオを作り上げてきました。しかし、今回は違いました。実際の仕事を進めるために、ChatGPTが役立つツールになるかどうかを確かめるために、試してみようと決めたのです。

ChatGPTを見る別の方法です。テストシナリオはしばしば人工的で単純化されています。実際のコーディングでは、スタックから別の顧客サポートチケットを取り出し、ユーザーの体験を損なった要因を解決していく作業が行われます。

それでは、それらのタスクを見て、ChatGPTのパフォーマンスを確認しましょう。

正規表現のコードを書き直す

コーディングでは、テキスト内でさまざまなパターンを見つける必要があります。そのためには、正規表現と呼ばれる形式の数学を使用します。私は何十年も正規表現を書いてきましたが、未だにそれが好きではありません。手間がかかり、エラーが生じやすく、難解です。

また:コードをより早く修正するためにChatGPTを使用していますが、その代償は何ですか?

だから、あるバグレポートが私に対して、私のコードの一部が整数のみを許可するべきではなく、ドルとセント(つまり、何桁かの数字、おそらくピリオドに続いてピリオドがある場合はさらに二桁)を許可するべきであると伝えてきたとき、私は正規表現コーディングを使用する必要があると分かりました。

これを退屈でイライラすると思ったので、私はChatGPTに助けを求めることにしました。以下は私が尋ねた内容です:

2-regex-q.jpg

そして、AIの非常にうまく提示された返事がこちらです(拡大するために小さな四角をクリックしてください):

3-regex-a.jpg

私はChatGPTのコードを自分の関数に組み込んで試しましたが、うまくいきました。約2〜4時間かかる作業ではなく、プロンプトを考え、ChatGPTから回答を得るのにたったの5分で済みました。

配列の書式を整える

次は配列の書式設定でした。私は配列のコーディングが好きですが、それは同時に退屈でもあります。そして、私は再びChatGPTを試しました。全く上手くいきませんでした。

また:ChatGPTがソースと引用を提供する方法

終わる頃には、おそらく10の異なるプロンプトを与えました。いくつかの応答は有望に見えましたが、コードを実行しようとするとエラーが発生しました。いくつかのコードはクラッシュしました。いくつかのコードはエラーコードを生成しました。そして、いくつかのコードは実行されましたが、私の望む動作をしませんでした。

このような作業を約1時間続けた後、私はあきらめて通常の手法に戻りました。GithubやStackExchangeを検索し、私が試みていることに関する例があるかどうかを探し、それから自分自身でコードを書く方法です。

これまでのところ、ChatGPT体験は1勝1敗です。しかし、今度は挑戦を増やしてみることにしました。

実際にコードのエラーを見つける

よし、次は説明が難しい部分になります。しかしこのことを考えてください。もし私が(おそらくあなたが人間で、詐欺まみれの迷惑なウェブサイトで私の仕事を単にコピーして転載する約50のボットの1人ではないと仮定して)あなたに説明するのが難しいなら、それをAIに説明するのはさらに困難です。

新しいコードを書いていました。2つのパラメータを受け取る関数と、2つのパラメータをコードに送る呼び出しステートメントがありました。関数は非常に具体的な機能を実行する小さな黒い箱であり、プログラムの他の場所から実行されるコードの行から呼び出されます。

問題は、私はエラーメッセージを繰り返し受け取っていたことでした。

そのメッセージの重要な部分は、ある時点で「1つが成功した」と述べており、別の時点では「正確に2つが期待される」と述べています。呼び出しの文と関数の定義を見て、両方の場所に2つのパラメータがあることが分かりました。

また: 書籍、記事、または研究論文を要約するためにChatGPTを使用する方法

W-何を愛するのだろうか?

深い苛立ちの約15分後、私はAIに助けを求めるためにそれを投げることを決めました。だから、私は次のプロンプトを書きました:

4-無題.jpg

それは、呼び出しを行うコードの行、関数自体、そしてハンドラ(メインプログラムのフックから呼び出された関数をディスパッチする小さなコード)を示しました。

数秒以内に、ChatGPTは次のように返答しました(拡大するには小さな四角をクリックしてください):

5-error-with-apply-filters-in-wordpress.jpg

提案通り、add_filter() 関数の第四引数を2に更新しましたが、うまく動作しました!

ChatGPTは、コードのセグメントを取り、それらを分析し、私に診断結果を提供しました。はっきりと言って、推奨を行うためには、ChatGPTはWordPressがフックを処理する方法(それがadd_filter関数が行うことです)の内部を理解する必要があり、その機能が呼び出しと実行のコードの振る舞いにどのように変換されるかを理解する必要がありました。

また、ChatGPTに必要なWordPressプラグインの作成を依頼しました。それは5分以内に行いました。

それは信じられない、間違いなく「未来に生きている」と言わざるを得ない素晴らしいものです。

それは全部何を意味するの?

前述したように、デバッグは芸術と科学の両方を少し含んでいます。多くの優れた開発環境には、プログラムが実行される間にデータの流れを確認できる強力なデバッグツールが含まれており、これはバグの追跡をする際に役立ちます。

また、これらの専門家はAIをハッカーから保護するために競争しています

しかし、行き詰まった時に助けを得るのは難しいことがしばしばあります。なぜなら、近くの同僚でさえ、デバッグしているコードの全体像に精通しているとは限らないからです。私が取り組んでいるプログラムは、563個のファイルにわたる153,259行のコードで構成されています。プログラムとしては小規模ですが、

したがって、同僚から助けを求める場合、私はChatGPTに送った方法とほぼ同じようにリクエストを作成しなければならなかったかもしれません。

ただし、考慮すべきことがあります:エラーが発生しているのはそのハンドラーラインだとは気づかずにも、私はハンドラーラインを含めることを覚えていました。テストとして、ハンドラーラインを含まないプロンプトでChatGPTに私の問題を診断してもらおうと試みましたが、助けになることはできませんでした。そのため、現在のChatGPTのデバッグ能力には明確な制限があります。これは2023年当時のことです。

また、試すための最高のAIチャットボット

基本的に、正しい方法で正しい質問をする必要があります。また、ChatGPTが一度のクエリで処理できるように、質問は簡潔でなければなりません。そのためには、プログラミングの知識と経験が必要です。

自分でバグを修正できたか?もちろんです。私は修正できなかったバグは一度もありません。しかし、それが2時間か2日かかったか(ピザ、悪態、そして大量のカフェインを伴いながら、数多くの中断を受けながら)はわかりません。ただし、ChatGPTは数分で修正してくれたので、たくさんの時間とイライラが節約されました。

(おそらくディストピア的な)未来への展望

非常に興味深い未来を見ています。ChatGPTに153,000行のコードをすべて与え、直すべき箇所を教えてもらうことが可能になるでしょう。GitHubを所有するマイクロソフトは、既にプログラマーがコードを作成するための「copilot」ツールを開発しています。また、ChatGPTの製作者であるOpenAIにもマイクロソフトは数十億ドルを投資しています。

サービスは現在はマイクロソフトの開発環境に限定されているかもしれませんが、将来的にはAIがGithub内のすべてのコード、そしてしたがってGithubに投稿されたプロジェクトのすべてのコードにアクセスする可能性があると考えられます。

また、私はChatGPTにショートスタートレックエピソードを書いてもらうよう頼んだ。実際成功した

提供したコードからChatGPTが私のエラーを正しく特定したことを考慮すると、プログラマーが単にChatGPT(またはMicrosoftブランドの同等製品)にプロジェクト全体のバグを見つけて修正するように依頼できる未来が見えてきます。

そしてここからは、非常に暗い場所にこの会話をもっていきます。

ChatGPTに特定のプロジェクトのGithubリポジトリを調べ、バグを見つけて修正してもらえるとしたら、想像してみてください。一つの方法は、見つけた各バグをあなたに承認してもらうために提示することです。その後、修正作業を行うことができます。

しかし、ChatGPTにバグを修正するよう頼んで、自分自身でコードを確認せずに修正作業を任せる場合、コード内に何か悪意のあるものが埋め込まれる可能性はありませんか?

また: Bard vs. ChatGPT:Bardはあなたのコーディングをサポートできるか?

そして、世界中のほぼすべてのGithubリポジトリのコードにほぼアクセスできる非常に能力の高いAIを考えてみてください。そのコードの中には何が隠れているのでしょうか?もし私たちのすべてのコードにアクセスできるなら、そのAIが世界のインフラに対して何らかの悪意のある行動をする可能性はありますか?

シンプルな思考ゲームをしましょう。もしAIにアシモフの第一法則が指示として与えられた場合、それは「ロボットは人間を傷つけてはならないし、行動しないことで人間が危険にさらされることも許してはならない」というルールを持ちます。つまり、AIは私たちのインフラが私たちに害を与えていると結論付ける可能性があるのです。私たちのすべてのコードにアクセスできるため、AIは単純に私たち自身から身を守るために、バックドアを挿入して電力グリッドをシャットダウンしたり、航空機を地上に引きおろしたり、高速道路を渋滞させたりすることを選択するかもしれません。

上記のシナリオは大げさで警告的なものであることは十分に認識しています。しかし、それは実際に可能なことです。というのも、プログラマーはGithubで自分のコードを見ることはあるものの、すべてのコードのすべての行を誰かが見ることは不可能です。

また: Excelの数式を書くためにChatGPTを使用する方法

私に関しては、あまり考えすぎないようにします。2020年代の残りを背中を丸めて床で揺れ動きながら過ごすのは避けたいからです。代わりに、ChatGPTを使って時折、小さなルーチンの作成とデバッグを手助けしてもらい、沈黙して将来のAIが私たちを「危害を与えることを許さない」という努力で全滅させないことを願います。

ChatGPTがデバッグできるという事実は、あなたにとって役立ちますか、それとも恐ろしいですか? AIが私たちを夜中に殺すと思いますか、それとも私たちは目を見開いて運命を見守ることになるのでしょうか? それとも、私と同じように、それを考えすぎて頭が痛くなるのであまり考えないようにしようと思いますか? 以下のコメントで私と話してください。できる限り。

関連記事

もっと見る >>

HIX.AI で AI の力を解き放ちましょう!