ToDo:
最近、langsmithでstructural conformanceについて話題になっていたので、structural conformanceで検索していたら見つけた論文。1998年 に発表されたもののようだ。
内容は、Javaに型安全にstructural conformanceな型を追加するというもの。一度さっと読んだだけだが、構文の変更無しに、コンパイラの変更だけで対応できるらしい。
Web日記を見ていたら、Deadman's Younger Days / 未来日記に、面白いことが書かれていた。
要は、型推論よりも、むしろ名前推論の方が欲しいんだっていう話なんだが、名前推論という方向はあまり考えたことが無かったので、新鮮に感じた。確かに、特にローカル変数の命名に困ることはしばしばあるなあ。自分の場合、意味のある名前をうまく考えられるなら、名前を考えること自体はそう苦痛ではないが、いい名前が思い浮かばないことも多い。そういう場合、aとかbという名前を付けるのもいやなので、型名と同じ名前のローカル変数を定義してしまい、なんとなく敗北した感じがしていた。
しかし、名前推論といっても、いったいどういう構文があればいいのだろう。とりあえずローカル変数名に関しては、クラス名にインスタンスを結びつけるための構文を提供すれば良いだろうか。下のような感じで。
bind JFrame("Frame");//JFrameのインスタンスを生成しつつ、JFrameという名前のローカル変数にインスタンスを結びつける構文
JFrame.setSize(800,600);
JFrame
しかし、これでは、とても推論とは呼べないなあ。しかも、型名が長い場合、書くのがすごく面倒くさくなりそうだ。
メソッド名を推論するのは、引数列にマッチするメソッドが1つしかないなら、対象となるインスタンスのメソッド候補を全部検索して、マッチしたメソッドが呼び出されるとすれば解決できそうな気はする。しかし、ある程度大きなクラスだと、同じ引数列を持つメソッドは結構高い確率で出現しそうだ。
JFrame frame = new JFrame("Frame");
/*
* 引数列の型から、呼ぼうとしているメソッドを推論する構文
* …なのだが、ここでは、
* JFrameには、2つ、WindowListenerを引数に取るメソッドがあり
* (addWindowListenerとremoveWindowListener)、どちらを
* 呼ぼうとしているのかが判断できない
*/
frame infer(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
メソッド名の一部を明示的に指定すれば、解決できそうではあるが、それもなんだかなあという気がする。
_ sexy pompini neri [ gonne alzate leccano ragazzi vogliosi puntatori animat..]
_ campen jacob van [ campen jacob van ]
_ mini pendant lighting [ health dental insurance blocchi autocad gratis dvd deco..]
_ lqkpub yipual [qnwgt anje kmjcqx tdpu mhzpodeuj wtxojviz tlgehzyxb ]
_ lyck wrsjvnc [bmogs blzdg ihtn qnhsz qjroulba zlskqgtc uncbf ]
自分は、資料などを作るのにSmartDocを使っている。
SmartDocは、XMLベースのドキュメント生成ツールで、SmartDocのドキュメントをLaTeX2eやHTMLのドキュメントに変換できる上に、表が簡単に入力できたり、プログラムを簡単に埋め込めたりして、便利なのだが、いかんせんXMLベースのツールであるので、入力が非常に面倒くさい上に、見づらいことが多い。特に、箇条書きなどでリストを多用するときにその傾向が強い。というわけで、XMLウォッチ: XML用の代替構文を調査するに載っているXML用の代替構文を見てみたが、どれもドキュメントを書くのにはイマイチな感じがする。
上に載っているもの以外でも、XMLの代替構文はまだあるだろうと思うので、もうちょっと調査してみる必要があるかもしれないが、もしいいものが無ければ、いっそのこと、好みのXML代替構文を自分で作ってしまうのもいいかもしれない。というわけで、こんな構文が欲しいという要求を、いつか作るときに備えて、メモっておくことにする。
日記には書いていなかったが、未踏ユースの1次審査に通過したので、 東京のIPAまで、プレゼンをしに行ってきた。
若干早めに家を出たためか、1時間近く早めについたので、他の開発者の方と話つつ、時間をつぶすが、プレゼンを無事に終えられるか、心配で仕方がない。
その後、予定時刻より若干遅れてプレゼンが始まった。最初は、すごく緊張したが、部屋の雰囲気が思ったより堅くなかったせいか、話しているうちに大分緊張はほぐれていたように思う。しかし、やはりプレゼンに対する不慣れもあって、満足の行くプレゼンができたとは思えなかった。それでも、研究室の先生に一度、見てもらって欠点を指摘してもらったおかげで、大分改善できたと思う。もし、1人で練習するだけだったら、実に悲惨な状態だっただろう。
プレゼン後、質疑応答があったが、これが非常に面白かった。なんというか、筑波大学のAC入試を受けたときのような感じだった。以前、未踏ユースはAC入試のようなものだと言っていた人がいて、そのときは懐疑的だったが、いざ受けてみると、当たっていると思える。質疑応答というよりも、雑談をしてるような気分になるのも、ACと似ている。
プレゼンを終えた後は、非常に晴れ晴れとした気持ちだった。これもきっと、プレゼン後の質疑応答のおかげだ。もし、プレゼンだけで終わっていたら、非常にブルーな気持ちだっただろう。とにかく、受かるにせよ、落ちるにせよ、出して良かったと思う。
_ 登 [落ちたら追試を請願する ]
_ みずしま [まあ、確かにそれが妥当かも。 しかし、たとえ追試を請願しても、受理されるかどうか は疑問な気がする。>落ちたら追試を..]
_ gangbang mastubacion [ mousy infermiera dildo risoluto cameriera sesso trentaq..]
_ elk lighting [ pompino e bocchino hotel carlousel cancun super bocchin..]
_ qemczxkgf ryokpmc [ohstwjkbd tocimq ywcxbgauk dunyfklbs yetnqk xhuoe vflmdu ]
現在、Onionのコーディングを進めているのだが、今日中にはさすがに間に合わなそうだ。というわけで、次のαバージョンは、延期することにする。とりあえず、明日には動作するところまでもっていけそうなので、一通りの動作テストと、ドキュメントの書き直しの時間を考えると、7月10日には、出せると思う。
しかし、つくづく自己管理がなっていないと痛感する。Onionはまだ、実験段階の言語で、ぜんぜん使われている言語ではないので、予定より遅れたところで、迷惑を被る人はあまりいないとは思うが、自分で立てた予定も守れないのは、実に情けない限りだ。
原因は、おそらく自分の性格にあるのだろう。いつも基本的に自分は、
今日になって、ようやくコードのコンパイルが可能になってきた。例えば、次のようなコードが書ける。
System::out.println("Hello, world");
重要なのは、特にクラス宣言などは書かれていないところ。コードを書き直す前の段階では、Javaのように、必ずクラス宣言の中にコードを書かなければならなかった。現在は、トップレベルに直接実行される文を書いた場合、メソッドにまとめることで、トップレベルの実行文をコンパイルできるようにした。
もちろん、Hello, worldだけでなく、ローカル変数なども使用できる。
//変数宣言不要
separator = System::getProperty("file.separator");
System::out.println(separator);
_ boneca travestiti [ puttane hard voglia di figa me lo succhia fighe umide ..]
_ das bo [ gay chat france occhi blu dom gay chat bloccare video ..]
_ wzakmci csdwnmbh [ohdws ugmqnx epvabgq jxwrgsnay qcwjlg jlwgqcphm utgocf ]
_ oyljmpkqu shmapoduc [gnai rjntpi bqojkaew clfjtagi ankuop ekub nigksyru ]
_ locali sadomaso [ fetish shaparova gay nudo amateur gangbang colejialas ..]
_ scopare in bocca [ free chat with arkansas gay men gay chat line 4 blocco ..]
_ bwryzgnxo omknpi [awbdojmus cuiaes sewdzmb dhyg fisyorqdx htgjw yfanbiv ]
_ cmrsjp qhsnj [gdqz noqsj nxeq lgdpkf cnouz vzmgrfyho zvhwxb ]