私たちは、コンピュータを逆から学んでいる

ずっと引っかかっていたことがあります。

コンピュータは、下から順に作られてきました。0と1があって、回路ができて、OSができて、その上で言語が動いて、ようやくアプリやWebサービスが乗っかっている。

でも今、学ぶ人はその逆から入ります。

まずHTMLを書く。Pythonのチュートリアルをやる。動くものを作る。仕組みは、後から知ろうとする。

作られた順番と、学ぶ順番が、逆になっている。

これってどうなんだろう、と何年も思っていました。

私たちはコンピュータを逆から学んでいる

積み上げてきた人と、上から入る人

技術が生まれてきた順番は、こうです。

中身
1 電気・論理回路(0と1)
2 CPUやメモリなどの構造
3 アセンブリ、Cのような低レイヤ言語
4 OS(Unix、Windows など)
5 PythonやJavaのような高級言語
6 アプリ・Webサービス・クラウド・AI

一段ずつ、下から積み上げられてきました。

ところが今の学習は、6から始まります。そして5、4と、下りていく人もいれば、下りないまま終わる人もいます。

私はこれを、地層のようなものだと思っています。上を歩いているだけなら、下に何が埋まっているかは見えません。

「怖くない」から始めるのは正しい

先に言っておくと、上から入ること自体は悪くありません。

むしろ教える側としては、そうせざるを得ません。

0と1から始めたら、ほとんどの人が三ヶ月ももちません。何も動かないまま、意味の分からない話が続くからです。まず動くものを作る。楽しい。だから続く。この順番には合理性があります。

私が教えている40代から60代の方も、いきなり「メモリとは」から入ったら、たぶん二回目に来ません。

だから上から入るのは正解です。

問題は、そこで止まったときに起きます。

エラーが出た瞬間に、下から呼ばれる

上から入った人がつまずくのは、たいてい「動かないとき」です。

手順どおりにやったのに動かない。エラーメッセージの意味が分からない。検索しても、出てくる答えが自分の状況と微妙に違う。

このとき何が起きているかというと、普段は隠れている下の層が、顔を出しているんです。

  • パーミッションが違う
  • パスが通っていない
  • ポートが埋まっている
  • 文字コードが合っていない

どれも、上の層だけ見ていては永遠に分かりません。

これには名前がついていました

調べていて驚いたのですが、この現象には20年以上前から名前がついていました。

「漏れのある抽象化の法則」といいます。2002年に Joel Spolsky という人が書いたものです。

内容はこうです。

どんな抽象化も、程度の差はあれ、必ず漏れる

抽象化というのは「難しいことを隠して、簡単に使えるようにする」ことです。フレームワークもクラウドも、全部これです。

でも隠したはずのものが、時々こぼれてくる。そのとき使う側は、隠されていたはずの中身を知らないと対処できません。

そして、この法則にはこう続きます。

抽象化は、作業の時間は節約してくれる。でも、学習の時間は節約してくれない。

私が何年もモヤモヤしていたことが、この一行に収まっていました。

でも「漏れる」だと、少し違う気がしています

ひとつだけ、引っかかったことがあります。

「漏れる」という言葉です。

漏れると聞くと、水道管やバケツを思い浮かべませんか。どこかが壊れていて、そこから水が出てきている。そういう感じがします。

でも実際に起きていることは、たぶん違います。

私はこれを、地層だと思うようになりました。

私たちは地表に立っている

パソコンを、地面だと考えてみてください。

私たちは地表で作業しています。ファイルを開いたり、アプリを動かしたり。足元は固くて、安定しています。

でもその下には、何層も積み重なっています。土があって、岩盤があって、もっと下にはマントルがあって、中心には熱がある。普段は見えません。見えないまま、私たちは地表で暮らしています。

そして時々、下から噴き出してきます。

  • 地震
  • 温泉
  • 火山

ここが大事なところです。これらは、地球が壊れているから起きているのではありません。

正常に活動しているからこそ、噴き出してくる。地下が生きている証拠です。

エラーは「壊れた」ではなく「下から呼ばれた」

エラーも、これと同じだと思っています。

パーミッションが違う。パスが通っていない。文字コードが合っていない。

どれも、パソコンが壊れたから出ているのではありません。普段は地表からは見えない下の層が、そこにあると知らせてきているだけです。

温泉が湧くのと同じです。異常ではなく、下が生きている証拠。

初心者の方がエラーで固まってしまうのは、たいてい「自分が何か壊してしまった」と思うからです。手が止まって、それ以上さわれなくなる。

でも壊れていません。呼ばれているだけです。

私はこの言い換えが、けっこう効くと思っています。

「壊れた」から「下から呼ばれた」へ。

これだけで、エラーが出たときに手が止まらなくなります。

エラーは壊れたのではなく下から呼ばれたもの

サーバーが見えなくなった話

もうひとつ、私が引っかかっていたことがあります。

WindowsやMacでサーバーの勉強をするのは、ちょっと無理があるんじゃないか、ということです。

MAMPやXAMPPを入れれば、たしかにサーバーは動きます。でもあれは、サーバーを隠すための道具です。ボタンひとつで立ち上がって、ボタンひとつで止まる。

便利です。でもそれを使っている限り、サーバーというものには一生近づけません。

生徒さんで、仮想環境を怖がって、パソコンに直接Linuxを入れた方がいました。周りから見れば遠回りです。でも私は、あれは正解だったと思っています。

隠されていないものを触ったからです。

AIで、地表はさらに高くなった

ここまで書いてきて、これは昔話ではないと気づきました。

今、AIがまさに同じことをしています。

コードが書けなくても、動くものができる。仕組みが分からなくても、結果が出る。これまでで最も強力な「抽象化」です。

地層でいえば、私たちの立っている地表が、また一段高くなったということです。下の層は増えたのに、見える範囲は変わっていません。むしろ狭くなりました。

しゃべるだけで、いろんなものが手に入る。とても良い時代だと思います。

ただ、ここからが本題です。

壊れるより先に、性能が出せなくなる

これまでの話は「エラーが出たとき困る」という内容でした。

でもAIの場合、もっと手前に問題が来ます。

壊れる前に、引き出せない。

たとえば、こういうことが起きます。

  • どこまで頼めるのか分からないので、小さいことしか頼まない
  • 出てきたものが良いのか悪いのか判断できないので、そのまま使う
  • 少し違う結果が欲しいのに、何をどう言い直せばいいか分からない
  • 「できません」と言われたとき、本当にできないのか、言い方の問題なのかが分からない

どれもエラーではありません。普通に動いています。

動いているのに、持っている力の一部しか使えていない。これが一番もったいない状態です。

「使える」と「引き出せる」は別です

同じAIを使っていても、人によって出てくるものがまるで違います。

その差は、たいてい下に何があるかを知っているかどうかから来ています。

ファイルというものが分かっていれば、ファイルを扱う頼み方ができます。サーバーがどういうものか知っていれば、その話ができます。逆に何も知らなければ、聞ける範囲がそのまま狭くなります。

知らないことは、頼めません。

AIは何でも答えてくれますが、こちらが問いを持っていないと何も始まりません。そして問いは、下に何があるか知らないと出てきません。

だから、これから差が開きます

上から入るのは正しい、と書きました。今もそう思っています。

ただAIの時代は、上と下の距離がこれまでになく離れています。しゃべるだけで結果が出るので、下を見る理由が減ったからです。

だから、こうなると思っています。

同じ道具を持っていても、引き出せる量に差がつく。

エラーで止まる人と止まらない人、という話ではありません。普通に動いているのに、半分も使えていない人が増えていくということです。

そしてそれは、本人からは見えません。エラーが出ないからです。

そのとき効くのは、AIの使い方ではありません。下に何があるかを知っているかどうかです。

全部を知る必要はありません

誤解のないように書いておきます。

全員がアセンブラを書けるようになる必要はありません。0と1から勉強し直す必要もありません。私だってできません。

必要なのは、たったひとつです。

今触っているものの下に、何かがあると知っていること。

それだけで、二つのことが変わります。

ひとつは、エラーが出たときの態度です。「壊れた」ではなく「どの層で起きているんだろう」と考えられるようになる。

もうひとつは、頼み方です。下に何があるか知っていれば、聞けることが増える。問いの範囲が広がります。

この差は、思っているより大きいです。

順番は逆でいい

結論としては、こうです。

上から入るのは、正しい。楽しいし、続くし、結果が出る。

ただ、そこが全部だと思わないこと。下には五つの層が埋まっていて、何かあれば必ず顔を出してきます。

私は生徒さんに、無理に下まで下りてもらおうとは思っていません。でも「この下に何かあるらしい」ということだけは、折に触れて言うようにしています。

興味が湧いたときに、下りていける人になってほしいからです。

メモ
エラーが出たとき「なぜ動かないか分からない」と感じたら
壊れたのではなく 下から呼ばれているだけです
温泉が湧いたようなもので 地下が生きている証拠です
「どこの層から来てるんだろう」とだけ考えてみてください
それが下りていく入口になります


参考

ブログ

BLOG

PAGE TOP