柴田克彦『山本直純と小澤征爾』

晴。

昨日 Go言語で書いたコードに手を入れたり、Ruby に移植したりしていた。検索などしてみると、N-queens 問題を解くものとしてはかなりうまく書けたのではないかとちょっとうれしい。コードが短くてまずまず高速だと思う。

ちなみに 8-queens 問題というのは、チェスの盤面(8×8)に、8個の「女王(queen)」の駒をお互いに取られない位置に置くというものである。チェスの「女王」は将棋の飛車と角をあわせたようなもので、前後左右斜めにどれだけでも進めるというものだ。N-queens というのは、その盤面が N×N になり、置く女王も N個になる。Nが大きくなるにつれていわゆる「組み合わせ爆発」が起こり、解の総数が膨大になっていくという特徴がある。ちなみに 8-queens での解の総数は 92個である。

Ruby だとこんなコードになる。

def get_space(field)
  result = Array.new(N, true)
  l = field.size
  field.each_with_index do |qn, i|
    result[qn] = false
    dst = l - i
    result[qn - dst] = false if qn - dst >= 0
    result[qn + dst] = false if qn + dst <  N
  end
  result
end

def solve(field)
  if field.size == N
    @count += 1
    puts "------------------"
    puts "n = #{@count}"
    field.each {|qn| puts ("." * (N - 1)).insert(qn, "@")}
  else
    get_space(field).each_with_index {|sp, i| solve(field + [i]) if sp}
  end
end

N = 8
@count = 0
solve([])

ツバメ来た! 毎年巣を架ける古いアパートの入り口へ飛び込んでいったのを見た。覗いたらすごい勢いで飛び出してきましたよ。ここってあるツバメの世代が子孫へ受け継がれているのか、関係ない個体なのか、ずっと昔からである。

図書館。市民公園とか新境川堤とか、桜が満開なのでたくさん人が出ている。駐車場の空きがないかと思った。



 
ミスタードーナツ イオンモール各務原ショップ。シナモンリング+アイスコーヒー378円。『山本直純小澤征爾』という新書本を読む。山本直純という人は真価がよく知られていないけれど天才だったという話と、山本直純小澤征爾の友情についての話。ご多分に漏れず自分も山本直純ってのはおもしろおかしい人なのかなくらいの認識だったが、どうもそうではなかったと。まさに毛並みの正しい音楽の天才。また小澤征爾も「天才」はそうなのだけれど、「努力の天才」ということで、小澤自身、直純は自分よりはるかにすごくて、対抗心などあり得なかったと言っているそうである。実際小澤に最初に指揮を教えたのは直純だったらしい。まだ少ししか読んでいないけれど、感動の連続である。さても、小澤というのはどうもものすごく人なつっこいひとらしく、彼の前に次々に「運が開けていく」のも、それこそ運と才能のためだけではなかったのだと感じる。

フードコート、既にちょっとエアコンが効きすぎ。


図書館から借りてきた、柴田克彦『山本直純小澤征爾』読了。感動的な本だった。本書を読むと、山本直純という人がもっと知られていいというのは当然な気がする。音楽というのは美しく楽しいものだと、そして全身全霊をかけて付き合える存在であると、そんなような音楽観をもっていたような人である気がする。小澤征爾という人はそれとはだいぶちがうようにも思えるが、その二人が堅い友情で結ばれていたというのが不思議である。少なくとも小澤は、音楽に関してはかなり堅苦しい人で、マジメ一方の人だから。で、自分も含め、やはり小澤みたいな人がえらいとつい思ってしまうわけで、山本直純が晩年は次第に忘れられつつあったというのは、さみしいことだと思った。どうもごめんなさいという感じである。山本直純は残した曲が4000曲以上といい、これからは少しづつでも聴いていけたらなと思う。いい本でした。

山本直純と小澤征爾 (朝日新書)

山本直純と小澤征爾 (朝日新書)

www.techradar.com
最後の一文を読んで思わず目頭が熱くなってしまった。これは僕は Ruby が好きだからだけではあるまい。まあどんだけ Ruby 好きなんだよと思うくらい好きではあるが。17歳のときに「僕の理想の言語」を(いまでは失われた)ノートに書いたときからいまでも変わりなく、まつもとさんは「プログラミングが楽しい」のだ。だから25年間 Ruby の開発を続け、52歳になり、さらに次の25年に臨もうとしていると。まだ Ruby は死んでいないと。僕も初心者ながらプログラミングが好きで、これは何なのかよくわからないけれど、「プログラミングは楽しい」というまつもとさんの気持ちは少しはわかる気がする。ホント、ただプログラムを書いてそれが動くだけで、何が楽しいのだろう。でも、ここには独特の愉しみがあることは確実である。それが悪いものだとは、どうも自分には思えないのだ。

しかしまつもとさん、そんなに悲観しなくてもいいのではないかとも思うけれど。この魚拓を見ると、最新のインデックスで Ruby 悪くないよね。記事も Ruby の再トップ10入りの話から始まっていて、この上昇はホンモノじゃないのという分析である。まあ、Ruby の人気はよくも悪くも Rails の影響が強すぎるので、僕はそれは仕方がないと思うけれど、それで Ruby のすばらしさがともすれば忘れられるならつまらない。Ruby がすばらしいから Rails があるのだというのはわかるが。

僕は最近 Go がなかなかいいと思っているのだけれど、まだこんなランクですか。Java が一位だが、あれはお仕事むけの言語という気がする。C# とかは自分のような初心者でも使いやすいけれど、個性に乏しいし、何より Windows 向けだな。特に使おうというモチベーションがない。C言語は初心者が使いこなすのはむずかしいけれど、このところちょっとわかってきた。ちょっと C で書きたくなってきた。PythonRuby とガチンコでぶつかっていて、Python の優位は揺るがず、さらに差がついている。でも正直言って、Ruby を使うわたくしにはまったく使うモチベーションがない。優れた言語だけれど、僕の遊ぶ領域では Ruby の方が(自分には)明らかによい言語。しかし Python にはどんなツールでもあるのだよ。使ったら便利なことは明らか。PHP? やる気なし。文法書を読んだだけ。C++? 怖そうで使ったことがない。Swift は Apple の後ろ盾があるのに意外と伸びていないな。自分にはむずかしいし、コードの字面があまり好みではない。

と見ていると、やはり Ruby は頑張っている。世界中で確実に愛されていますよ。

↑といろいろ書いたけれど、ある言語をうまく書く人は、他の言語もうまく書くことが多いよね。ということが最近少しわかってきた。チューリング完全性を備えた言語は、原理的にはどれでもやれることは同じだし。だからアルゴリズムを勉強することは大切なのだよね。そして、様々な言語をうまく使う人は、ある言語のクセを見抜くことも早いようである。僕が Ruby に感じるのは、Ruby はプログラミングのロジックを「自然に」書くための柔軟性が際立っているということである。そしてコードが簡潔で読みやすい。余計なことを書かなくて済むようになっている。逆にいうと、「余計なこと」をいっぱい書いてコードの安全性を高めるというアプローチもあって、最近はそちらの流れの方が人気がある。必要なプログラマの絶対数が多くなってきて、経験の少ないプログラマが安全なコードを書かねばならぬ時代になってきたからね。それに、チームで「製品」を作らねばならないし。ビジネスですよ。Ruby はそのあたりが弱そうに見られているので、コアの人たちが頑張っているのだ。ってエラそうに書いたけれど、自分は初心者です!