コーディング関連のすべての機械学習トピックに関する非常に広範な読書リストを見つけました。
ご覧のように、人々は機械学習をコーディングに適用しようとしていますが、あらゆる種類のコーディングやデバッグを処理できるマシンだけでなく、常に非常に狭い分野で行っています。
この回答の残りの部分では、比較的広い範囲の「デバッグ」マシンと、これがまだ実際に試行されていない理由に焦点を当てます(トピックに関する私の研究が示す限り)。
回答の長い部分を編集しました。要約すると(次の部分で重要です)、現在の機械学習の方法論、人間が学習できるもの、機械も同様です。物理的な領域(CPU速度、マシンのサイズなど)によってのみ制限されます。学習アルゴリズム自体の適用の制限は想定されていません。
機械学習をコード開発に適用するためにこれまでに行われた研究は何ですか?デバッグはどうですか?
ここでの問題は、不可能ということではなく、非常に複雑なトピックです。
人間は、誰もが同意する普遍的なコーディング標準の定義に近づいていません。SOLIDのような最も広く合意された原則でさえ、どれだけ深くそれ実装されなければならない。すべての実用的な目的のために、金銭的(または時間的な)制約がない限り、SOLIDに完全に従うことはできません。これは、ほとんどの開発が行われる民間部門では不可能です。SOLIDはガイドラインであり、厳密な制限ではありません。
善悪の客観的な尺度がない場合、どのようにして機械に正/負のフィードバックを与えて学習させることができますか?
せいぜい、多くの人にマシンに自分の意見を言わせることができ(「これは良い/悪いコードです」)、マシンの結果は「平均的な意見」になります。しかし、それは必ずしも正しい解決策と同じではありません。可能ですが、保証されているわけではありません。
第二に、特にデバッグのために、特定の開発者が特定のタイプのバグ/ミスを導入する傾向があることを認識することが重要です。間違いの性質は、場合によってはそれを導入した開発者の影響を受ける可能性があります。
例えば、私は職場で他人のコードのバグ修正に頻繁に関与しているため、各開発者が犯しがちなミスを予想しています。特定の問題を考えると、dev Aは構成ファイルの更新を忘れる可能性が高いことを知っていますが、dev Bはしばしば不適切なLINQクエリを書き込みます。開発者に基づいて、最初に構成ファイルまたはLINQに目を向けることがあります。
同様に、私はいくつかの企業でコンサルタントとして働いてきましたが、特定の種類の企業に向かってバグの種類が偏っている可能性があることがはっきりとわかります。私が最終的に指摘できるのは難しくて速い規則ではありませんが、明確な傾向があります。
機械はこれを学ぶことができますか?開発者Aは構成を台無しにし、開発者BはLINQクエリを台無しにする可能性が高いことを認識できますか?もちろんできます。前に言ったように、人間が学べることは何でも、機械でも学べます。
しかし、マシンにあらゆる可能性を教えたことをどのように知っていますか?どのようにして小さな(つまり、グローバルではない)データセットを提供し、それがバグの全範囲を表しているという事実を知ることができますか?または、代わりに、普遍的に使用可能なデバッガを作成するのではなく、特定の開発者/企業を支援する特定のデバッガを作成しますか?
機械学習デバッガーを求めることは、機械学習シャーロックホームズを求めるようなものです。それを作成することは確かに不可能ではありませんが、多くの場合、デバッガ/シャーロックであるという中核的な理由は、主題ごとに異なる主観的評価に依存し、信じられないほど幅広い知識/可能性のある欠陥に触れます。
すぐに証明可能な正しい/誤った結果がないため、機械を簡単に教えて、機械が順調に進んでいることを確認することは困難です。