10月24日にJohn McCarthyさんが亡くなりました。


僕が今この仕事をしているきっかけを作ってくれた人です。
ありがとう。





そのきっかけを久し振りに探してみました。
ありました。 1983年5月のサインス誌です。






これを見つけるまで、マーチン ガードナーさんの連載の「数学ゲーム」だったと思ってましたが、ダグラス ホススタッターさんの「メタマジック ゲーム」でしたが、1回半ほどでLispを紹介していました。
それまでBASICしか触ったことがなかったので、こんな言語があることにかなり衝撃を受けたのを覚えています。
このあと、大学の図書館で本を探したり、処理系を手に入れようとしてあちこち探しまわったりいろいろしました。 処理系の方はかなり経ってLinuxをインストールしてGCLが使えるようになってから。

ずーっと僕の中で日の目を見ることのなかったLispですが、Clojureのおかげで、やっと表に出てこれそうです。



READ MORE

Clojureの並列処理(concurrencyとparallelismのことも)

Posted by YpsilonTAKAI On 2011年10月8日土曜日 0 コメント

incanterのことを調べていて、こんなのを見つけた。
だいたい1年前のポストなんだけど、Java1.7で予定(当時は)されていたFork/Joinを使った新しいClojureの並列処理機能についての解説のスライドの紹介記事。

このスライドはpmapの動作原理や、それに対する新しいpmap(pvmap)がどうよくなっているかなど書いてあって、Javaに疎い僕にはとても勉強になった。



ところで、このスライドはこんな文章で始まっている。

Concurrency is commonly mistaken for parallelism, but the two are distinct concepts. Concurrency is concerned with managing access to shared state from different threads, whereas parallelism is concerned with utilizing multiple processors/cores to improve the performance of a computation.
(下手訳)
Concurrencyはよくparallelismと間違えて使われているが、2つはまったく違うことなんだ。Concurrencyというのは、スレッド間で同じ状態を共有する仕組みので、parallelismというのは、計算速度を上げるために複数のプロセッサやコアを使うことを指しているんだ。


ああ、そうなのか。 だから、Concurrencyについての説明がrefやatomやagentやvarの話でであって、処理のpmapの話じゃなかったわけか。
やっとわかった。

でも、parallelismとconcurrencyって、日本語ではどちらも「並列(性)」って訳されていて、そういう意味の違いをうまく表わせていないよね。
alcで引いてみても、特に電算関連では、同じことが書いてある。だれか上手い訳を考えておくれよ。

parallel
【名】
  1. 《電》並列
parallelism
【名】
    平行、並列性、並行論、対句法、並列処理、平行度

concurrent
【形】
  1. 《コ》並列
concurrency
【名】
    同時並行性

READ MORE

GCJJの解説が出てるらしい。

Posted by YpsilonTAKAI On 2011年10月6日木曜日 0 コメント

GCJJ運営からメールが来て、予選の問題の解説が掲載されたらしい。

でも、くやしいから自分で納得できる解答ができるまで見ないよ。
見ないみない。


READ MORE

Code Jam Japan 問題A 解いた

Posted by YpsilonTAKAI On 2011年10月5日水曜日 0 コメント
Code Jam Japan予選のA問題。当日終ってから考えたロジックを実装してみた。
結果は上でき。 ということで、解説です。




その方法は、逆順でのトレース。
知りたい場所のカードが初めにどこにあったのかを考えるわけ。
図を書いたので、貼りつけ。



ソースはこれ



なんと、1秒以下で答がでた。


READ MORE

Code Jam Japan むずかしー

Posted by YpsilonTAKAI On 2011年10月2日日曜日 0 コメント

今日は環境を調えて、6時間みっちり Code Jam やりました。

結局 AとBのSmallだけしか時間内にできなかった。
Cの問題はそれほど時間がかからなそうだったけど、順番に解くのにこだわりたくて、でも、結局だめだったけど。
時間切れ後に、いちおう、CのSmallも解いてみた。

次回は、1つぐらいLargeが解けるようになっていたい。


問題が公開されているんで、一応僕の書いたコードを。



あら。 Gistって修正すると、貼ったやつも変っちゃうんだね。便利なような不便なような。
Gistベースで修正してるので、随時更新されます。
前のを見たい人は、下の方のリンクからGistに直接アクセスしてくださいです(10/7)


問題Aです。
最初は書いてあるとおりに解いた。Smallだと数秒で解ける。
修正版は、Largeでも250ms程度で解けた。 完了。




問題Bです。
最初からいちおうしらみつぶしでないやりかたを模索した。
現在修正中。


問題 C。
時間切れ後に解いた。 問題のとおり。でも、Small解くのに1分半くらいかかってしまう。
そのうち修正。


READ MORE