2015年11月。当時、東京大学理学部情報科学科3年のM田先生との話です。多分マジで話し出したら異星人レベルの頭脳の持ち主ですが、授業のときは、地球人である生徒さんそれぞれにわかりやすいように、一生懸命熱く丁寧に説明しています。時には地面に這いつくばい、時には穴を掘って地下に潜るような姿勢で、私のこの下手なたとえが皆さんに通じるでしょうか…

O「セサミ来てどうですか?」

M「前やってた塾(※某大手有名塾)は、すごくきっちりしていて」

O「私すごくきっちりしていないし…」

M「いや、前いた塾は、授業前に早くつかなきゃいけないし、毎回親御さんに長々と報告書書かなきゃいけなくて、そういうところがすごくきっちりしていて面倒くさかったのだけど、逆に生徒はだいたい皆やる気なくて」

O「やる気ない人相手にしてると疲れるよね。ここの生徒はどう? まぁ色々だけど」

M「やる気がある人が多いですよ。普通勉強にやる気がある人ってあまりいないし。おかしいほどやる気のある人もいますよね。小学生とか面白いですね」

O「A君とかすごいよね。あの子、ある問題が2時間かけても解けなくて、私がヒント言おうとすると、『ダメ、言わないで、もうちょっと考えればわかるから言わないで』とか叫ぶし(※普通はもっとたくさん解いてますよ)。

 うまい方法が思いつかなくて、式を300以上書き連ねていて、私がもう無理だからやめろって言ってもやめないし。年上の優秀な子達と同じ問題解いてて、上の子達があきらめても、A君は一人で休憩時間に入っても延々と解き続けていたし」

M「こいつは将来、研究の道に進むんだろうなぁって思いますね」

O「A君、M田先生に教わって、すごい活き活きして。教えてて面白いでしょ」

M「いや、A君自身が面白い。もう、俺よりずっと集中してるなって思って」

O「あの子はスペシャル。君のような人が将来世の中を変えていくのだから、立派な研究者になってください、お願いします、って、A君が10歳くらいの時から頼んでるもん。正直、あの子よりも優秀な人っていると思うけど」

M「研究者や教授になる人って、すっごく頭が切れる人よりも、延々と集中してやり続けられる人が向いてるんだと思いますよ。あの子はきっと立派な研究者になりますよ」

O「ではここで話題を変えます。生徒さんの参考のために。算数オリンピックはどうやって勉強してました?」

M「いや、もう昔で何をやったか覚えていない…。でも算数は得意でしたよ」

O「数学オリンピックはどうやって勉強してました?」

M「ひたすら過去問を解いていました。たまに友達と一緒に解いたりとか」

O「できない問題があったときは?」

M「できない問題はないです、時間をかければ全部解ける」

O「大学入試は?」

M「高校3年からS台予備校に行って、難しい問題をたくさん解きました。あと、「大学への数学」の問題解いて、送ったりしてました。なかなか100点が取れなくて」

O「ほ~。では、いま大学で勉強していることを教えてください」

M「僕はプログラムの意味論ということをやってて。プログラムを物理的なレベルでみると1と0の列ですが、その1と0の列がどういう意味をもっているかを、数学的に厳密に定義するのが意味論です。

オペレーションシステム、つまり、OSと呼ばれるものは、色々な定義があるのですが、一番の役目はハードウェアという物理的なものを、機械のプログラムの言葉で媒介することです。色々な製品を作って、OSが正しく動くのか、その証拠は?と言われても、「僕が保証します」と言っても何の保証にもならないですよね。それを数学的に証明する、ということを研究しています」

O「へぇ~、すごい~そんなのがあるんだ!それって数式で証明するの?」

M「まぁそういうことになりますね」

O「情報と数学の両方をやっている感じなのね。その先は大学院へ行くの?」

M「大学院は情報科ではなくて数学科へ行きたいと思っています。その先どうなるかとか、5年先のことは全く考えていません。今頑張れる限り頑張るだけです」

O「意味論以外に、こういったことを今勉強したいとかあります?」

M「情報の分野だと、色々興味あるんですが、ちょうど今は、Linux(リナックス)というOSがあって、25年前に、リーナスという、当時フィンランドの大学生だった方が作って、オープンソースで、つまり無料で公開されているので、それを見ながらLinuxについて知見を深めたいなぁと思っていて」

O「Linuxがオープンソースということは、逆に言うと、他のWindowsとかMacとかの仕組みは公開されていないの?」

M「もちろん、それらは製品なので」

O「企業秘密みたいな感じで」

M「そうですね」

O「じゃあ、そのリーナスっていう人、すごいね」

M「すごいですよね。あと今考えているのは、プログラミングでどう計算するのが一番効率が良いのか、という計算理論に興味があります。例えば、フィボナッチ数列てありますよね。この第n項目の数はいくつかを求めるために、色々な方法でプログラミングできます。一つには、1項目から順に計算していく方法です。1+1=2,1+2=3,2+3=5,3+5=8という風に。これは実は早くできるんですね」

O「1万番目の数は?」

M「それもすぐに求まります。だいたい今のレベルだと、10億くらいの命令を処理するのに1秒しかかからないので」

O「10億が1秒! ひぇ~~、そんな早いんだ、知らなあったぁ!」

M「で、フィボナッチ数列の別の求め方として、再帰という方法がありまして「前の前の項+前の項=今の項」という関係性だけプログラミングしておくと、計算するのに恐ろしく時間がかかるのです。100項目の数を求めようとすると、だいたい2の100乗の計算が必要で、2の100乗というとものすごく大きな数なのですね。この方法で求めようとすると、だいたい30項くらいが限界で、それを以上になると、もうメモリーが足りなくなってしまうのです。

こういう例からもわかるように、うまい計算方法を求める必要があるのですね。計算理論によって、なるべく効率の良い計算方法を導く方法を考えていきたいです」

O「へ~面白いですね。では最後に、難しい問題にチャレンジしている生徒さんたちにアドバイスをお願いします」

M「1つでも多く問題を解いてほしいです。特にオリンピック問題とかは、典型的な受験問題とかと違って、いろんな問題をあたっていくと、解けない解けないという感覚になるのですが、それでもがんばって解いて解いて、ということを繰り返していくと、自分で考える力というのが鍛えられてきて、そのうち段々と、自分で考えて解ける問題が増えていくんですね」

O「わかりました。ありがとうございます!」

Contact Us

Tel: 042-726-2625 / 080-7049-1025

Email: sesami248@gmail.com

Address

194-0013

東京都町田市原町田​6-29-3-402