Hoge Language

数日前からRubyを触るようになって、「ほげ言語のパラドックス」ってあるんだなと実感。
自分はPHPEmacs LispJavaScriptを触っていて、かつ好きなんだけれども、RubyにはあってPHPEmacs LispJavaScriptのどれにもないものとしてThreadがある。

例えば逆引きRubyのThreadの説明のこのコード

puts "Test start"

puts "Create thread"

t = Thread.new do
  puts "Start thread"
  sleep 3
  puts "End thread"
end

puts "Waiting for the thread to complete"
t.join

puts "Test compleated"

Rubyistには普通のThreadの処理に見えるのだと思うし、Javaな人にも同じだと思う。

PHPerな自分にだってThreadが何を意味するかはわかる。
けれども、Threadの部分のソースコードの挙動が"ソースコードの見た目的に"どのように見えるかというと、なんと自分にはWhile文的挙動に見えてしまっていた。なんかループしているようなイメージ。

当然自分だけなのだろうけれど、自分のなかで「ほげ言語のパラドックス」を実感した瞬間だった。

なんというかイメージがつかみにくいんだよね、慣れ親しんだ言語にないものって。


あげくのはてに今日は複数Threadで同じ共有リソースをいじりまくって競合を発生させてた。


んでもってMutexの機能に感動。