Home Diary 倉庫

2004年7月5日

2004年7月5日

Sたん上京

今日2限でばったり。彼のファンらしく、例のうちあわせかなんかの後一日だけ帰国をおくらせていたらしい。 貴重な話がきけたと思う。Sたんのいうように、100%うのみにせずによく考えなくてはいけないと思う。

ICPCその後2

愛媛大会 選抜チーム一覧

うちはM3__.この大学そもそも参加数が多い。 この順位が高いと思った人へ :: うちのチームメンバー上二人のおかげです。 この順位がダメダメと思った人へ :: 3問でとまったのは俺のせいです。ごめんなさい。

とあるこの大学の優秀なチームの人が例のboost本を書いた人だとかなんとか。

原理主義者じゃねー

ふたつ目の話は、コンパイラは道具ではないということ(1) 分散システムとかオブジェクト指向とか 統計ソフトよりも基礎分析力を習得しておこう

以下ぴゅあな大学1年生の駄文。初心って大切だから。あーかいぶしないと。やっぱ大人じゃ科学はできねーよな。

注意書き。だったらjava使うなとか、文句いうまえに自分でやれとか、そういった話は的外れなので注意。単なる駄文。

継承ってなんだろう。オブジェクト指向の醍醐味は、カプセル化、ポリモーフィズム、動的結合、とかいわれるが、継承によってポリモーフィズムと動的結合がサポートされる。C++ではvtableによって実装される。 中身をいじれない既存のクラスに機能を追加するために継承をするのってどうなんだろう。アップキャストすることはないのに継承を使う。アップキャストを禁止する方法もない。きれいな設計だとは思えない。

たとえプログラムが動いたとしても、変数名がまちがってたらそれはプログラムコードの意味エラーであるのと同じように、継承が単なる記述の省略として用いられていたら、そのコード自体に正しい意味が含まれているとは言えない。(for(;;)でなくwhile(true)をつかえ、といったレベルの話ではない。) 何にどんな意味をこめるかなんて、それこそ恣意的な話だが、少なくとも一貫性は必要。つーか彼のコードは人にみせる用途なのに微妙すぎ(これがいいたかっただけ)

まあ適当につくられた教材に文句つけても仕方ない。

本題。この設計はきたない、と言うと、「動くならいいじゃん」と言う人がいる。ソフトウェアなんて所詮手段にすぎないと。数学もコンパイラも道具だから中身はブラックボックスでOKと。

たしかにソフトウェアユーザー、もしくは現場のプログラマにとってはそうかもしれない。でも学生としては、ある言語を勉強する以上はそれぞれの構文は単なる特定の機械語出力命令としてではなく、どういった"意味"を持たされているのか、を真剣に考えることが重要だと思う。 正確にはどういった機能があるかを把握し、どういった意味を自分が持たせるべきか。 「動けばいい」だけでは言語を理解したことにはならないし、プログラミングを勉強したことにはならない。

そもそもJavaってのはそういう思想のはいった言語らしいね。良く言えば現実解。ここはお得意のあきらめポイントなんだろうけどさ。 ほんとjavaって学生のつかう言語としては魅力に欠けるな。

この種の思考停止は他にもみられる。 1+1はなぜ2になるのか、ma=Fはなぜma=Fになるのか、といった素朴な疑問。 大人になってスレると「そうしたらうまく実験を説明できるから。」とかなんとかいって、その解答が完全だと信じてたりする。 そういった説明は初学者の導入のためにあるだけで、法則に意味がないことを意味しない。 彼等の頭の中では、エネルギーや保存量、エントロピーなどは、そう定義したらうまくいく概念的な量で、意味する物はない、とつながっていき、誰かさんが考えた偉大な方程式と、それを地道に計算する超高性能計算機で世界が構成されている。 (コーンの中でボールがどうまわるか、コンピュータに計算させるのは簡単だが、その結果がでたところで、どう考えれば世界が見えるようになるかはわからない。つまり、自分の目で世界を見れない。人は機械にすらわかるあたりまえのことが見えてないから。) まあこれは某田崎さんの授業でくりかえし強調されてたりするが、この点はその通りだと思う。 生物やってるんじゃないんだから。

筆算のできない小学生が電卓で計算できても、四則演算を理解したことにはならんのです。意味もわかってない。 そんなのがその結果を利用して微積の計算をしようとしても無理。(早急な一般化とかいうな。)

Javaを理解するにはjava compilar,vm,runtime,gc,さらにそれを記述するcとcompiler、アーキテクチャ、CPUとそれを構成する物理法則...もちろんすべてを一人で理解できるわけじゃない。 だが一つ下のレイヤーを理解すれば、上の層をより理解する効率のよい手助けになるのも確かだし、兄弟層を見ることで普遍的な物もみえてくる。

あんたら学生なんだし、もうちょっと元気があってもいんじゃない?

とかいってる自分だって数学とかまじめにやってるわけじゃないけど...