AIを利用したプログラミングが一般的になるなか、AIを利用することでプログラマーのスキルは低下していくのではないかとの懸念を訴える開発者も存在します。
今回、開発者David Oliver氏は「AI Coding assistants provide little value because a programmer's job is to think」と題したブログ記事を公開し、AIコード生成に対する警鐘を鳴らしています。
同氏は具体例として、以下のJavaScriptのイベントリスナーのサンプルコードを示しています。
const thing = document.querySelector("#thing"); thing.addEventListener("click", () => { console.log("this is: ", this); });
このコードについて、以下のような問題点があると指摘しています:
- 実行環境の不明確さ: このコードがどのような環境で実行されるべきかが明示されていない。
- 外部依存性: getElementByIdやaddEventListenerなどの関数の定義がスクリプト内にないため、外部の文脈に依存している。
- 非同期性の考慮不足: DOMが完全にロードされる前に実行されると、エラーが発生する可能性がある。
- thisの曖昧さ: ハンドラー内でのthisが何を指しているのかが明確ではなく、予期しない動作を引き起こす可能性がある。
- エラー追跡の困難さ: バンドルされたコードではスタックトレースが正確でない場合がある。
同氏によると、AIのコードは、パターンを予測するだけで、意味や背景を理解しておらず、生成されたコードの意味や意図を十分に説明できない欠点があるとのこと。人間が書いたものよりも不明瞭で冗長になることが多く、検証するために時間もかかるため、AIコードよりも、モジュールやオープンソースプロジェクトを利用する方が価値があると主張しています。
同氏はプログラミングの本質は「コードを書く」ことではなく、「考えること」にあり、この姿勢がエンジニアリングをより良くする鍵だとまとめています。
この記事に関しHacker Newsでも議論が行われています。
AIツールは、抽象化や複雑な問題の理解、コードの間違いを特定する能力が限定されているなど、完全に自立して価値を提供することができないといった記事に同意する意見のほか、適切なコンテキストを与えることでAIが迅速かつ効率的にタスクを遂行できると主張するAI擁護派の意見など、さまざまなコメントが投稿されています。AIツールがプログラマーの日常業務にどのように適応し、どの程度の価値を提供できるかについて、さまざまな視点が示されています。