2011-08-26

次期VC++のIDEに関する情報

First Look at the New C++ IDE Productivity Features in the Next Version of Visual Studio - Visual C++ Team Blog - Site Home - MSDN Blogs

コードの強調表示がより強力になる。仮引数はイタリック体で表示される。

これは改悪だ。私はイタリック体とボールド体が大嫌いなのだ。現にChromeでも、* { font-weight : normal !important ; font-style : normal !important ;}というCSSを全ページに挿入するエクステンションを自作して使っている。わざわざ設定を変えるのが面倒そうだ。

リファレンスハイライト:あるシンボルにカーソルを合わせると、同じシンボルがすべてハイライトされる。単に名前が同じだけの違うシンボルはハイライトされない。

まあ、それなりに便利だろう。

ソリューションエクスプローラーが改良され、ソースコードを展開して、ソースコード内の関数や型などの一覧をみることができる。

これは、今のIDEにも、クラスビューとして存在するが、ソースコード単位で、しかもソリューションエクスプローラーからみられるところは、便利だろう。

インテリセンスのメンバーリストの自動表示。今までは、ショートカットキーを押さなければならなかった。

今でも自動表示されるような気がするが、たぶん、::とか.などに反応しているのが、もっと自動的に出るようになるのだろう。

メンバーリストフィルター。一致する名前だけが表示される。一致検索はファジーで、pbでpush_backが表示されたりする。このファジーな検索は無効にして、単に先頭からの一致に変えることもできるし、フィルターを無効にすることもできる。

コードスニペット。C#などでおなじみのコードスニペットがC++にもやってくる。

2011-08-25

米軍の言語専門家の無駄遣い

Lost in Translation: How The Army Wastes Linguists Like Me | Danger Room | Wired.com

抄訳。

2006年の冬のこと、私は軍隊に、言語専門家として志願した。外国語の翻訳を担当する兵士だ。軍の採用担当は、大学で何年もアラビア語を履修した私のジェイムズ・ボンド的技能を信用しなかったようだ。ともかく群の採用担当は、実地における経験を積めるよう配慮すると約束した。そこで、私は入隊して教育訓練を受けた。

2年間の教育訓練の後、国内でのアラビア語関連の仕事を経て、ついに2009年の3月、私はデルタ基地に着陸したブラックホークより降り立った。イラク南部のアルクートに近い基地だ。私の仕事は、傍受したアラビア語の通信を翻訳して、前線兵士に警告を出すことであろうと、私は考えていた。

任地で私を迎えた曹長の専門言語が朝鮮語であると知った時の、私の驚きを想像してもらいたい。どうやら、私の配属された5人班の半分は、朝鮮語話者であるようだ。イラクの砂漠で、朝鮮語の需要がどれだけあるというのか。これが、私の配属は、訓練内容とまったく合っていないのだと知る、最初の兆候であった。

イラクでの任務が始まり、私は、誰が言語を英語に翻訳しているのかという事実を、すぐに知った。それは、中年の巨漢なアラブ人であった。私ではない。モースル生まれのネイティブであり、我々の配属が必要としている翻訳の半分をこなす、民間人からの任用者であった。噂では、彼は20万ドル以上儲けているらしい。私の給料の優に5倍の額である。その間、私の班員は、暇そうにそこらへんに座り、装備をいじったり、パソコン画面を眺めたりして、退屈な時間を過ごしていた。

どうやら、どこの班でも事情は同じらしい。私は8ヶ月の勤務中に、35冊の本を読み終えた。そのうちの一冊は、Fiasco: イラクにおけるアメリカ軍兵士のアドベンチャーであった。

例えば、イランの国境に近いアマラーの基地にいる、ある兵士は、ペルシャ語を流暢に話す。もし、彼が通信兵に配属されたならば、非常に便利であろう。では、彼は代わりに何をしているのか? 彼は同僚がWoWで遊ぶのを観察するという非常に忙しい任務に付いている。

私の知る限り、軍隊内の言語専門家は、皆同じ問題を抱えている。

こんな状況ならば、そもそも軍は言語専門家など派遣するべきではないのだ。戦地に派遣されなかった言語専門家は、NSAとかのインテリジェンス部門で働いている。海外に派遣された者とは違い、彼らは実際に言語技能を活用して、派遣された兵士の力になっている。毎日の仕事によって、彼らの言語技能は維持されている。ある防衛会社などは、言語専門家を遠隔通信で前線にいる兵士とつなぎ、必要な翻訳を担当させるようなことまでしている。

一方、現地に派遣された言語専門家は、全く関係ない退屈な仕事をしている。他の兵士と何ら変りない。専門の言語技能は必要とされず、技能を維持することすら難しい。多くの者は、技能確認のテストに落第してしまう。

少なくとも、軍は我々言語専門家を、どこにでも使える万能要員のように扱うのを辞めるべきだ。我々の技能は専門的である。朝鮮語話者は朝鮮にいるべきであって、アルクートにいても仕方がない。スペイン語やフランス語専門の者は、ラテンアメリカとかNATO軍とかに配属されるべきなのだ。

まあでも、軍は私の代わりに、民間任用者を多数雇用して仕事をさせている。むしろこっちの方が優れているのだろう。ネイティブの技能には、太刀打ちできるわけがない。金はかかるが、品質も悪くない。

セロ弾きを妨害する猫

あまりに可愛いので貼らずにはいられまい。

2011-08-24

explicitデフォルトコンストラクターと空の初期化リスト

規格を読む限り、explicitデフォルトコンストラクターを持つクラスを、空の初期化リストでリスト初期化できると思う。

12.3.1 [class.conv.ctor] p2

A default constructor may be an explicit constructor; such a constructor will be used to perform default-initialization or value-initialization (8.5).

とあり、デフォルト初期化か値初期化が可能である。また、リスト初期化で初期化リストが空の場合、

8.5.4 [dcl.init.list] p3

If the initializer list has no elements and T is a class type with a default constructor, the object is value-initialized.

単にデフォルトコンストラクターと言っているので、explicitかどうかは問わないはずだ。

2011-08-23

今日学んだ英単語:defenestrate

defenestrate [diˌfɛnəˈstreɪt]
動詞
窓から(人、物を)投げ捨てる

そんな動詞があるのか。

Defenestration - Wikipedia, the free encyclopediaによると、それなりに歴史のある言葉らしい。

Bastionが興味深い

Bastionというゲームが、非常に興味深い。実際にプレイしたわけではないが、プレイ動画を見るかぎり、かなり面白そうだ。

特徴的なのは、動的なナレーションだ。ゲームを止めることなく、プレイヤーの行動にあわせてナレーションが流れる。いままで、こういうゲームはなかったと思う。

最近のゲームは、やたらとストーリーを重視し、やれカットシーンだのQTEだのと、ゲームを途中で止める変な要素を入れたがる。ゲームはユーザーの入力に反応するから面白いのであって、単に映像をみるのならば、それは映画と変わらない。この仕組は、ゲームの流れを止めないという点で、優れている。

Zero Punctuationもレビューしている。

Zero Punctuation: Bastion and From Dust

2011-08-21

コピーとムーブが本当に難しい

どうやって説明したものやら。

2011-08-16

Firefoxがしかるべき方向に動いている

Mozilla takes Firefox version numbers to the next level… by removing them | ExtremeTech

Firefoxが、バージョン番号というものを、ユーザーには意識させないようにするそうだ。これは当然である。ブラウザーは、常に最新にしておくべきであり、もはや特定のバージョン番号に留まるなどということがあってはならない。

これは良い方向に動いていると言える。

2011-08-15

C++11という名称は定着するのか

C++0xのFDISに、どの国の支部からも文句がつかなかったので、めでたく正式なISO規格として承認された。それは今さら言うでもない。しかし、この名称は一体どうなるのだろうか。

もちろん、正式名称はC++である。しかし、規格ごとの区別をつけるため、我々は俗称を用いてきた。1998年に承認された最初のC++規格を、C++98と呼び、2003年にマイナーアップデートされた規格を、C++03と呼んでいる。C++0xは、200x年に正式に発行される予定だったので、C++0xと呼ばれたわけだ。それが、結局色々あり、2011年までかかってしまった。xは実は16進数なのだというジョークはさておき、一体どうなるのだろうか。こればかりは、規格で決めるものではないので、自然の成り行きをみるより他はない。

現在、C++11という呼称を、一部の人間が使っているが、果たしてC++0xより定着するのだろうか。疑問だ。

2011-08-14

日本語に句読点要らぬ

先日通俗三国志の本を得て読み侍りしが句読点なき由いと不審なりとはいへ本来日本語には句読点てふもの存せずまた読むに不都合なしさらば句読点てふもの畢竟無用なり。

2011-08-13

通俗三国志

今行われている、下鴨納涼古本まつりで、面白い本を見つけた。表紙には、軍談三国志と書いてある。中には、通俗三国志と書いてある。明治四十五年発行の本だ。興味深かったので買うことにした。

あとで調べたところによると、三国志演義の翻訳らしい。元禄の頃に成立したのだとか。内容は簡潔ですばらしい。興味深いのは、句読点が一切ないことと、御、申、候といった漢字に対して、特殊なくずし字のようなものが使われていることだろうか。それから、おそらくは「やう」だと思われる言葉が、「よふ」と表記されているのも気になった。また、細かいところでは、閑話休題のルビが、「あだしごとはさておき」となっているのが興味深かった。

それにしても、これはいい本を手にいれたものだ。昔、本の価値は文章量によって決まるのだと考えていたが、今は、簡潔な文章を好むようになっている。だらだらと長文を弄して説明するだけなら誰にでもできる。真の文章は、最低限の長さで内容を伝えることにあるのだ。吉川英治の三国志は、この点であまりよろしくない。いつも最期まで読もうとして、途中で諦めてしまっている。文章が無駄に長すぎるのだ。それが、この通俗三国志では、まだ44ページ目だというのに、もう呂布が死んでいる。かといって、三国志で重要な話を省略していたりはしない。なかなか表現力の高い文章だ。気に入った。

2011-08-11

例外オブジェクトとしてのクラス

追記。正しくは、例外オブジェクトは、コピーかムーブのどちらかをサポートしていなければならないというものであった。つまり、コピーするのならば、ムーブは必要ないし、ムーブしかできないクラスも、例外オブジェクトたりえる。したがって、この記事の内容は誤りである。

例外として投げるオブジェクトのことを、例外オブジェクトという。例外オブジェクトがクラスのオブジェクトである場合、コピーコンストラクター、ムーブコンストラクター、デストラクターにアクセス可能でなければならない。(たとえ、使われなかったとしても)

struct X
{
    X() = default ;
    X( X const & ) = delete ;
} ;

void f()
{
    throw X() ; // エラー、コピーコンストラクターにアクセスできない
}

しかし、これは非常にわかりにくいと思う。例えば、以下のコードは誤りである。

struct X
{
    X() = default ;
    X( X const & ) { } // ユーザー定義コピーコンストラクター
} ;

void f()
{
    throw X() ; // エラー、ムーブコンストラクターにアクセスできない
} 

なぜかというと、ユーザー定義のコピーコンストラクターがある場合、ムーブコンストラクターは暗黙にdefault化されないからだ。よって、エラーになる。どうやら、今のC++コンパイラーは、まだこの挙動を正しく実装していないようだ。

これは、コピーコンストラクターに限った話ではない。ユーザー定義のコピー代入演算子や、ムーブ代入演算子、デストラクターがある場合、ムーブコンストラクターは暗黙にdefault化されない。

また、暗黙のコピーコンストラクターは、ユーザー定義のコピー代入演算子や、ムーブコンストラクター、ムーブ代入演算子、デストラクターがある場合、default化される。しかし、この挙動はdeprecatedである。将来的には、廃止されるだろう。とすると、将来、C++の改定されたときに、以下のコードは動かなくなる可能性がある。

struct X
{
    X() = default ;
    X( X && ) { } // ユーザー定義のムーブコンストラクター
} ;

int main()
{
    throw X() ; // C++0xではOK。ただし、将来的には不安。
}

もちろん、これは例外に限った話ではない。C++0xで、暗黙の特別なメンバー関数が欲しい場合は、明示的にdefault化すべきだろう。

Walmartがオンライン音楽販売を停止

Walmart pulling the plug on its MP3 store, but not its DRM servers

Walmartが、オンラインでの音楽販売をやめるそうだ。すでに購入した客のために、DRMサーバーは残すそうだ。ただ、すでに中止されたサービスのためのDRMサーバーがいつまで残っているのかは、疑問だ。

DRM付きのコンテンツを買うということは、常にこの問題に悩まされる。したがって、我々が取るべき戦略は、DRM付きコンテンツをボイコットすることである。音楽など聞かなくても、死にはしない。第一、すでに著作権、著作隣接権とも切れた録音は、山ほどある。DRMの存在は、正規のユーザーに対する侮辱である。

2011-08-10

GMailのフォワード警告が全然消えない

最近、GMailはForwardするフィルターがある場合、警告を表示するようになった。これは、意図せずメールをフォワードするフィルターが何らかの方法で設定されてしまっている場合を考えてのことであろう。自分で設定しなかったフィルターは、なかなか確認されない。ましてや、大部分のユーザーは、フィルターを使っていないだろう。

ただ、私の場合、そのフィルターは自分で設定したものなのだ。どうも、私の父親は、私にメールを送る場合、過去のメールに返信するという形をとっているため、携帯に送るべき時でも、GMailに送られてくる。そのため、親から送られてきたメールは、携帯にも転送するようにしているのだ。

Googleが言うには、警告が表示されるのは、一週間程だという。ただ、もう二週間ほど表示されっぱなしなのだが、どうにかならないものか。あまりにウザイので、しかたなく、このフィルターを消した。

2011-08-07

二期はクソの法則

アニメの二期は必ずクソになる法則があるのではないだろうか。少なくとも、私の好きなアニメは、皆クソになっていた。

例えば、魔法陣グルグルだ。一期はすばらしかった。作画もネタも最高であった。ところが、二期はどうも毒が抜けたのか、つまらなくなってしまっていた。二次使用料の不払い絡みに関連する、ニケの声優の変更も痛かった。

THEビッグオーも、二期はひどかった。謎は謎のままにしておけばよかったと思うのだが、何もあんな方法で解決することもあるまいに。

.hackは.hack//SIGNしか認めない。

私のアニメの知識は、10年ほど前で止まっているので、最近のアニメについてはわからない。

もちろん、アニメに限らず、大抵の続編はつまらない。例外は本当にごくわずかしか存在しない。Back To The Futureなどは、稀有な存在であろう。

何故こうなるのか。思うに、二期を制作するにあたって、一期とまったく同じ制作環境が用意できるわけではないからだろう。

QuakeCon 2011 - John Carmack Keynote

90分間もある、John Carmackの講演。

25分経過、内容は、現行コンソールの貧弱なハードウェアに対する愚痴になっている。

32分経過、PCのハードウェアはコンソールの10倍も優れているのに、60fpsを保証できないことを愚痴っている。

ソースコードの静的解析ツールを熱烈に推奨している。

言語をHaskellとかOcamlに移行したいとも言っている。しかし、周りのプログラマーが全員移行できるわけではないので、やはりC++のサブセット(未初期化配列、未初期化ポインターなどの禁止)を使ったほうがいいと言っている。

モバイル向けのゲーム。モバイル機はハードウェアが貧弱なので、昔のハードでプログラミングしてた頃の知識が役に立っているのだとか。

2011-08-06

いくつかのアメリカのISPは検索クエリーをハイジャックしているらしい

Widespread Hijacking of Search Traffic in the United States | Electronic Frontier Foundation
I need to fill out a CAPTCHA to search google. - Web Search Help

いくつかのISPでは、Googleなどの検索エンジンへのアクセスが、DNS鯖への細工によって、不思議なプロクシを経由して行われるそうだ。このプロクシは、appleとかdellとかkindleとかの検索クエリーを検知して、検索エンジンではなく、該当の公式サイトなどに飛ばすらしい。それ以外の場合は、単にユーザーと検索エンジンとの間のトラフィックを通過させるだけなので、ユーザーはその存在に気がつかない。

技術的には、通常の検索クエリーを監視、記録したり、書き換えたりすることも可能である。実際、この不思議なプロクシを運営している会社は、そのような特許まで取得しているのだとか。

これは非常に危険だ。そろそろWebサイトは、常にSSLを使うということを、真剣に考えるべきだろう。