■
[rakuten:book:10741013:detail]
第6章 式と文
半端な最適化は諸悪の根源である。 D.Knuth
一方で我々は効率を無視できない。 Jim Bentley
このKnuthという人は、コンピュータ・サイエンスの世界の超大物みたいです。
Donald Ervin Knuth (pronounced /kəˈnuːθ/[1]) (born January 10, 1938) is a renowned computer scientist and Professor Emeritus of the Art of Computer Programming[2] at Stanford University.
Author of the seminal multi-volume work The Art of Computer Programming ("TAOCP"),[3] Knuth has been called the "father" of the analysis of algorithms, contributing to the development of, and systematizing formal mathematical techniques for, the rigorous analysis of the computational complexity of algorithms, and in the process popularizing asymptotic notation.
In addition to fundamental contributions in several branches of theoretical computer science, Knuth is the creator of the TeX computer typesetting system, the related METAFONT font definition language and rendering system, and the Computer Modern family of typefaces.
A prolific writer and scholar,[4] Knuth created the WEB/CWEB computer programming systems designed to encourage and facilitate literate programming, and designed the MMIX instruction set architecture.Knuth was born in Milwaukee, Wisconsin, where his father owned a small printing business and taught bookkeeping at Milwaukee Lutheran High School, which he attended. He was an excellent student, earning achievement awards. He applied his intelligence in unconventional ways, winning a contest when he was in eighth grade by finding over 4,500 words that could be formed from the letters in "Ziegler's Giant Bar." This won him a television set for his school and a candy bar for everyone in his class.[5]
Knuth had a difficult time choosing physics over music as his major at Case Institute of Technology (now part of Case Western Reserve University). He also joined Theta Chi Fraternity. He then switched from physics to mathematics, and in 1960 he received his bachelor of science degree, simultaneously receiving his master of science degree by a special award of the faculty who considered his work outstanding. At Case, he managed the basketball team and applied his talents by constructing a formula for the value of each player. This novel approach was covered by Newsweek and by Walter Cronkite on the CBS television network.[6]
While doing graduate studies, Knuth worked as a consultant, writing compilers for different computers. In 1963, he earned a Ph.D. in mathematics (advisor: Marshall Hall) from the California Institute of Technology, where he became a professor and began work on The Art of Computer Programming, originally planned to be a single book, and then planned as a six, and then seven-volume series. In 1968, he published the first volume. That same year, he joined the faculty of Stanford University, having turned down a job offer from the National Security Agency (NSA).
In 1971, Knuth was the recipient of the first ACM Grace Murray Hopper Award. He has received various other awards including the Turing Award, the National Medal of Science, the John von Neumann Medal and the Kyoto Prize. After producing the third volume of his series in 1976, he expressed such frustration with the nascent state of the then newly developed electronic publishing tools (esp. those which provided input to phototypesetters) that he took time out to work on typesetting and created the TeX and METAFONT tools.
物理屋さん、数学屋さん、プログラマ屋さんは、おとなり同士ということがよくわかる、経歴だなと思う。
Jim Bentley (born 11 June 1976 in Liverpool) is an English footballer, currently playing for League Two club Morecambe.
Bentley, who debuted for Telford United in 1997, moved to Morecambe FC in 2002 and is the current captain.[1]
目次
6-1 電卓プログラム
6-1-1 解析器
6-1-2 入力関数
6-1-3 低水準入力
6-1-4 エラー処理
6-1-5 ドライバ
6-1-6 ヘッダ
6-1-7 コマンド行引数
6-1-8 スタイルについてのコメント
ここの部分は、実際に、簡単でもいいからひとつのソフトウェアを企画して、動くところまでもっていった経験がないと理解するのは
難しいかもしれない。すくなくとも、私は、この電卓が動くようになるプログラムのソースコードをスラスラと読めるようにはなりませんでした。
他の教科書でここまで、うまいことよめないソースコードのあったことはない。
たとえば、小林先生のテキストなんかで、ここまで、読みづらいことはない。
電卓のソースコードをわかりやすく解説したC++のテキストがほしいと思った。コンピュータに任せられる仕事でさいたるものは、「計算」であろうから、
ここの箇所はそういう意味でも「教育的」価値があるのだと思う。星の数ほどあるC++のテキストの中でも、
こういうものを、教材にしていくセンスが、この本をある一定の価値のあるものにしているのかな。
6-2 演算子の概要
6-2-1 演算結果の型
6-2-2 評価の順序
6-2-3 演算子の優先順位
6-2-4 ビット単位の論理演算
6-2-5 インクリメントとデクリメント
6-2-6 自由記憶領域の確保
6-2-7 明示的な型変換
6-2-8 コンストラクタ
ここも、網羅的な場所だから読むのにそんなに苦しまないとは思うけど。
やはり、ところどころ、?な部分はあります。
6-3 文の概要
6-3-1 文としての宣言
6-3-2 選択文
6-3-3 反復文
6-3-4 goto
ある書籍が、なんらかの学習の手段として、選ばれたとする。
その書籍が読む前にはわからかったことが、書籍を通読して、しっかり復習すると、わかるようになる。
こういう幸せなエンディングを迎えることが出来たら、ある書籍を購入または借りて読むことには
一定の価値があったと評価していいと思う。
このテキストを読んでいると、果たして、この本はそういう意味で「買い」になっているのだろうかと思うことがある。
いかんせん、C++を設計した人が書いてしまった本なので、プログラマのサイドからはやはりこのテキストを無碍にすることは
できない。
しかし、この筆者が、一体、どのレベルのプログラマを想定して、このテキストの執筆をしているのかは大変興味がある。
さる高名な進学塾にて、算数の授業が、YouTubeのように動画で視聴できるようになった。
中学受験の算数なので、そんなに化け物のような問題が扱われることはないにせよ、それなりに、複雑な解法過程というものを
理解しなければならない。
しかし、集団授業の算数の学習スタイルなどというものは、数十年もの間、そうそう変わるものでなない。
ただ、黒板があり。先生が、いて、先生の熱意ある講義を、生徒がほうほうと聞くということになる。
先生は、先生で、生徒に対して、すこしでも問題の解法をしっかり理解して、きたる受験本番の試験でいいスコアをとってほしいであろうから、
「ここは、こういう解法ですが、わかりますか?」
という、質問のようなものを、生徒側になげかける。
どうやら、この塾の最上位のクラスだったらしく、
「そうやそうや」とか、
「ここと、ここが相似や!」
とか、打てば響くように、生徒の返答が帰ってくる。
そして、先生のチョークは光速で黒板を数式でいっぱいにしていく。
場合にもよるが、ここで、「わかったわかった」といっている生徒さんがたの何割には、
家庭教師や、個別指導の先生が、サポートに入っているのかもしれない。
事前に、1対1の懇切丁寧な指導をうけているからこそ、
教室という「晴れの舞台」にて、まともに授業に参加しているような「外観」を整えることができる。
はたして、この進学塾の教室で進行していることは、「教育」「知識拡大」の一場面と評価していいのかどうかは、
おそらく、人によって異なる。
私は、「確認」の場になっているのではないかと思う。
もちろん、いろいろな生徒さんがいるだろうから、このテンポしっかり自学自習できている子もいるのだろうけど。
なぜ、私は、こんなエピソードを書いたのかというと、このことが、いま読解しているテキストの筆者にも、なんらかの示唆を与えているような
気がしてならないからだ。
私は、この筆者のテキストで理解できる部分というものを、筆者のテキストによって「理解」できるようになったといえるのかどうかが、
とても、疑問に思えてきた。
while文の使い方にせよ、if文の使い方にせよ、論理演算子にせよ、なんでもいいのだが、その箇所にテキストが差し掛かったとき、私は、
「あ、この構文のことは、小林先生の本とか、林先生の本とかに書いてあったな」
と、違うテキストで、すでに「既習」になっていることを、喜んでいる。
そして、こういった「入門レベル」のテキストから外れたり、いろいろな経験が前提になっているとおもわれる記述は、
やはり、始末におえないものとして、コテンパンにされているように思う。
電卓のプログラムもわかる人には、わかるのだろうが、ちょっとまだきつい。
6-4 コメントとインデント
6-5 アドバイス
6-6 練習問題
追記 プログラミングを、言論空間にて活用する1事例
http://blog.goo.ne.jp/ikedanobuo/e/957b5975c4499c72bd8834ce81f75f34
ソースコードを書いていくプログラミングの作業と、霞ヶ関の官僚が法案を作成する作業とのアナロジーは前から指摘されているが。
最近、うまいこといった表現が、飛び出した。
予想通りというか、この人からでした。
このように専門家を軽視する自前主義は、霞ヶ関とよく似ている。官僚が審議会の委員に選ぶのは、自分たちのいうことをきく御用学者だけで、結論も役所が用意する。霞ヶ関が日本最高のシンクタンクだと信じているからだ。民主党内でも、自前のシンクタンクをつくろうという話があったが、小沢一郎氏は「政権を取ったら霞ヶ関を使えばよい」として自前主義を続けてきた。
たしかに個々の官僚は優秀だし、清潔だ。しかし組織になると、自己保存本能が強く働き、権限や予算を拡大した者が出世する。それをチェックしようとしても、政策が法律によってスパゲティ状にコード化され、省庁間で合意形成されているため、その内部構造を理解しないと手がつけられない。結果的に法案化作業はブラックボックスになり、自民党の政治家はペラ1枚だけみてOKを出し、官僚は実装の段階で省益を最大化するようにコーディングしてきた。英米型のシステムでは議員の政策を議会事務局が法案化するが、日本では法案化が官僚機構に丸投げされているため、立法機能が実質的に行政と垂直統合され、政策の中身まで官僚に囲い込まれているのだ。
これはゼネコン構造とよく似ている。きのうネットラジオ中継で、ITゼネコン出身の田端信太郎氏が「設計段階から丸投げされたら、自社のシステムでないと動かないように設計するのは当たり前だ」といっていた(*)。システムの設計を独自規格で囲い込み、アプリケーションも同じ会社でないと開発できないようにして末永くもうけるのが優秀な営業だ。この構造を変えないまま政治家を霞ヶ関に100人送り込んでも、今の副大臣や政務官のように「お客さん」になるだけである。
ITゼネコンが役所を食い物にするのは、官僚が専門知識をもっていないからだ。同じように官僚が政治家を食い物にしてきたのも、政治家が地元利益にしか関心のない素人だからである。「政治主導」を実現するには、自前主義を捨てて国家戦略局に外部の専門家を入れ、各省庁の法令担当を戦略局に集めて議会事務局のような機能をもたせる必要がある。民主党には「日本版ケネディスクール」をつくって自前の政策スタッフを養成しようという構想もあるようだが、そこでも法案化の訓練が重要だ。このようにして立法と行政を水平分離することが、官僚主導を打破する第一歩である。
でまあ、ここで問題になっているスキルは単なる「国語」です。
霞ヶ関であれば通用するスキルですが、外にいくと、たいしたことないのではないかと思ってしまいます。
外では、数式が使えることを売りにしたいと思ったのです。
すくなくとも、「受験」という観点から考えると。