遠位項

小山龍介氏の講演を聞きに行った。
学生価格か3,000円ぽっきり。

不確実な時代で活躍できる人はどんな人か、という考えを語っていた。

面白かったのはポラニーという人の考えを解釈していたところ。

ラニーという人が、遠位項と近位項という概念を考えたらしい。
杖をついている人の意識は、杖の先(遠位項)にあるのだが、実際の感覚は手先(近位項)にあるはず。
遠位項から近位項への仮想的な情報の流れが考えられる。

ジャグリングで言うと、ボールが軌道の頂点にある時にはすでに取り方がわかるとか、そういうことになるのだろうか。

アインシュタインには相対性理論という遠位項が見えていたから
身近にあるものを相対性理論の証拠と見ることができたらしい。
ラニーはアインシュタインのようでない人、近視眼的な研究者たちを
「君の研究にはビルドがない」(世界観がない)と言っていたそうだ。

講演の対象は就活している人が大部分で、雇用の話が一つメッセージとしてあった。
雇用が流動化するのは間違いないが、
ネットワーク理論のスモールワールドのハブにいられれば
コミュニティと心中、ということにはならない、と解釈した。
そのためには予見する力、デザイン、アートが必要。

スモールワールドの指標って何だっけ?

無意味なスタックトレースの伸ばし方

JavaのThrowableがもつスタックトレースはThrowableオブジェクトがnewされたときに、
VMのスタックを見に行きトレースを埋めるという仕様になっているらしい。
Throwableのコンストラクタでは、nativeメソッドThrowable.fillInStackTraceが必ず呼ばれている。
そこで
再帰でスタックを積んだところで例外をnewするとスタックトレースを伸ばすことができる。
スローする場所は関係ない。

package hoge;


public class ThrowableExp3 extends RuntimeException{
	
	public static void main(String[] args) {
		Throwable t = makeThrowable(null, 10);
		try {
			throw t;
		} catch (Throwable e) {
			e.printStackTrace();
		}
	}
	
	public static Throwable makeThrowable(Throwable t, int n){
		Throwable t2 = new Throwable("throwable" + n , t);
		if(n <= 0){
			return t2;
		}
		return makeThrowable(t2, n-1);
	}
}

Throwableのcauseは、スタックの上から降ってきたThrowableをcatchして
下に投げるというのが普通の使い方。
スタックの下からやってきたThrowable(makeThrowableの引数)を原因にすると、意味がないトレースを吐くことができる。