生成AIは「賢さ」を奪うのか?プログラミング学習における考察

前回まで

生成AIとの共生1を見てね。

会話

以下、私の親友(以降友達Rと呼ぶ)との会話(議論?)を通して収穫したものをここで述べるとしよう。
また、彼ならば、別に無断でメッセージを記事にしても文句の1つや2つで許してくれるだろうと断っておく。
匿名だし!!

【実際のDiscordでの会話】

(04/23/25)
(0-0)友達R:
課題4つC++で書いた後、課題5が全部matlabで書き直せなんやけど
Chatgptに書き換えてって言ったら9割型正解のコード出してくれるな

(0-1)私:
これ浅い?
生成AI(LLM)について思ったことをノートに書いて、後から記事にしたもの
https://verazza.dev/posts/30026/

(0-2)友達R:
数学の問題集を買ってやるとき、初見の問題を教科書片手にやって悩んで時間を使うか
すぐ答え見て解き方を学ぶか
っていうかC++で1回組んだっつってんだろ

(0-3)私:
確かに数学の教科書にあるような問に対する回答に限定的な自由度が設定されてるものなら、それもありかもね
C++で書いたものを別の文法で変換して、動けばいい精神なのであれば
ただこの記事では回答に自由度があるケースを想定してる。もっと根本的な、__抽象度__のお話。なんでそのコードが生成AIにとって最適なのか、ほかのコードで代用した方がいいんじゃないかとか、そういうのが__過程__からしか得られないと思うんよね
動けばいいと思うならその限りでない。

(0-4)友達R:
過程からしか得られないね。そんなことないわ
効率の話だよ

(0-5)>>(0-3)私:
これは学習意欲があること前提ね
君のMATLABに対する学習意欲が低いのなら知らない

(0-6)私:
ただ、習熟度が低いために、生成AIに頼ることがあるって人は結構いると思う
ただ最近、生成AIに頼りすぎるのが自分で学習する機会を減らしてることに気づいたから、記事にしたまでよ

(0-7)>>(0-2)友達R:
ここと

(0-8)>>(0-4)友達R:
ここで
2回も主張したのに

(0-9)私:
仕方ない。情報が少ないから、過程から「しか」得られないわけではなく、学習意欲に関係なく、生成AIが生成する結果が、学習の効率化に起因するってことが言いたいのかもしれないと仮定して、考えるか

生成AIから入ると、自分で抽象化する前にそれが手に入ってしまうやんか
例えば、家から1番近いタバコ屋はどこか、またその距離はいくらかって問題は、家外を探しまわって、タバコ屋の場所がわかったら、メジャーを引くでもいいし、俺の歩幅は1mだから、歩数を測ればいいと考えるやつもいるけど、どれもその人にとっては、正解。でもその過程で得た、歩くという動作は一見、絶対的な指標では無いけども、どんな2点とっても歩けば、その人のメモリも駆使して、おおまかな距離推論には役立つ。共通的に、抽象できてるよね。別にタバコ屋じゃなくても、薬屋でもいいんだから。それは過程からしか得られない。そして、その人の価値観で長期的に距離推論には歩くというひとつのアクションが武器(定義)になる。
Googleマップで1番近いタバコ屋は距離200m先右です。これだけでは__
具体例を見るだけで、それが共通の事象に活かせないから、長期的によくない。
何よりも__賢くない。__
毎回絶対的な距離を毎回調べるのは逆に非効率だ!というのが私の主張の具体例

(0-10)私:
学習意欲は置いといて、過程の重要性を述べた上で、生成AIを使うことが必ずしも安全でない、それ即ち、学習頻度の減少につながるし、自分で抽象化することの方がずっと価値があると思うし、逆に、部分から全体、全体から部分へ可逆的な結果を生成AIが100%生成するようなプロンプトを組める、またはそれを自分なりの解釈で無理やりつなげられるのであれば、別に学習に使ってもいいとは思う
私個人の意見としては、効率だけが学習に最も大事なものだとは認識してないのでね

総評

という会話が私が今日大学にいる間に、Discordで繰り広げられていた。そして頭の中では講義よりもこちらを優先的に考えてしまっていた。なんなら、道中、スマホの画面をちらちら見ては、考え、自分なりに回答を出そうとしていた。
それは、私の最近、生成AIいわばLLMについて思うところがあったわけだが、この会話で最も重要なのは何だろう?
それはおそらく、「効率」と「過程」のどちらを取るかということなんじゃないだろうか。
私がこの会話で述べているように、タバコ屋と薬屋の話を見てもらえれば、学習においていえば、「過程」のほうが重要であるといえるのではないだろうか。「効率」は、学習意欲さえあれば、その「過程」、経験を通して、十分に上がるものだと思っているのは間違いだろうか。
一方、生成AIがタバコ屋までの距離が200m先右にあるための必要十分条件(def)いわば手法いわば「なぜそうなるのか」ということを一緒に述べてくれていれば、「過程」として経験しなくとも、そのイメージは湧くと思う。
ただ、これをプログラミングに適用すると、イメージは湧いても、他所でも共通して適用可能な「過程で得る予定であった重要な何か」をすっ飛ばすことは、賢くないのだ
生成AIとの共生1で定義した賢い人は、その重要な何かを情報というまるで海辺の砂浜の中でできるだけ丸い貝殻だけを探すように共通項を見つける。その中の貝殻には、一貫して、尖っていない貝殻はないのだ。プログラミングは創作物だ。表現方法は多彩であるが、書き方は異なるものだし、そこに自分なりの解釈がなければ、自分だけの創作を作る点で、劣っているのだ。「動けばいい。」、私も前まではそのマインドでいた。が、生成AIを使わずして、さあ次は何をしようと考えたときに、「今まで、コードはたくさん書いたのに、あれ、引き出しが少ないな」と感じ、自分の限界を知ってしまうのである。
私はそんな経験から、生成AIがコードを生成しても、自分の中で何か抽象化した「定義」、「ルール」、「意味・解釈」を持つようにしないと、独創的なものは生み出せないな率直に感じた。
最後に、プログラミングを学習してから早4年が経つが、このような生成AIに対するマインドとコードの見方をもってして、私は__賢い人__になれるのだろうか?

あなたにとって、「効率」と「過程」、どちらがより重要かな?