HN 日本語サマリー

← 一覧へ戻る
キャリア

LLM時代におけるプログラミング学習

Learning Programming in an Age of LLMs (blog.ploeh.dk)

27 pointsby moneroloop201810 コメント

要約

この記事は、LLM(大規模言語モデル)の普及が進む中で、プログラミングを学ぶことの意義について読者からの質問に答える形式で論じています。著者は、AIが開発速度を加速させる一方で、深い理解なしにシステムを構築することのリスクや、AIによる大量失業の可能性について懸念を示しています。そして、自身の経験を踏まえ、AI時代においても基礎学習の重要性は変わらないとしつつも、その学習方法や目的については再考が必要であると示唆しています。

全文翻訳

LLM時代におけるプログラミング学習 マーク・シーマン著 読者からの手紙に対するオープンな回答。 最近、ある読者から、LLMの時代におけるプログラミング学習について、多くの質問が書かれた長い手紙を受け取りました。何度かのやり取りの後、その手紙の大部分を引用して、公に回答を試みる許可を得ました。私の回答はいずれも、特に厳密なものではありません。状況は非常に不確実であり、私の能力の限りでしか答えられませんが、それらが不変の真実であるとは主張しません。 「AI時代におけるソフトウェアの深い理解を持つ人々が、学習や能力についてどのように考えているのかを理解しようとしています。私は、歴史家のように、技術的移行を実際に経験しながら、人々がそれをどのように理解しているかを直接尋ねています。」 約1年前にAI支援プログラミングに魅了されました。正式なCSのバックグラウンドはありませんでしたが、LLMを使って、API、PostgreSQL、LLMパイプライン、リサーチ自動化、マルチモデルワークフローを含む、かなり大規模なTypeScript/JavaScriptシステムを構築することができました。最初はほとんど魔法のように感じられました。AIは、アイデアを持つこととそれを構築できることの間の距離を縮めるように見えました。 しかし今、そのシステムを実際のプロダクション製品にしようとして苦労しています。AIで一つのエラーを修正すると、別のエラーが現れ、さらに別の部分が完全に理解できない方法で動作します。数ヶ月のリファクタリングの後、不快な気づきがありました。自分の理解レベルを超えたシステムを構築してしまったのかもしれないということです。すべてがうまく機能しているときは、そのギャップはほとんど見えません。うまくいかないときは、非常に現実的になります。 時には、別のモデルに尋ねなければ、次に何をすべきか本当にわかりません。それが、私が1年間製品を構築していたのか、それともその一部として、機能するには十分洗練されているが、真に所有するにはまだ十分に深く理解していないものの外観を構築していたのか、疑問に思わせました。 私はAIに全く反対ではありません。これらのシステムに魅了されており、プロフェッショナルとしてそれらと協力したいと思っています。しかし、それらとの適切な関係が何であるかについては確信が持てません。 確かに、私も確信が持てませんが、先に進む前に、私の立場を明らかにすることが最も透明性があると思います。私はまだAIについて決定を下していませんが、それが止められない可能性があることを十分に承知しながらも、それを嫌う方に傾いています。私はそれを使って仕事をし、実験しており、しばしば感銘を受けます。他の時には、それは私を苛立たせます。通常、最も感銘を受けるときに、私はそれを最大限に嫌悪します。悪いときは、それは苛立たしいことがありますが、その時は少なくとも、私が30年以上かけて学んだことがまだ関連性があるという幻想の中で、暖かさの残り火を吸収することができます。それが最高であるとき、私は時々考えます。「バトラー教団のジハードにどこでサインアップすればいいのだろうか?」 LLMに対する私の立場は、私の個人的な社会経済的地位に部分的に基づいています。私は十分に年をとっており、すでに十分な成功を収めているので、他の条件がすべて同じであれば、失業しても生き残ることができます。一方で、知識基盤社会が生き残れるかどうかはわかりません。LLMは、他のホワイトカラーの仕事を奪う前に、プログラマーの仕事を奪うかもしれません。結局のところ、プログラミングは、例えば保険金請求管理よりも検証が容易な分野かもしれません。それでも、知識労働者の大量失業の段階に達した場合、我々が知っている社会が存続するかどうかはわかりません。 私は通常、経済学者としての私の経歴についてあまり話しませんが、この文脈では言及する価値があると思います。経済学者として、30〜40%の大量失業が経済に大きな影響を与えないとは想像できません。これが以前にも起こったという議論は痛いほど認識しています。失業はあるかもしれませんが、技術の進歩は今日想像もできない新しい仕事を生み出すということです。それは、ストッキングフレーム、蒸気機関、内燃機関、コンピューターなどの導入時にも同様でした。これは部分的にしか真実ではありません。はい、新しい仕事は生まれましたが、しばしば失業した人々のためのものではありませんでした。炭鉱夫がすぐにプログラマーになったわけではありません。中国が世界貿易機関に加盟したときも、同じような議論が使われました。そして実際に、たくさんの新しい仕事が生まれましたが、それは西側世界ではありませんでした。したがって、生きた経験と歴史的経験に基づいて、すべてがうまくいくという議論には懐疑的です。しかし、心から間違っていることを願っています。私はプログラミングが大好きで、あと10年それをしても構いません。おそらくさらに重要なのは、私には成人した子供たちがいることです。彼らのためにも世界があることを願っています。 「だから、あなたがこれについてどう考えているか、本当に知りたいです。LLMが存在する前にプログラミングの基礎を学んでいてよかったと思いますか?もし今日始めるなら、言語、データ構造、データベース、ネットワーク、オペレーティングシステム、デバッグ、アーキテクチャを真剣に学びますか?AIは、人々が理解できるようになるよりも速く、構築できるようになることを可能にすると思いますか?」 LLMが登場する前にプログラミングを学んでいてよかったか?はい、もちろんです。それらのスキルは30年間私に役立ちました。もし今日始めるなら、大工仕事、金属加工、銃器製造、あるいは手と目の協調を必要とする他の何かを学ぶことを真剣に検討するでしょう。ロボット工学でも進歩があることは知っていますが、肉体労働の代替は、より遠い未来にあるように思えます。しかし、質問に答えるために:私は個人的に、現在、大学のプログラムの一部として、データ構造、言語セマンティクスなどを学んでいます。それは好奇心からですが、それから多くの金銭的報酬を得ることを期待しているからではありません。AIは、人々が理解するスピードよりも速く開発できるようになることを可能にすると思いますか?これはまだわかりません。ソフトウェア開発者は、何十年もの間、理解していない抽象化の上に作業してきました。あなたがウェブ開発者であれば、コンパイラプログラミングについてあまり知りませんでした。あなたがコンパイラプログラマーであれば、集積回路設計についてあまり知りませんでした。そして、もしあなたの仕事が集積回路を設計することであれば、あなたは自分の上の抽象化レベルについてあまり知りませんでした。経験則として、あなたが作業しているレベルの直接下の抽象化レベルと、その上のレベルを理解することでした。それにより、ほとんどの問題をトラブルシューティングできるようになります。 「そして、あなたは個人的にそれに対処しますか?AIがすぐに何かを解決できるとき、それを使用するか、自分で問題を解決するかをどのように決定しますか?もし私が、実質的にAIによって構築されたプロジェクトを持ち、その下に弱い基盤があるという状況にあったとしたら、一歩下がって体系的にその基盤を学びますか?それとも、構築を続け、問題が発生したときに学びますか?あるいは、その両方を組み合わせますか?」 それは2つの根本的に異なる質問です。なぜなら、私はもはやソフトウェア開発において弱い基盤を持っていないからです。たとえ私が普段やっていることからかけ離れたことを扱っていたとしても、すでに知っていることを活用して迅速に対応できます。例えば、RISC-Vアセンブリコードのみで書かれたアプリケーションを保守するように依頼されたと想像してみてください。それは私にとって最も異質なソフトウェア環境です。そのような開発環境に適応するのは難しいでしょうが、プログラミング全般に新しい人にとっては、それほど難しくないでしょう。信じられないかもしれませんが、私はRISC-Vで小さな演習プログラムを書いたことがありますし、RISC-Vにコンパイルする演習コンパイラを作成したこともあります。しかし、もし私がほとんどソフトウェアのバックグラウンドを持っていなかったらどうでしょうか?さて、かつて私はまさにその状況にありました。キャリアを始めたとき、何年もの間、仕事をこなしながら学ぶというナイフの刃の上でバランスをとっていました。1999年から、私はC++でCOMコンポーネントを書いていましたが、自分が何をしているのかあまり理解していませんでした。それでも、どうにかしてそれを機能させ、明白なメモリリークを排除するレベルにまで達しました。しかし、仕組みを理解せずに物事をただ貼り合わせるだけで満足することはありませんでした。そこで、質問で示唆されたように、一歩下がって基礎を体系的に学ぶことにしました。これは1990年代半ばに始まったキャリアにはうまくいきました。今日もうまくいくでしょうか?あまり確信がありません。過去の自信を認識するのに十分なレベルの能力に達することは、