過去の日記

2006-02-10 思考の枠を規定するもの [長年日記]

Firefox - Tab Mix Plus - Tab Rotation [memo]

F8キーを押すと、タブが勝手に切り替わっていく Tab Rotation モードになる。
……一体何が起きたのかと思った。何を押してそうなったのか判らなくて、終了させて検索してやっと探し出せた。

tDiary [etc]

見出しのURLに手が出せないでいる。
はてダで言えば、*t*で始めた行で、時刻がその見出し(tDiaryで言えばセクション)のa要素name属性に入る。
tDiaryだと全体的にp01,p02の様に振られてしまう。
ま、表記自体はstyleの方をいじってなんとかなったのだけど……、RSSの生成とかには変更が及ばない。一応 HOWTO-make-io とかは読んでみたのだけど、セクションのためのクラスにこれを明に指定できるメソッドはないらしい。そんなわけで makerss.rb あたりを読んでも、

def makerss_update
(略)
        diary.each_section do |section|
          index += 1
          id = "#{date}p%02d" % index
          if diary.visible? and !cache[id] then
            cache[id] = RDFSection::new( id, Time::now, section )


def makerss_body( uri, rdfsec )
  rdf = ""
  if rdfsec.section.respond_to?( :body_to_html ) then
    rdf = %Q|<item rdf:about="#{uri}#{anchor rdfsec.id}">\n|

とあって、順番に番号を振り出していてるんだなぁ。


と、いうことは、試してもソースを読んでもいないけどトラックバックあたりの方でもmakerss.rb と同じような格好になっていると想像がつくし、さてここで手を止めようかどうしようかという分水嶺にちょうどいるのだろう。

Ruby 多値の戻り値とか [tech][Ruby]

RubyではValuesというクラスで値の集合(配列やハッシュとはまた別のものというぐらいの意味)を扱うらしい。

なぜ、多値関数は人気がないのだろう - 檜山正幸のキマイラ飼育記

を読んで自分で調べたのと実験したものをメモしておく。


追記
なんで調べたかというとちょうど今Rubyを使っているところで、かつ、つい先日そういう様なメソッドを書いたつもりなのに期待通りに動いてくれなかったから。
「PerlやRubyでは当たり前」なこと自体は知っていた。


追記:2006/2/14

オブジェクト指向スクリプト言語 Ruby (ASCII SOFTWARE SCIENCE Language)

  • 作者: まつもと ゆきひろ,石塚 圭樹
  • 出版社/メーカー: アスキー
  • 発売: 1999-10
  • ASIN: 4756132545
  • メディア: 単行本
  • amazon.co.jp詳細へ

では「多重代入」という言葉で紹介されている。


def multi
  return 1,2,3
end

p multi.class.name  #=> "Values"

a, b, c = multi
p a #=>1
p b #=>2
p c #=>3

a, b = multi
p a #=>1
p b #=>2

a, *b = multi
p a #=>1
p b #=>[2, 3]
p b.class.name #=>"Array"


……しかし、

Rubyデスクトップリファレンス

  • 作者: まつもと ゆきひろ
  • 出版社/メーカー: オライリー・ジャパン
  • 発売: 2000-11
  • ASIN: 4873110238
  • メディア: 単行本
  • amazon.co.jp詳細へ

のRuby1.8対応版が切に欲しいと思う今日この頃。


追記:2005/2/14

Rubyソースコード完全解説

  • 作者: 青木 峰郎
  • 出版社/メーカー: インプレス
  • 発売: 2002-12
  • ASIN: 4844317210
  • メディア: 単行本
  • amazon.co.jp詳細へ

p229

右辺の値(のオブジェクト)をobjとおくと、

  1. obj が配列であればそれを使う
  2. obj に to_ary メソッドが定義されていればそれで配列に変換する。
  3. [obj]を使う

とある。
Valuesにto_aryメソッドが定義されているから上記の様な挙動になるのだろう。
現実、

def multi
  return 1,2,3
end
p defined? multi.to_ary  #=> "method"
p multi.to_ary #=>[1, 2, 3]

となる。
同じくp229

実は左辺,右辺ともに無限にネストできる。

a, (b, c, d) = [1, [2, 3, 4]]
a, (b, (c, d)) = [1, [2, [3, 4]]]
(a, b), (c, d) = [[1, 2], [3, 4]]

なにがなにやら……。
p414

Rubyで一番複雑な仕様はどこだ、と問われれば筆者は即座に多重代入と答える。多重代入の全体像を把握するなんて無理だ。そう思う根拠もある。ようするに、多重代入の仕様は仕様全体をきれいに設計しようなんてこれっぱかしも思わずに作られているのだ。仕様の基準になるのは常に「いくつかの典型的な使用パターンで便利だと思われる挙動」である。


追記
1.8 では Values はなくなり単なる配列(Array)になったようだ。

思考の枠を規定するもの [news]

後半部分を考える。
ネイティブな言語で物事の捉え方が変わる。
blogを書いている時の言葉遣い*1,人と雑談をしている時の言葉遣い,仕事の話をしている時の言葉遣い、それらは微妙に違っていて無意識にスイッチしている。
それは思考、物事の捉え方、他人が口にしたり記述したりした言葉や文の捉え方にも、やっぱり影響を及ぼすのだろうか?
と書いていて、そりゃそうだ、と思ってしまった。↑の様なことはblogを書いているこの瞬間ぐらいしか考えそうにない話だ。あとはカミさんと議論をしている時なんかもあるけど。


前半部分を考える。
ある物事を調べている時に、情報の元の性質に注意を払わなきゃいけない。情報はそれ自身が持つ意味*2以外にも、発信元や流通している場がバイアスとして受取り手に影響を与えるというわけだ。
googleならgooleのアルゴリズムというバイアス。
はてなならはてな市民(の中の積極的に回答する人たち)によるバイアス。
そういったものにも意識しなきゃならないんだろうな。

具体的には、学生諸君が提出するレポートなどを見ればわかる。課題となる対象のキーワードをグーグルなどのサイトで検索クエリとしてインプットして、得られる結果のページを幾つか切り貼りしたものばかりになりつつある。そこには、テキストやグラフィックスの切り貼りばかりではなく、例えばグーグルであればページランクというオーガニックな検索結果を左右するアルゴリズムが間接的に反映されているのだ。


結果、そんなレポートを制作した学生の思考の枠組みよりも、むしろ人工知能研究の成果として発展してきた検索エンジンの根幹を成す仕組みのほうが大きく影響するようになっている。それは、教育で獲得されるべき「物事の捉え方」や「理解の仕方」という側面が大きく抜け落ちつつあるということだ。本来、思考とは意識的・無意識的に学習された枠組みに大きく左右されるものであり、時としてネイティブである言語によって物事の捉え方自体が変わってくることは、認知言語学の研究成果によって明らかになっている。
思考の枠を規定するグーグル - (page 2) - CNET Japan


言語によって物事の捉え方自体が変わる、というのから連想したのは、

時の果てのフェブラリー―赤方偏移世界 (徳間デュアル文庫)

  • 作者: 山本 弘
  • 出版社/メーカー: 徳間書店
  • 発売: 2001-01
  • ASIN: 4199050353
  • メディア: 単行本
  • amazon.co.jp詳細へ

だった。

*1 広辞苑で調べてみると「ことばづかい」から「言葉使い」という漢字はでてこないんだなぁ。「遣う」という動詞にそもそも「言葉を用いる」という意味があるらしい。

*2 ただし、意味を見いだすのはあくまでも受取り手の方なわけで、情報がそれ自身に意味を包含しているのかどうか? というのはまた別に考えなきゃいけない話か。