トップ «前の日記(2013-05-10) 最新 次の日記(2013-05-16)» 編集

日々の破片

著作一覧

2013-05-11

_ なぜ検査例外はクズなのか

コーディングを支える技術の検査例外のところまで進む。

これは良いものだが今のはだめだとヘルスバーグに語らせたりしているし、論調としてはどうも良いもののようだが普及してないねとしている。

そこでなぜだか考える。

まず、1つ確実にわかることは、意味を持つ場合と持たない場合があるからだ。

1番どうでも良いのがリフレクション周りの検査例外で、そのクラスにそのメソッドがあることがわかっている場合に呼び出しをまとめるためにリフレクションを利用するユースケースでノイズにしかならない。もしコードした名前が存在しなければ致命的かつ本来あり得ない状況なのだからランタイムエラーとして死ねば良い。つまり、検査例外に分類していることは仕様バグだ。

一方、あるオブジェクトの内容を対話的に参照する場合には、間違えたら名前を直してやり直したい。従って検査例外であるべきだ。

元々のリフレクションの意味からは後者が想定されるユースケースなのだから検査例外で正しい。

しかし実際のアプリケーションのユースケースでは前者の使い方が圧倒的に多いので検査例外である意味がない。前者が多いのはマクロが記述できないからだったりソースコード生成が面倒だったりするからだ。ダメな言語だな、となってしまうし、だから人海戦術プログラミングが行われているのだろうなと、別方向に話が進んでしまう。

IOExceptionもSQLExceptionも同じだ。本来の想定されるユースケースでは検査例外であるべきが、サーバーサイドアプリケーションになったとたん、例外になること即ち配置ミスであったり、ハードウェア障害であったりして、死すべきランタイムエラーに変わる。

ということは、クラス定義に密結合した属性として検査例外が実装されていることが問題で、ユースケースに結合したものであれば良いわけだ。そこで、結果的にフレームワークでどうにかすることになる。であれば、検査例外を言語仕様に入れても意味ないじゃんとなるのは当然のことだった。

そこで、それはもしかすると言語実装の未成熟が原因かもと考えることもできるのではなかろうか。ユースケースはあまりに上位概念だが、コンパイル時に呼び出しのグラフから使われ方のコンテキストを判定して、検査例外のキャッチを無視しても良い場合と悪い場合に分けて処理できれば、メソッドシグネチャに検査例外が含まれていること自体はむしろ良いことになり得る。

コーディングを支える技術 ~成り立ちから学ぶプログラミング作法 (WEB+DB PRESS plus)(西尾 泰和)

この本は、体系的にコンピュータサイエンスを学ばないでプログラミングを成り行きから始めた人が1年くらい過ぎてから読むとちょうど良い感じの本だな。(職業プログラマ方向でも、小中学生プログラマ方向でも)

_ エドマロー戦略は有効か?

グッドナイト&グッドラックという映画がある。

テレビキャスターのエドマローが、50年代アメリカの魔女狩りじゃなくて赤狩りを主導したマッカーシーの欺瞞と戦う物語である。

しかし、マッカーシーはなぜか英雄視されていて、絶大な人気を誇る。

理を尽くして論難しても、多分、太刀打ちできないことは明らかだった。

そこで彼はマッカーシーに自身の番組の枠を使って大いに語らせることで、何も論評せずにアメリカ国民に誰を信じるべきかを知らしめた。そこにあるのは、無知と言論による暴力に過ぎないことが明らかになる。

かくしてアメリカは右に振れ切った路線を修正した。民主主義の勝利。

グッドナイト&グッドラック 豪華版 [DVD](ジョージ・クルーニー)

この映画(true storyベース)には疑問がある。

理を尽くして論難しても国民を動かすことができないと考えるということは、国民を信用していないということだ。

しかし、マッカーシーに語らせることで単に粗暴で無知な夜郎自大と国民に気付かせることができると考えることは、国民を信用しているということだ。

したがって、成功したのは単なる結果論に過ぎなかったのであって、エドマロー戦術はまったく有効ではない(なぜなら、方法論として矛盾している)と考えるべきなのではないか。

ということを、「マッカーサーが数日で作った醜い憲法」維新・石原氏を読んで考えた。

それにしてもこれはすごいページだ。

本日のツッコミ(全8件) [ツッコミを入れる]
_ naruse (2013-05-11 20:54)

> 理を尽くして論難しても国民を動かすことができないと考えるということは、国民を信用していないということだ。<br><br>「信用していない」というよりかは、枝葉を論難してもマッカーシズムの根幹をへし折ることは出来ないって感じじゃないかな。<br>というか、基本的に「××主義」ってのは一つの公理系なので、純粋な議論では倒すことはできないのではなかろうか。<br>なので、「エドマロー戦略」では自分の言葉が自分を刺すように準備しているわけです。<br><br>> しかし、マッカーシーに語らせることで単に粗暴で無知な夜郎自大と国民に気付かせることができると考えることは、国民を信用しているということだ。<br><br>別にただ30分自由に喋らせているわけではなくて、自爆するようにちゃんと舞台は整えてあるんですよね。<br>http://aboutusa.japan.usembassy.gov/j/jusaj-murrow6.html<br><br><br>ところで、日本国憲法はマッカーサー達が短期間で作ったとか、露骨に翻訳文であることがわかる箇所が散見されて美しくないのは事実だと思いますけどね。かといって改憲すべきかと言うと事はそれほど単純じゃないのがアレなんですが

_ arton (2013-05-11 21:44)

おお、なるほど。そのページは面白いです。see it nowとその反論番組の2本立てだったのですね。ところで露骨に翻訳文という箇所ってどの辺? 単に法文調だとおれが思っているだけかも知れないので知っておきたいな。(間違いなく2~3日のやっつけ仕事があるとすれば、元々廃止する方向だったけど実際に会見して残すことに決めた天皇制に関する条文なんだと思うけど)

_ naruse (2013-05-12 17:10)

> ところで露骨に翻訳文という箇所ってどの辺? 単に法文調だとおれが思っているだけかも知れないので知っておきたいな。<br><br>前文で顕著ですけど、長めの条文はだいたいそんな気が。「翻訳文」というよりは「元の英文が透けて見える文」って言った方がいいのかな。条文では97条とかが顕著かなぁ。<br>http://www.kantei.go.jp/foreign/constitution_and_government/frame_01.html<br>あと、「であつて」の用法とかも特殊な気が。憲法では接続詞として使われているけど、現代の法律では「Aであって、Bでないもの」という使い方が大半だと思う。

_ naruse (2013-05-12 17:31)

> 間違いなく2~3日のやっつけ仕事があるとすれば、元々廃止する方向だったけど実際に会見して残すことに決めた天皇制に関する条文なんだと思うけど<br><br>マッカーサーと天皇の会見は1945年9月27日なんですが、マッカーサー草案の大勢が作られたのは1946年2月4日~7日です。<br>https://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC%E5%9B%BD%E6%86%B2%E6%B3%95<br>http://realtime.wsj.com/japan/2013/04/25/%E7%B4%841%E9%80%B1%E9%96%93%E3%81%A7%E8%B5%B7%E8%8D%89%E3%81%95%E3%82%8C%E3%81%9F%E6%97%A5%E6%9C%AC%E6%86%B2%E6%B3%95/

_ arton (2013-05-12 18:14)

これ読むとなんか凄いね。章あたり3人位のグループの並行作業と読めるけど、それにしては各章がばらばらじゃなく統一された見解に依ってるから、アジェンダを立てた奴が相当賢いか、あるいは何かテンプレがあったのかな。

_ naruse (2013-05-13 00:07)

起草に際しての指針としては、一応マッカーサー三原則がありますが、それはたぶんartonさんの問いへの解答になっていなくて、正答は独立宣言及びアメリカ合衆国憲法(特に修正1~10条なんでしょう)。<br>http://aboutusa.japan.usembassy.gov/j/jusaj-majordocs-independence.html<br>http://aboutusa.japan.usembassy.gov/j/jusaj-majordocs-constitution.html

_ naruse (2013-05-13 00:17)

なお、日本国憲法の「平和主義」については当然合衆国憲法にあるはずもなくて、クエーカー教的な平和主義と、日本から武力を取り上げたいというマッカーサーの思惑と、軍事費をケチりたい日本の思惑などなっどの絡み合ったものなんでしょうかね。<br>以下の議論もおもしろいかも<br>http://finalvent.cocolog-nifty.com/fareastblog/2006/06/burrhus_frederi_0e9b.html<br>http://finalvent.cocolog-nifty.com/fareastblog/2009/12/post-92ff.html

_ arton (2013-05-13 11:57)

ここはいいまとめになってきたなぁ。どうもありがとう。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|12|

ジェズイットを見習え