(情報系の)大学の学生はとても貴重な経験をしていることに気づかず、情報系でないプログラマー(僕)は情報系の学問的知識を、いつか求めるということ

どもです、nobkzです。昔からずっと考えていることを、うだうだ書きます。

Prologなんて何でやるんだ!!!」

とある情報系の学生のつぶやきでした。僕は衝撃を受けました。

情報系の人間じゃない僕

ぼくは、福岡のIT系の勉強会に足をよく運び、また主催として開催したりしています。Technical RockstarsにCTOとして就任し、FLOWer言語をTechnical Rockstarsで開発しています。そしていまでは近日中に公開予定のBaaSを開発中であって、LispHaskellPrologなどを書いてたりしています。一日中プログラミングの事を考えて生活しています。

そのせいか、他人にはどうも僕が完全に情報系の人間の様に見られるようです。そして、大学では情報系の学部なんだろうと、小さいころからやって来たのだろうと。

しかし、実際は違うのです。僕は九州大学芸術工学部音響設計学科在籍中で、そこは音を中心とした学部で、プログラミングとは関係の無いところでした。(とは言ってもC言語の授業はありましたが。あと、MATLABですかね。)

そのことを言うと驚かれるようで、「入る学部間違っているよ!!!」とか言われます(笑)。

プログラミングにハマったのは、僕は、大学入学してすぐに、たまたまiphoneで、iOSの開発をしようと思って、それで実際にプログラミングを初めたら、案外楽しくて、それ以来Obj-CからSmalltalkCommon LispProlog, Haskell, Erlangといろんな言語に触れそして、最近は「そもそもプログラミングの本質」ってなんだろう?とか思うようになりました。

情報系でないが故のコンピュータサイエンスへの憧れ

さて、情報系の人間じゃない僕なんですけど、それ故に、僕は情報系学部で無いが故に、情報系学部の人間に或る種の劣等感を感じていました。 いままで、ずっと僕は情報系で無いが故に、コンピュータ(コンピュータ)とはそもそもどういうモノか?、プログラミングとは本来なにをする為のモノなのか? など、情報系の人間なら当然やっている本質的なところが、足りてない様に思えてなりませんでした。 つまり、コンピュータサイエンスに付いて深い知識の足りなさを感じていました。

また、情報系の学部では、そういう計算機に関する核心的な内容について学習できる環境だと思っていました。情報系の人間と話すとき、PrologScheme、SMLを学習するという話を聞いて、羨ましくてなりませんでした。そして、情報系の先生方とはたまに、お会いしたりするのですが、実際に凄い人たちばかりで、その学習する環境に憧れというものを感じていました。

さて、そういうモノだと思っていましたから、等の学生はその様な素晴しくて、キラキラしてて、さぞかしプログラミングについての知識とか素晴しいものだろうな、みんなバリバリプログラミングしててさぞかし、凄いハッカーに違いないとか思ってしまうのも無理はありませんでした。

魅力的な教育と、学生の意識の乖離

さて、実際に情報系の学生と関わりを持ち、話しを聞いて行くうち、どうやら違うということが分かってきました。僕の「情報系学科人間皆ハッカーというのは、幻想でらしいのです。現実では、大半は普通の大学生、極一部が凄くデキルということらしいのです。 僕はまずそれに驚いていました。

そして、授業の態度も、やっぱり他の一般の学部と変わらない状況らしいのです。つまり、授業に全く魅力を感じず、つまらないと思っているらしい人も多く、Prologの授業という貴重な体験をさせられることを、「どうしてPrologなんぞ古く役に立たない言語を学ばせるのか?」愚痴を言うのです。そして、RubyだのJavaだの、実際に実用されている言語で授業してよ、とか言うのです。

けれども、今、考えてみれば、そら情報系であれど、大学生は大学生で、それは当然のことでした。「大半は普通の大学生」なのです。

ただ、僕はあれだけ価値のあることなのに、どうしてそんなに授業に不満を言うのか、なかなか理解できなかったのです。
それで、「僕がとても素晴しい授業テーマだと思うよ」とか言うと、「君はそうかもしれないけど、僕にとってつまらない」となって、なんというか、おじいちゃんがゴハンを残す子供に対して「食べたくても食べれない人もいるんだよ」と似たような事言っているなとか思いました。そして子供は、「そんなこと知りません。僕は食べたくないのです」と言うのです。


最近、それはとても、その原因が理解できるようになってきたのです。つまり結局のところ、情報系の学生は、プログラミングの実践が足りてないのです。プログラミングの根底になる哲学の意義を感じるまで、プログラミングの実践が足りてないのです。

実用的知識と、抽象的理論

学術的な知識の大半は、抽象的な理論です。ほとんどの人は、抽象的な理論は全く現実の実用に耐えられない知識であるように見えるようです。何も専門性の持たない学生がいきなり理論的ところを押しつけられても、つまらないと不満を言うだけです。なぜなら、その理論の意義を学生は知り得ないのです。

実践を繰り返し、何回も、とある既視感、デジャブに教われて初めて理論的なものに感動する土壌が出来るのです。 その実践、既視感が積み重なって初めて、抽象の意義が出てくるのです。

しかし、学生はどうやら、実用的な知識や、最新の技術に魅力を感じるようです。つまり、現実の仕事で使われる言語を学びたいと思うのです。それは、実用的な言語を学び、Railsなどのフレームワークを学び、ゲームや、アプリ、webサービスなど、現実に即して便利で、楽しいものを作りたい、とか、直にでも仕事に役立つことのできるスキルに魅力を感じるのです。

流行の技術と知識の楽しさと儚さ

流行を追うのは楽しいです。常に新鮮で新しい発想が生れ、革新が置きているところに、身を置き、どんどん、スゴイコトができるようになるのです。どんどん、便利になって楽しくなります。

しかしそうした、技術やスキルは数年後廃れることが多いのがこの業界だと思います。しかも、最近はその流れがドンドン早くなって、1年前に技術的潮流が出てきたけど、もう古いなんてことはザラにあります。

そして、僕は何時までこんなこと続けるのか?という気分になってきています。そして、僕は何時までこんな技術を追っていけのか?という気持ちにもなります。そして、やっていくうちに、以前出てきた技術的潮流が別の形となって、繰り返し出てくることも理解できるようになって、だんだんと新鮮さもなくなって行きます。

革新のために、理論に立ち帰る

そうして、僕自身が、技術を追う日々に飽きてきたのです。

そして僕は、ふと、技術を追うのではなく、技術を、革新を起こす方に行くべきではないか?と思うようになったのです。そうして、その技術の先頭集団は何を思って、その技術を作ったんだろう? そして、どうやってその革新が出てきたのだろう?と思うようになりました。

そうすると、技術の一番のパイオニアはアカデミックな場所にあると思いました。今、流行っているのは、関数型プログラミングですが、アカデミックなところでは昔からありました。

新しい技術革新、イノベーションというのは抽象的な理論が源泉なんじゃないかと思います。技術革新は、いまある技術を陳腐化するのに、その根底からひっくり返すようなものだと思います。その、根本を知るためにまず、抽象的な理論が必要なんだろうと思います。

大学の教育について思うこと。

大学の教育について書くつもりが、考えていることが一杯あって、全然違う方向になってしまった(笑)。

さて、前にも言っていたように、情報系の学生はプログラミングの実践が授業がつまらないというのは、実践が足りていないと思います。最近のコードを飽きるまで書きましょう(笑)。そして、古い知識ってスゲーと思えるようになれば良いんじゃないですかね? (上から目線ですいません。)そして、案外やっていることって貴重で重要なことなんですよ。

そして、大学は抽象的なことを学生にまずやらせすぎだと思います。というか、学生にイキナリ自分の最新のコアなこと教えすぎ(笑)だと思います。自分達はその真髄に気づいていても、ほとんどの学生はいきなりそれをぶつけられても...と思いまう。少くともイキナリ学生にSchemeやらせるのはどうかなぁ(笑)

まとめ

うだうだ、最近思っていることを整理もせずに書きますた。こんな、駄文を読んでくれた人は、キチンとしてなくてすいませんでした。