安敦誌


つまらない話など
by antonin
S M T W T F S
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
検索
最新の記事
仲介したことはあまりないが
at 2017-04-29 03:36
サンセット・セレナード
at 2017-04-12 23:17
水分子と日本人は似ている
at 2016-06-04 01:49
ほげ
at 2015-06-05 03:46
フリーランチハンター
at 2015-04-17 01:48
アメリカのプロテスタント的な部分
at 2015-04-08 02:23
卯月惚け
at 2015-04-01 02:22
光は本当に量子なのか
at 2015-03-17 23:48
自分のアタマで考えざるを得な..
at 2015-03-06 03:57
折り合い
at 2015-03-01 00:19
記事ランキング
タグ
(295)
(146)
(120)
(95)
(76)
(65)
(59)
(54)
(45)
(40)
(40)
(39)
(32)
(31)
(28)
(27)
(25)
(24)
(22)
(15)
最新のコメント
>>通りすがり ソ..
by Appleは超絶ブラック企業 at 01:30
>デスクトップ級スマート..
by 通りすがり at 03:27
7年前に書いた駄文が、今..
by antonin at 02:20
助かりました。古典文学の..
by サボり気味の学生さん at 19:45
Appleから金でも貰っ..
by デスクトップ級スマートフォン at 22:10
以前の記事

典拠

文明とは何か、ということをしばらく考えている。

って、まあ、考えちゃいるんですが、んなのどうでもいいじゃん、という感じはある。

「反りが合う」ってのは、木工の板の乾燥に伴う反りだなんてことを書いたことがあったが、調べると剣と鞘の反りのことらしく、なるほど、ということに。板の経年による反りを職人が見分けるという話は確かにどこかで聞いたのだが、それは「反りが合う」という慣用表現の語源説とは別の話だった。「元の鞘に収まる」なんていう慣用句もあって、剣と鞘というのはその、プラグにmaleとfemaleがあるのと同じあたりを指している。そういうのも含めて、「反りが合う」の語源もやはり男女の仲を表すアナロジーとして自然な剣と鞘がいいのだろう。

「メルクマール」の例のアレも、書いて数日後に実は間違いがたくさん発見されたのだけれど、まあ場末のブログだしいいじゃねぇかと思って放置していた。しかし、5年も経って未だに辞書的に検索の定番になっているあたりを見ると、誰かちゃんと辞書的に正しいことを書いてくれよ、と思う。ネットのいい加減さのようなものを奇しくも体感してしまって面白くもあるんだけれども、無料情報ネットワークを構成するボランティア的市民の一員として若干の後ろめたさもある。Wktionaryあたりに自分でちゃんと書き直せばいいじゃん、というのはあるんだけど。

Wikiと言えば、シャノンの定理かなんかでここへ飛んでくる人がいた時代があって、それはさすがにかわいそうだと思い、Wikipediaに加筆し、調べたい人はそちらへ飛んでくれるように仕向けたことがあった。そして、その目的は果たされたのだけれども、先日ふと思い立ってそのページを見てみると、その時に書いた文章がほとんど手つかずのままに残っていた。そんなもんなのね。ネットの情報はやっぱり信用ならねぇ。まあ、編集の手が入った紙の書籍だって実はどっこいどっこいの部分はあるんだろうけれども。自分も嘘を書いたつもりはないし、一応大学で使った教科書なんかは軽く参照した覚えがあるけれども、どちらにせよ素人仕事だ。

あと、Wikipediaというと、ある花の種の写真が知っているものと違ったので、他言語版で多用されている、よく見慣れたものに差し替えた。そういうチマチマした編集などもやってみたが、ああいう公開データベースにコミットする作業はやはりドキドキする。メンテナがいるわけでもないからプルリクエストとか成立しないしなぁ。

まだ若い研究者の会見がテレビで一般中継されたりしたらしくわけわからんことになっているが、公開というのは恐ろしいものだよなぁ。前にも書いたが、平凡な人間にとっては目立たないということも幸せの要件になる。その点、駅風呂は生ぬるくて居心地がいい。出世というのは組織で管理的役職に上り詰めることを指すのではなくて、文字通り世に出ること、世に名が知れることなんだと気付いたのは結構最近の話だった。憧れなくはないが、物は良し悪しだよなぁ。

以前に商売の話で、商売の客は狐みたいなもんだと書いたことがあった。あの意味というのは、B2Bでお互い生活かかっているような場合は別として、消費者相手の商売なら、客というのは生活を賭けて買い物なんかしない。日常生活の一部として、半ば無意識的に店と商品を選んでいる。そういう、全身全霊を傾けているわけではない、パーシャルな注意の仕方をしているとき、どんなに賢い人だって狐並みの知能で判断をしている。商売人は生活かかって商売をしているが、客は別にそうじゃない。このギャップが狐狩りの風景になる。

著述も似たようなもので、本気のプロモードで考察している分野もあれば、力を抜いて流すように書く分野もある。ちょっと専門を外れれば、どんなに賢い人でも畜生になれる。そしてそれが人間の自然な姿である以上、多くを書く人の文章というものとの付き合い方も見えてくる。ある人の中の「賢人」が書いている部分なのか、「狐」が書いている部分なのか、パッと見は分からない。自分の中の「賢人」を引っ張り出して来ればそのあたりを判別することはできるが、私の中の賢人は老人らしく疲れやすい。気が付くとすぐ狐にすり替わっている。百匹の狐を一気に野に放つ能力があるような人もいて、それはそれで才能だなと思うけれど。

煮詰められたクルアーンでも妙法蓮華経でも、部分を拡大すればきっとアホな部分はあるだろう。教科書だってなんだって。そういう部分をサラリと流せるとなかなかいいものだろうけれども。
[PR]
# by antonin | 2014-04-11 02:47 | Trackback | Comments(0)

イカレた脳のためのマクロ・メタリファクタリング

久しぶりにBrainfuckと戯れている。

Brainfuck処理系のベンチマークとして有名なmandelbrot.bには、C言語用プリプロセッサを使ったマクロ・メタプログラミングで書かれたソースコードがある。

Index of /brainfuck/utils/mandelbrot

そのソースコードを解読すると、BFのメモリモデルであるバイトデータ1個を1ビットとして扱い、それを16個組み合わせて半精度浮動小数点数を作っていた。このメタ浮動小数点数に対してBFコードでビット演算を行うことで、マンデルブロー集合の計算に必要な精度の複素数演算を実現している。なかなか面白い発想だし、複雑な演算の割に実行パフォーマンスも結構良い。

で、そのソースコードの細かいところを解読しようと思ったが、結構プリミティブな表現が直接使われていて、意味が読み取りにくかった。まあ、わかるんだよな。メタプログラミング作業の最初のほうでは、Brainfuck命令で書くよりも自然言語に近いマクロで書いたほうが読みやすいんだけど、だんだんBFに親しんでくると、今度は冗長な名前付きマクロで書くよりも、BFの簡潔な記号を組み合わせたイディオムで書いたほうが理解しやすくなってくる。ここらへんがBrainfuckの病的なところというか、人間様の適応能力の不思議というか、そういうところがある。

そうは言っても、あとからそういうコードを読むと、やはり意味が分からない。ということで、高度な集中力と勢いで書かれたmandelbrot.bのソースコードをリファクタリングし、プリプロセッサ処理のパフォーマンスよりも可読性を重視した形に書き換えてみることにした。まだ基本処理に if と while と for の区別をつけるとか、move だの copy だのを導入するとかその程度だけれども、今のところ元のBFコードと同一性を保っている。このレベルでも詳細処理がだいぶ読みやすくなった。最終的には動作レベルの同一性までの保証になり、BFコード上の同一性までは担保できなくなるだろう。ただ、最初からそこまでもっていくのは危険だ。

こういう作業は面白いんだが、寝不足で頭が痛い。面白いことをやって脳が活性化する効果が勝つか、睡眠不足でグリアが死んでいく効果が勝つか。まあ後者だという気がするが、とにかく面白い。
[PR]
# by antonin | 2014-03-29 01:35 | Trackback | Comments(0)

情報洗浄

負のハロー効果というのか、やっぱり陰謀論というのは考えれば考えるほど面白いのだが、この面白さをうまく伝える方法がまだ思いつかない。

ネットに誤って流出してしまった個人情報や機密情報や醜聞について、ある程度それが広まらないようにする対抗手法というのは存在する。具体的には、タイトルだけその流出情報を連想させるようなものにしておき、内容はつまらないゴミにしたものを大量に放流する。すると関連情報は次第にゴミばかりになり、人々が興味を失うので、そのごみの中に本当の流出情報があっても、人はそれを手に入れようという気を失う。

国家機密レベルの流出情報にも似たような手法はおそらく確立されていて、そうした手法の一つは黙殺であり、また別の一つは権威による否定であるけれども、類似テーマのごみ放出というのも場面によっては有効なもののうちに入っているだろう。

疑惑の真相、というような刺激的なテーマで、イントロは核心に近いが詳細はゴミばかりの情報をまことしやかにささやく。そういうテーマに興味のある人をひとしきりひきつけたあとで、今度は素人目にも嘘くさい怪情報を小出しにしていく。いつしか疑惑の核心に迫る暴露話は影を潜め、怪しい話ばかりになっていく。こうなると、純粋な好奇心や問題意識を持っていた人は失望し、強い拒否感とともに話の場を去っていく。

残った人は、負の信用度をもった情報源となる。最初は信用できると見せて、最終的には信頼できないことが明らかだと思わせる。そうすると、最初のうちに話していた信用度の高いと思えた情報も、失望感と負のハロー効果によって、まったく信用できない話に思えてくる。これは、流出してしまった機密あるは醜聞を聞く人に「信じられないと確信させる」ための有効な方法だろう。

正のハロー効果を持った人の発言は、少々怪しい内容でも人に信用される。同様に、負のハロー効果を持った人の発言は、少々信憑性のある内容でも人に全くの嘘だと信じさせることができる。最初は信用されて耳目を集めることがミッションで、次第にそれを不信感に変えていき、最後には全くのでたらめであると信じさせるところがゴールということになる。こういうスタイルのインテリジェンスが存在するのだとすれば、ベンジャミン・フルフォードさんはなかなか良い見本なのではないかと思える。
[PR]
# by antonin | 2014-03-26 23:18 | Trackback | Comments(0)

自動翻訳時代の言語生活

どうも、自然言語処理界の動きが面白い。時間もアレなのでリンクだけ羅列。

ニューラルネットの逆襲 | Preferred Research

ディープラーニングチュートリアル(もしくは研究動向報告)


これもある意味Deep Learning,Recurrent Neural Network Language Modelの話 [MLAC2013_9日目] — KiyuHub

自然言語処理の最新手法"word2vec"で艦これ加賀さんから乳を引いてみる - あんちべ!

Statistical Semantic入門 ~分布仮説からword2vecまで~

どれも、まだフィードフォワードの処理技術ばかりで、単語の意味を展開するようなものばかり。本当に自然言語を処理しようとすれば、こういうフィードフォワード型の連想処理を要素技術として、フィードバックループないしは相互連想型のネットワークを組んで、反復によって安定点を探るような技術の開発が不可欠になる。けれども、要素技術が育つのは良いことだ。基礎が固まってこそ応用が研究できる。

上記は入力も出力も自然言語というようなものばかりだけれども、OpenCVみたいに画像処理系のマシンラーニングも標準手法が育ちつつあるから、画像からメタ情報を抽出したり、あるいは言語から展開した意味ベクターから例示画像を連想し、その画像を画像処理することで意味ベクターを再連想して、そういう相互連想で安定点を探すことで正しい文脈を推論する、なんていうこともできるだろう。こういう連想ができれば、言語処理に視覚情報を文脈情報として与えることもできるようになる。

そういう具合で、言語間翻訳の精度が一気に向上する時期が、この先数年だか半世紀だか、そこは多少偶然の要素が絡むけれども、まあ確実にやってくる。そういう時代が来ると、私たちはどういう言語生活をするようになるのか。

まずは、格段に改善したとはいえ、そこは機械のやること、おのずと限度がある。けれども、その限度をわきまえると、人間を雇うより格段に手軽に翻訳が利用できるようになる。ということで、人間が機械翻訳可能な言語レベルに適応していくようになるだろう。例えて言うと、逐語訳的な英文和訳文体だとか、漢文読み下し文体だとか、ああいう機械翻訳が出してくる、意味的には正しいが、文芸的には粗悪な文体に、人間が馴染んてくるようになるだろう。それとは別に、翻訳を通じて別言語圏の人に発信したいような情報は、機械翻訳が正確に読み取ってくれるような、文芸的には粗悪だが意味的にはあいまいさの少ない文体で作文するようになる。

そういう時代がある程度続くと、自分で飛行機に乗って各国を渡り歩く経済力のある人とか、文化的に他言語を操ることを愛する人などを除くと、大多数の人は自分の母国語で生活するようになる。しかも、その母国語が文芸的センスのない、機械翻訳向けの言語に近づいてくる。他言語に翻訳不能な美しい言語表現というのは、使用の場が制限されてくる。

その過渡期には当然、英語も含めた各国語で、母国語の乱れ、単純化を嘆く人が出てくる。が、おそらく流れは止まらないだろう。そうなると、翻訳に親和した新言語を操る一般の人と、極度に文芸化した職人芸的言語を操る専門家に分化が進むだろう。そして、必要上やむなく公用語としての英語を利用せざるを得なかった人たちが、母国語に帰っていく。英語の人口シェアは漸減していくだろう。

そういう時代が、近い将来か遠い将来かは知らないが、いずれやってくる。そしてその技術的萌芽は目の前にすでに存在している。面白いものだと思う。
[PR]
# by antonin | 2014-03-26 02:11 | Trackback | Comments(0)

教え育てること

子育てをしながら、自分が子供時代に見ていた子供向けの商品を思い出したりするのだけれども、そうすると、当時の商品を作っていた大人たちからのメッセージが、なんだかとても優しさに満ちていて、子供に対する単純な愛情が感じられたなぁ、なんていう、当時は気付かなかったようなことを思うことがある。けれどもまあ、今もそういう暖かな視線というのはあって、ただ大人の立場からは検知しにくいだけなのだろうな、というようには思う。

当時から、テレビ番組とタイアップした玩具商品など子供を食い物にした商売はあったけれども、少なくとも子供の教育のためという建前のようなものはどこにもあったような気がする。最近はビジネスに対する憚りみたいな感覚も減って、子供たちのメンションを奪い合うことに対して、あまりそういう言い訳じみた建前を前置きする機会は減っているという感じはする。当時を大人として生きていたわけではないので、等価な比較はできないけれど。

テレビに関しては、もう維持期から衰退期に入ったメディアなので、当時の放送作品との品質の差というのは、勃興期特有の挑戦的なスタッフが減ったことや、あとは単純に運営規模と収入の比率が悪化しただけなんだろうと思う。現在はウェブの世界が勃興期から維持期に入っていて、コドモたちが子育てをするような時代には衰退期特有の失望感に迎えられているのだろう。

--

最良の育児とは、凡庸な教育者である実の両親が子供の教育をいくらか放棄して、教育に使命を感じている人に一部を丸投げしてしまうことだ、というような意見もある。確かにそんなような気もするし、しかし一面でしかないような気もする。

近代的な学校というのは、ほぼそういう丸投げ先の組織なのだけれど、西欧文明にキャッチアップしていた明治時代ならともかく、もう大概制度劣化していると思う。けれども、ゆとり教育政策だとか、その反動としての基礎反復教育政策だとかで、均一な国民学校全体のあり方を均一に変えていくという方法そのものがとても明治政府的で、なんだか疲れる。現状の公立学校という組織は国民の6割くらいに対してはすでにベストプラクティスになっていて、ただ残りの4割を標準に抑え込もうとした、国民を生産する工場としての品質管理的手法が時代に合わなくなっているだけだと思う。「均一な教育」ということが問題なのであって、「均一」という部分に手を付けないまま、すでに多数にとってベストなものを違う何かに「カイゼン」しようとするのは、方法として間違っているように思う。

習熟度別クラス編成とか、そういう小手先の修正ではなくて、学校という枠組みは今の完成したものを残し、しかしその枠組みの外側で教育を受けることを徐々に認めていくしかこの時代に合わせる方法はないと思う。でも、学校を卒業したその日から学校に勤める教員出身の官吏にそういう発想は難しいだろう。微視的には大きく変えたいが、巨視的な構造について変えるという発想からして無いようにも見える。素人考えでは逆だろうと思うが、まあ自分の属する業界のことを考えるに、難しいだろうなとは思う。改革の内容が、自分たちの手からこぼれ落ちる部分を作るだけ、というのは受け入れ難いものがあるだろう。

保護者の自由選択という市場原理を受け入れる私的教育と、国家による標準化と経済補償という社会主義的な公的教育をどう共存させるかというのも難しい。今も私立学校は存在するけれども、その自由度というのは知れている。NHKと民放のテレビジョン放送なんかを念頭に置くと、教育の自由化後に平均的な子供たちが公教育に残り、私教育が多様性を司るというよりは、マスがベネッセ的な民間サービスに流れ、公教育のほうが「パブリックスクール」のような形へと変質していくのかもしれない。そういう未来像もどうなんだろうなぁ。

--

古い偉人伝などを読むと、親は平凡な職を継がせたかったのに、教師や親戚が子供の才能を見抜き、親を説得して親元から引き離し、資金を援助しつつ育て上げた、なんていう話が目立つ。一定水準を超えた才能は、運はあるにしてもそうやって見出されるものなのかもしれない。ただ、そういう「引き抜き」が人身売買にならない程度にシステム化すると、恐ろしく強い国になるだろう。学費の安い国立大学なんていうのはかつてそういうシステムだったのだけれど、今は私学とさほど費用の差がないらしい。

うちのコドモたちをどう育てるか、というのとは別の水準で、そういうようなことも少し考えてしまう。
[PR]
# by antonin | 2014-03-24 01:54 | Trackback | Comments(0)

国家による復讐

韓国が日本に、とかではなくて、日本国政府が日本国民に復讐を試みる事例が見られて、嫌な感じがする。昔からこういうのはあったのかもしれないけれど。時事ネタでもないし、気力もないのでつぶやき程度に。

警視庁および警察庁。

2ちゃんねる発の逮捕(書類送検)者まとめ

かつては民事不介入ということで犯罪の未然予防にはあまり積極的ではなかった警察組織も、大阪教育大学附属池田小学校の事件などがあって、公的施設に対する犯罪予告に対する事前警戒に頻繁に駆り出されるようになっていく。そもそも人員的に余裕のある組織ではなく、通信、交通の発達に伴って犯罪捜査も高度化していく中で、予防的な事前警戒の人的コストが組織に重くのしかかっていく。

そしていつしか、「威力業務妨害」という罪名が犯罪予告に適用されることが増えていくのだけれど、その背景に犯罪予告そのものが「警察組織に対する威力業務妨害」と化している実態がある。もちろん法的には警察に対する威力業務妨害の適用はないので、第三者に対する威力業務妨害あるいは脅迫の罪状による逮捕状発行の閾値が下げられ、それによる書類送検とマスメディアへのリークを使った社会的攻撃という形での警察組織の自己防衛が始まる。

こういう流れがあって、犯罪予告遠隔操作事件では露骨な冤罪事件を生み出してしまったのだけれど、その首謀者という「疑い」だけで容疑者を1年以上拘留するという、旧自由主義圏の先進国としてはおよそ信じがたい人権侵害事案があった。これも警察組織に恥をかかせた犯人への報復意識が引き起こしてしまった事件だろう。最終的に不起訴になるとしても、メディア露出によって見せしめ効果があれば一定の防衛効果がある。

こうした、新規立法ではなく既存法規の「弾力的運用」による、組織防衛のための国民個人への報復行動は他の省庁にも見られる。

農水省。

競馬の必勝ソフトを馬券のネット販売と組み合わせ、1億円を超える収入を得た人がいる。この人に、負けた馬券の購入費用を経費として認めないという解釈で、勝ち分の数倍の追徴課税が宣告された。

競馬で1.4億円稼いだ男性に6.9億円の追徴課税 競馬ファン「いや、そのりくつはおかしい」 – ガジェット通信

馬券のネット販売や馬券の当選倍率設定そのものに問題があり、適切に解析すると定常的な利益を上げることができたというだけのことで、本来であれば当選倍率やネット販売の総量規制などで対処すべきところを、税法の弾力運用という方法で政府から個人への報復が行われる。最終的には取り下げられる場合があっても、その時点ではニュースで大々的に報道され、類似の行動が不利益をもたらすということを広報する。

私は堀江貴文さんという人物はどうも好かないが、放送局を買収しようとして間接的な罪状で投獄された事情というのは、やはり総務省(旧郵政省)という政府組織から民間人個人への「法の弾力運用による報復」に見える。類似の現象は、探せば他にももっとあるだろう。

本来、立憲主義や人権主義とは、こういう国家権力による国民個人への攻撃を避けるためにあった。けれども改憲すらできずに長い年月を過ごすうちに、日本国は憲法の文面よりその解釈が優位になるのが当たり前の社会になった。法は乱立し、その文面よりも解釈と運用が優位になった。その結果が、徐々に国民に突き刺さりつつある。今はまだ「弱いところ」から刺され始めている段階だけれども、いずれは多くの人が笑っている場合ではなくなるだろう。労働諸法の問題を見ると、もう誰も笑っていないような気もするけれど。

法治原則を軽んじるというのは本当に怖い。
[PR]
# by antonin | 2014-03-21 00:21 | Trackback | Comments(0)

雑記

天気予報の件。大雨は結局降らず、代わりに大雪になった。山梨のほうでは観測史上類を見ない大雪になって、ちょっとしたdisasterになっていた。ブドウ園が壊滅して、来季はちょっと難しそうという意見もあって、心配している。

--

コンストラクタ中の例外の件。Togetterのまとめは3年以上も前のものだった。3年前ならあの状況も理解できる。

--

NTT東日本の勧誘がうるさい。新聞みたいにオマケでも付けてくれればまだいいが、余計な契約ばかり付けてきて、2年縛りも携帯業界から移入した悪質なスタイルのものが入っていて、色々と危険な感じ。しかも未だにB-フレッツみたいな国策ネットワークを使っているので、技術的にもなんとなく不安で怖い。

ニュース - NTT東日本がBフレッツを光ネクストに移行、14年度中に完了:ITpro

っていう話はあるらしいけど、これはこれで別の不安が。

--

TDDも春秋を重ねて裾野も広がり、当該分野のベストプラクティス本なんかも徐々に増えてきているので、私のような二流エンジニアにはありがたい状況。通勤電車でチビチビ読んでいて楽しい。

--

昨年末に削除した内容を再掲できるように編集しておくか。まあ、寝ることを優先しよう。
[PR]
# by antonin | 2014-02-24 00:11 | Trackback | Comments(0)

RAIIとかtry-catchとか

久しぶりにウィークエンド・プログラミングなんかをしている。業務ではなかなか手を出しにくいテンプレート周りの記法を試しに利用しているが、C++03時代には細かいところで高度なバッドノウハウを要求されて挫折していたことが、C++11では概ね思ったとおりに書ける方法が用意されていたりして、なかなかいい感じになっている。そもそも今まではunique_ptrすらなかったわけで、tr1::shared_ptrだとかboost::scoped_ptrがあるよと言われても、sharingしたくなかったりboostの複雑なconfigureに悩まされたりしたくなかったりすると、結局自分でスマートポインター作りから始めるなんていう状況が多かった。

最近、まだ新しいPCの電源部がぶっ壊れ、借り物のPCにCygwin+GCCを入れたりなんかしたついでに、整数型を完全にテンプレートの向こうに追いやって素数計算なんかをするとどんな感じになるか、なんてことを試して遊んでみた。C++11の制定から2年以上経過して、GCCもだいぶ安定して「カバのダンス」もうまくなったらしいので、-std=c++11で新しい機能を少し試しながら書いてみた。今回、テンプレートの中でstd::vectorだとかstd::unique_ptrだとかを使ってみたが、autoだとかtemplate aliasなんかがとても便利で、いままではテンプレート中なのにCっぽく泥臭い記述でお茶を濁さざるを得なかった表現が、ずいぶんスッキリと書けるようになっていた。

次に、Brainfuckの実装をstrategyパターンっぽくして、命令実行エンジンの最適化レベルとか、メモリ部のモデルとかに依存しないように実装してみることにした。まずはソースファイルのオープンでしょう、ということで、設定オブジェクトがコマンドラインから拾ってきたソースファイル名でリードオープンするクラスを作っていたのだが、さて、コンストラクタでオープンさせるのか、別途メンバ関数のOpenを呼んで成功チェックするかどうか悩んでいた。古典的には、コンストラクタは本当に例外的な事象以外では成功するようにしておいて、エラーの予期される初期化にはそれ用のメソッドを呼ぶべき、という作法があった。

が、現代的なC++の思想では基本的にRAIIで、普通のブロック中だろうが別のクラスの初期化リストの中だろうがポインタを取る演算式の中だろうが、どこでも完全なオブジェクトを生成するか、あるいは例外を投げて正しく失敗しなければならない。そうすれば、別の誰かが例外をブン投げたりしてスコープを外れた場合は必ずお行儀よくデストラクトする仕組みが言語レベルで提供されている。であるからには、きっとC++11にはそういうスタイルのための基本的な道具立てはそろっているはずだと思い、イディオムを探してみた。すると、案外混乱している様子が見て取れた。

コンストラクタでの例外はあり?なし? - Togetterまとめ

河野 真治さんが意外と古風な論を展開していて驚いたが、実用的な実装を重ねてきた経験からの意見なんだろう。が、週末プログラマーとしては憚ることなく安っぽい理想論を展開していきたい。週末プログラミングは保守的な実務プログラミングでのフラストレーションを晴らす意味もあるので、あんまり現実的なのは嫌だ。しかし実際問題として、オンデマンドでオブジェクトを生成するRAIIに対して例外処理を安直に書くと、文法上の障壁があって困っていた。下のリンク先にとても上質な議論があって、その中に言いたいことがずばり書かれていた。

C#のvarとtry~catchが糞すぎる - やねうらお-俺のやねうら王がこんなに弱いわけがない。 (第2期)

using (var sr = new StreamReader(path))
{
var text = sr.ReadToEnd();
}
Console.WriteLine(text); // なんでここでtextにアクセス出来ないの?馬鹿なの?死ぬの?

そうそう。これこれ。上記のコードはC#のサンプルだが、C++11でも同様のスコープの問題がある。まずリソース確保のためにオブジェクトを確保するのだが、それをtryブロックに入れてしまうと、その後のコードから参照できず、せっかくコンストラクトが成功してもtryブロックを出るときにデストラクトされてしまう。馬鹿かと。アホかと。

結論としては、例外を投げて失敗する可能性のあるコンストラクタを呼んで、しかも失敗時にリカバリーできる失敗なのだとしたら、スタック上に実体で受けるんじゃなくてヒープへのポインタで受けて、tryブロックの外にあるスマポに入れればいいじゃない、ということになる。オブジェクト本体はコンストラクタで例外を投げるとしても、スマポを使えば、そのコンストラクタはno_throwだし、newしたポインタの登録が初期化になるわけで、スマポの使用を前提とすれば、結局は失敗の可能性の高い初期化とオブジェクトの定義を自由に分離できる。だから、ポインタの先にあるプリミティブなクラスの実装がコンストラクタで例外を投げても全く問題ないということになる。

コーノさんは基底クラスのコンストラクタが例外を投げるようだと継承しにくいという問題を挙げていたが、他の人が述べていたように、インターフェイスと実装が分離されていないクラスを継承によって再利用しようとすること自体に何らかの設計ミスがある、という考え方のほうが(現実的にはともかく理想的には)正しいのだと思う。レガシーシステムに組み込むような事態を考えないで済むなら、コンストラクタは積極的に例外を投げていいと思う。コンストラクタにno_throwが必須の汎用クラスもあれば、no_throw制約が馬鹿げているような特殊リソース管理クラスもあって然るべきだろう。まあ、そういう場合もno_throwなデフォルトコンストラクタを持っているのは有用だろうけれども。

ただ上記引用の本論はvarで型情報を受けること、C++11で言うところのautoで受けるようなところが問題の核心なので、またちょっと別の話になるのだけれど。そのあとのコメントにあったouterみたいなのはいいと思ったが、利便性のためにブロックの機能を破壊するよりも、カジュアルに関数なりクラスなりを作って、外部から見て適切な振る舞いとなるようにラッピングしていくのが正攻法なんだろう。そのために静的なドキュメントを膨大に書かされるようなことのない現代的な開発環境であれば。

感想として、なんだかC++もだんだんCommon LISPみたいになってきたな、と思う。文法上の道具は充分に用意してあるから、文句があったら自分の使いやすいC++ベースのドメイン言語を自分で構成しろと。まあマクロありのS式みたいな構文上の柔軟性はないけれども、演算子のオーバーロードから始まって、C++14/17に向けてエキスパート向けの変態ツールがますます豊富になってくるみたいだから、JSF++みたいにエキスパートチームが先にコアライブラリなりフレームワークなりを定義して、アプリケーションプログラマはそのドメイン言語の範疇でプログラミングしていくことになるんだろう。

ただ、エキスパート不在の現場だとか、エキスパートたちの意思統合が下手な現場だとか、エキスパートの思想を末端のプログラマまで浸透させるだけの言語能力に欠ける現場だとか、そういう場合にはISO標準化以前のC++に匹敵するくらいマズい状況も予想されるだけに、ちょっと恐ろしい。LLVMが組み込み用に普及するような時代になると、もうC++の出番はないんじゃないかというような気もしないでもないが、まあ将来のことはわからないので、眠れなくならない程度にC++の進歩を見守っていきたい。
[PR]
# by antonin | 2014-02-22 15:48 | Trackback | Comments(0)

スノーストームとモークリー

関東地方の場合、冬の終わりのドカ雪というのはそれほど珍しい話でもない。今日の雪も、予報ではみぞれ混じりの重い雪という話だったが、案外しっかりとした雪が降っている。ただ、この後の予報がすごいことになっている。今日の昼に最低気温の1℃近辺を記録したところから、ずっとそのあたりをうろついていた気温が、日付をまたいで夜明けまでの間に10℃近く上昇し、その過程で毎時20ミリを超える豪雨になると予報している。

そして、さっきから雷が鳴り響くようになった。冬の嵐というのは、珍しいが経験はある。けれども雪で視界が悪いような天気での雷鳴は初めての経験だ。雷が鳴っているということは、湿った温暖前線が食い込んできているものの居座る寒気のほうも強くて、上昇する暖気の中で水分が凝集して落ちてきているはずなのだが、地表近くではまだ雪が降っている。ふわふわした雪が上昇気流に逆らって急速に落ちるということはあまりないので、ひょっとすると上空ではすでに雨かひょうが出来始めているのかもしれない。外はまだ雪が降っているが、歩く人たちが傘を差していない。風が強すぎるんだろう。

地球シミュレータ稼働以降の時代、かつては当てにならないものの代名詞だった天気予報も、かなりの精度で天気を言い当てるようになっている。世界初のコンピューターは、法的にはアタナソフ・ベリー・コンピューター、通称ABCというものとされているが、これはビッグブルーの誇る弁護団による寝技の勝利という面が強くて、技術史的にはやはりENIACということになる。ENIACについては語りたいことがたくさんあるがキリがないので割愛する。ここでENIACが出てきた理由はというと、ENIACの生みの親であるジョン・モークリーという人の話になる。

ENIACの生みの親として、モークリーとエッカートの二人の名前が知られている。J・プレスパー・エッカートさんは、当時のアメリカらしいシステム・エンジニアリングを骨の髄まで叩き込まれた電子工学者で、信頼性の低い当時の真空管を大量に使いながら、システムとしてそれなりに実用的な水準の信頼性を持つ巨大な計算機を一発で作り上げるという快挙を成し遂げた。

一方のモークリーさんというのは、どちらかというと工学者というより理学の人で、高速な計算機があったら是非解いてみたいテーマがあって、その目標のための第一歩として、大戦中の弾道計算機械として予算をせしめ、優秀な技術者をパートナーとしてENIACを作り出した。このモークリーさんは、ウォズニャックさんと組んでAppleを興したジョブズさんの位置付けにいくらか近い人物になっている。彼もフォン・ノイマン先生とのちょっとしたいざこざの後にUNIVACという商用計算機を作る会社を設立しているが、ジョブズさんのような華々しい成功とはならなかったようだ。

で、そのモークリーさんが弾道計算機を足掛かりとして、最終的にどんな計算を目論んでいたのかというと、それは流体力学および熱力学の方程式を数値算法で解くことによる、気象予測だった。結局この分野は、モークリーさんが夢想したほどには簡単なものではなく、非線形性によって誤差が発散しない程度にメッシュを刻むと計算量が爆発するということがわかり、モークリーさんは現在のような計算機科学による気象予測の勝利という成果を見ることなく、1980年に亡くなっている。

コンピューターによる気象予測というのは、シミュレーションによる大気変動の時間進行が、現実の大気の実時間変動より高速に実行できるということを意味していて、その実現のためにはコンピューターのハードウェア的な進化が大きく貢献している。しかし、気象予測ほど非線形性の強くない解析では、ENIACから5年ほど遅れて作成されたUNIVAC Iでも、目覚ましい成果を挙げていた。その代表的なエピソードが、1952年の大統領選挙結果を統計解析によって正しく予測した件だった。この年の大統領選に勝利したのはアイゼンハワーさんで、UNIVAC Iのエピソードを語る枕としては「大方の予想に反し、アイゼンハワーの勝利を正しく予想した」と言われることが多いけれども、実際には「どちらが勝利するか断言できる人がいない中、アイゼンハワーの大勝を事前に予測することができた」と言ったほうが正しいようだ。

なんて書いているうちに、雪があられに変わってきた。視界はますます悪くなっている。さて、寝よう。
[PR]
# by antonin | 2014-02-15 01:00 | Trackback | Comments(0)

都知事選について

少し時間があるので簡単に。

今は東京都に住民票を置いているので選挙権があるのだけれど、事前には、棄権するか、「猪瀬直樹」と書いた無効票を投じるかのどちらかにしようと決めていた。つまり、有効票を投じた人に白紙委任するという態度に決めていた。都知事選の場合は当選者が1名なので、議会選挙などと違って、当落ラインすれすれのあたりで変な人が潜り込むということがない。そういう意味で今回は投票権者の総意を信頼していたので、その結果として舛添さんが当選しようと、田母神さんが当選しようと、赤坂さんが当選しようと、そこは公正な選挙の結果に従おうと決めていた。

雑に言うと、今回の知事選そのものについてはどうでもいいと思っていた。一方で、なぜ今選挙をさせられるのかという経緯については大いに考えていた。過去最多の、400万票を超える得票で、直接公選制によって選ばれた知事が、リコールなどの正当な手続きを経ることなく、公定任期のわずか4分の1ほどの期間で、マスメディアなどの圧力によって辞任させられてしまったというプロセスのほうが気になっていた。まだ調査は進んでいないけれども、猪瀬さんが辞任に追い込まれる直前に執っていた重点政策項目というのはしっかり調べていく必要があると感じた。

民主主義には2つの重要な要素があって、ひとつは議論、もう一つは多数決になる。知識人商売をしている誰かが、民主主義の根本は多数決だと言っていたが、根本は議論による相互説得のほうにあると思う。ただ、現実的にはいくら説得を続けても市民全体の満場一致というのは実現しえないので、ある時点で議論を打ち切り、決断して実行の段階に移る必要がある。そういう、議論の打ち切りプロセスが多数決であって、多数決で勝つというのはある程度、多数を得た側の説得に理があった証拠ということにもなる。そしてしばらくは議決に従って粛々と事を進め、ある程度の期間が経過したらまた議論と議決を行い、方針の継続か変更かを決める。それが民主主義というものだったと思う。

で、今回はそういう議論も深まらず、多数決もなしに、脅迫的な圧力だけで422万の民意はキャンセルされた。これが日本の民主政治の現状なのだと思う。猪瀬さんという個人を政治家として見たとき、それほど熱烈に支持するわけではないけれども、都民の立場からすると、任期早々の失脚に値するほどの失政は無かったとも思っている。政治資金のダークサイドは確かにあったわけだけれども、現状の日本の法令では、合法的にある程度まとまった資金を集める道というのは閉ざされている。何かしらのテクニカルな迂回方法を駆使しないと、それは実行できない。猪瀬さんが自分はアマチュアだったといっているのも、そのあたりの技法が弱かったという率直な反省だと思う。

本来は、自由に資金援助を受けることができて、そしてどういう政治的意志を持ったどういう団体からどの程度の資金を受けているかというのは、公開情報として晒されているべきだろう。なので資金提供を受けたことそのものがタブー視されるのは、民主主義にとっては不健全な状態だと思う。政治というのは結局のところ対立利害の調整の場なので、政治家がどういうポジションに立っているかというのを明らかにした上で、対立する立場と時には妥協し、時には突っぱねたりしながら、基本は相互説得を続けるのが自然な姿だと思う。水面下でダラダラと特定勢力につながっているというのは民主主義の本場であるアメリカでも存在するので、旗幟鮮明な政治活動というのはメディア全盛の現代では実現不能な理想なのかもしれないが、現状から見た理想は一応そういう方向にあると思う。

舛添さんには頑張ってくださいとしか言いようがないけれども、なんだかちょっと無力感に襲われる選挙だった。

東京都-H26東京都知事選挙投開票速報
[PR]
# by antonin | 2014-02-11 16:11 | Trackback | Comments(0)


フォロー中のブログ
外部リンク
外部リンク
ライフログ
ブログパーツ
Notesを使いこなす
ブログジャンル