scala 2.6.0 がリリースされていた。折角なのでちょっとチュートリアルや Examples や言語仕様をナナメ読みして軽く勉強。
まだ全貌はわからないけれども、なかなか楽しい。そしてどうも全体的に OCaml っぽいニオイを感じる。……マルチパラダイムで関数型っぽいからか?
scala 2.6.0 がリリースされていた。折角なのでちょっとチュートリアルや Examples や言語仕様をナナメ読みして軽く勉強。
まだ全貌はわからないけれども、なかなか楽しい。そしてどうも全体的に OCaml っぽいニオイを感じる。……マルチパラダイムで関数型っぽいからか?
先日のアレについては予想通りそれなりの注目を集めたみたいなんだけど、思ったよりも波紋が広がったようなので、誤解を避けるためにちょっと解説を試みたい。
まず言っておきたいのだけれど、わたしには「マシン語を知らない子ども達」という文章を書いた shi3z さんを揶揄する気持ちはないのである。個人的には「マシン語」という表現にはひっかかりを感じるのだが、ハードウェアに近い低層の知識は必要でしょ、という指摘についてはうなずくところがある。
これは書いたあとで思ったのだが、「アルゴリズム」というものは広いスペクトラムにまたがっていて、一方の端は数学だが、もう一方の端は機械につながっている。簡単な例としては除算はコストが高いからビットマスクを使うとかそういうアレとか。そんなのは数学とはまるっきり関係ないけれども、すくなくとも今のわれわれのコンピュータにおいては真だ。だからまったくリンクしない話ではないわけだ(shiroさんの言うとおり TAOCP 最強論かもしらん)。
で、異論はないのだけれどわたしは不満もあった。機械語の知識というのは重要な面もあるけれど、一方で使うハードウェアに依存した知識の集積である。なんというかウェブを観察していて、それ以前なのでは、という状況もままあるような気がしたわけ。その一例が ruby-list のハッシュ表の話。
本題とは関係ないけど、個人的にはハッシュは今のままでいてほしい。OrderedHash がデフォルトになるのは個人的にはかなり気持ち悪い。Hash はハッシュのままで、既存のハッシュリテラルが OrderedHash になる、というあたりならオレは使わないからオーケーなんですが。
話を戻すと、 LL にはいろんなデータ構造が組み込みで入っているから、それがどういうアルゴリズムで動いているかっていうことをあんまり知らないママなんじゃないかという危惧がある。「車輪の再発明」云々の話題がちょっと前にあったけどあれも似たような話なのかな? つまり、アルゴリズムを自分で思いつくのは無駄かもしれないけど、どういう仕組みで動くかくらいのことは知っておきましょうと。
ところで、当の shi3z さんからツッコミを受けたのだけど、「そこまで軽視されているか」というと実際のところはわかりません。そういう現場で働いたこともわたしはないので。でも LL を使ってると、アルゴリズムやデータ構造の理解がおろそかなままでもわりとそれっぽいプログラムが書けてしまう。 Rails でちょっとしたサイトを立ち上げるのには、実はほとんどそうした知識もなくすぐ出来るし、少しの危うさを感じる。
実はこのネタは大昔に高林さんが「プログラミングのノウハウ」という題で書いていることに近い気がする。今回の話で「大事だよ」って書いていることは中国拳法の奥義みたいなもので、しかし奥義だけでは何の役に立つというものでもないと。
結論: だいたいさあ、プログラマのくせに論理回路も知らねぇとなると、このジョークすらいちいち説明してやらにゃならんわけ?
追記: ふとだらだら「OOエンジニアの輪!」を読んでたら、川合史朗さんの回のオチがこんなだった。
>後輩を見ていて感じるのは、最近は特にいろんなコンポーネントがブラック・ボックスになってきて、PC を組み立てるにしても、マザー・ボードや CPU を買ってきて組み立てれば出来ますし、ソフトウェアでもライブラリをつなぎあわせれば出来る。それは手軽でいいんですけど、若い間にブラック・ボックスの中身がどうなっているのかにも興味を持って欲しいな、とすごく感じるんです。それも程度問題で、私もチップを買ってきてやっていましたけど、じゃぁ CPU の中はどうなってるんだとか、その、量子力学でどうのってそこまでは行っていないですから、どこまでやるかなんですけど。それはもう、半ば趣味みたいな感じでさらっておくだけでも、きっと将来、システムを大きな眼で見る時に効いてくると思うんですね。
>で、ブラック・ボックスを組み合わせてやるのも楽ですし、本もいっぱい出ていますけど、そういうのは一応、ブラック・ボックスの中が判っている人が便利だから使うっていうのが正しいやり方であって、なんかわかんないけどとりあえず組み合わせればいいや、というふうにはなって欲しくないかな、と思います
まあ、こういう話の結論はそうそう変わるものではないよなあ。
あまりも当たり前過ぎて21世紀に入ってから言葉にだしたことはあまりないのですが、当然のことながら、プログラムというのは、アルゴリズムを理解して初めて「書ける」と言うのです。
プログラムが書ける、という状態は「アルゴリズムを理解する」という状態の延長線上にあるべきで、アルゴリズムを理解していないということは挙動を理解していない、つまりプログラムを理解していないのとほぼ同じだと思います。
最近はLLと呼ばれる、いわゆる軽量スクリプト言語がメインになってきていますが、それでも依然として、コンピュータというのはアルゴリズムで動くもので、プログラムというものは全てアルゴリズム論の延長上にあると思っています。
その意識がないと、たとえPHPやJavaScriptのコードを書いていても、不可解な動きをしたり、遅くなってしまったりしたときに「なぜだろう?」ということがピンとこないことになります。
まだ大学に入って無くて、趣味のプログラミングを楽しんでいる若い人たちには、ぜひアルゴリズムを勉強してみることを勧めます。
最近は素晴らしい時代になったもので、ごく初歩的な入門は Ruby on Rails でもすることができます。
しかし本格的にアルゴリズムで遊びたくなったら、数学や計算理論を使うのがお勧めです。
今の計算理論は複雑になりすぎていて、初心者が全ての理論を知ろうとすると膨大な時間と労力がかかります。
しかし、最終的にはそれは全て知らなければならないことですし、知っておくべきことです。
最近は、全くの文化系の女の子が、わずか数ヶ月の研修で「システムエンジニア」や「ITコンサルタント」と称してJavaのプログラムを書くような商売もあるらしいのですが、そんなときにもぜひアルゴリズムを勉強してもらいたいと思います。アルゴリズムが解らないと、そもそもメモリの構造やプログラムの動作の仕組みがわからないということなので、何が問題なのかわからないことの方が多くなると思います。
どれだけデバッガやコンパイラが進化しても、その仕組みを理解していることは絶対に必要です。
筆算ができない人が電卓を使い続けたときに答えが正しいのか間違っているのかわからないのと同様、アルゴリズムができない人が書いたプログラムは、一見うまく動いているように見えたとしても、それは奇跡のようなバランス、自転車で言えば補助輪がついた状態で奇跡的に動いているに過ぎず、なにか未知の問題が発生したときに素早くコンピュータ内部でおきていることに直感を巡らせ、適切な処置・対応をするためにはアルゴリズムの理解は不可欠と言って良いでしょう。
さらにいえば、アルゴリズムよりさらに下のレイヤーである、データ構造を理解しているとさらに理想的です。
昔、コンピュータプログラムの本といえばアルゴリズムの本を意味しました。しかし、今の若いプログラマ達は、下のような図をみても何を意味するか瞬時にわからないのではないでしょうか。(図は略)
プログラムは全てアルゴリズムの組み合わせでできています。
プログラムを構成する論理要素は全てアルゴリズムとデータ構造なので、データ構造を理解しないとコンピュータの動作原理を理解していないことになります。
最低でも、配列と構造体だけで衝突を考慮したハッシュ表を作れる程度の理解はしておいて欲しいと思います。
データ構造、アルゴリズム、C言語の3つは、現在でもあらゆるプログラムの基礎になっているので、最低限おさえておきたいところです。
最後に参考文献をまとめておきます。
ただ読むだけでもとても面白い本ばかりです。
計算機プログラムの構造と解釈 | The Art of Computer Programming Volume 1
see also http://d.hatena.ne.jp/shi3z/20070911
でもまああれだ、 ruby-list でハッシュ表についてヒートアップしてたのを傍観しながら、わりと素で↑のようなことを感じたことであるよ。
ところでこーゆーネタは既出じゃないよね?
前に書いてたやつね。竹内郁雄先生が『数学セミナー』誌上の「エレガントな解答をもとむ」で出題した問題。どうでもいいけど解答は提出しわすれてしまった。B5の紙に印刷しなきゃいかん、という時点で相当に萎えてしまった。
さて、この問題ではa-zという26種類の変数があり、各変数には初期でそれぞれ非負整数が入っている。また以下のような命令が用意されていて、変数の値を操作できる。
問題は「xとyのうち小さい方の値をzにコピーする」プログラムを書くことであるが、問題にはまだ続きがある。プログラムにはコストが設定されているのだ。上の3つは1両、下の2つは3両というコストがかかる。これはプログラムのコストなので、実行回数とは関係ない。 yz x(+z) のコストはコピーが1回、インクリメントが1回、繰り返しが1回出現しているからトータルコストは5両になる。
加えて、プログラムの実行終了後に目的となる z 以外に値の変化している変数が1つあるごとに1両、コストが増える。また、 x と y の値はもとの値のままでなければならない。
さあどうしますか、という問題である。
ちなみにわたしの解答は xvyw0zxcc[0cvawba[b[+c+z0b]0a]0a0bv(b[0b+a]+b)av0a0bw(b[0b+a]+b)aw]で、これは49両のコスト。
レモネードBOOKS (1) | レモネードBOOKS (2)
| レモネードBOOKS (3)
最終巻。
この本はビブリオマニアなオトコノコとフツーなオンナノコの軽い恋愛ものなわけだけれども、なんというかですね、ピュアなのよね。「読書が趣味」な人々の生態という意味では先日に紹介した『今日の早川さん』に似ているのだけど、早川さんたちみたいなヒネた視点はまるでなくて、ああいうものに共感して読んだあとにこれを読むと、あまりの真っ直ぐさに眩しさすら感じることであるよ。
しかしまあ、わりと素直なわたしはいつもいつもヒネているわけではないので、こういうピュアなまんがもそれはそれで心地良くわたしの心に染み入るのだけれど。それにまた、現実的にはありえないメルヘンだとしても、メルヘンにはメルヘンの良さってもんがあるよね。特に最後の最後なんかいかにも山名沢湖しか描けないようなメルヘンだよなー。や、楽しみましたよ。
今回の巻ではラクガキの話と岩田君の元彼女の話が面白かった。特に「趣味が似てると思ってつきあってみたけど相手の方が遥かにレベルが上なので疲れてしまって別れた」という元彼女の話は、ほろにがくも爽やかでよかったことです。
全体としては朝霞さんと友人氏のエピソード群が好きです。
ワールドコンでは「海外との交流はなかった、できなかった」などとオレは書いていたが、id:cataly の日記なんかを読んでるとそうでもないと思った。
そういえば、会場でたださんと何度か遭遇しましたがほんとうに会釈程度で別れてしまったし。全般的にシャイなあんちくしょうだった。これではいかん。と、思いました。
アメリカのファンジンと日本の同人誌についてもう少し詳しく。同人誌、といってもコミケで多く売られているものというよりは日本のSFファンジンみたいなもの。ああいうのには批評(感想)とかレポートなんかも載るけれど、創作や翻訳なんかが載る(まんがの同人誌なら創作か二次創作がほとんどでしょう)。しかし、アメリカではファンジンに創作が載ることはないのだという。小説を書いたらみんなプロジンに投稿しちゃう。
ファンジンは gift (贈り物)なのでお金も取らない。フリーペーパーみたいなものだといっていた。ちなみにジョン・ハーツさんは毎週刊行していて、しかも購読者は300人以上いるというのだが、その仕事は滅茶苦茶手間がかかるはずである。しかもフリーだというが印刷はもとより送料込みである。これはこれでモノスゴイ話である(まぁ日本にも阪上さんのまねきねこ通信みたいなスゴイ話には事欠かないが……)。
またファンジンは for communicating ということで、編集者のもとに届いた便りに対する返信とかも載せていて、ファンジンコミュニティを形成している。そーゆーものなのだという。ジョン・ハーツさんのファンジンは表裏一枚というとても小さいものでしかないんだけど、ここに自分の読んだ本の感想とかイベントリポートなんかを載せつつ、読者の人から来たコメントへの返事をして、ある種の議論を続けていたりするのだという。
それってほとんどブログと同じじゃん。ブログだ新しいコミュニケーションのかたちだなどと僕らは思いがちだけれども、テクノロジの発達で伝達速度こそ速くなったりコストが低減したりしたとはいえ基本的にはアメリカの趣味人たちはもう50年以上前からふつうにそういうことをやってきたのである(日本にもミニコミ誌とかはあるわけでこれは似たような感覚だろうが、やっぱり少し文化が違うようにも感じた)。
もちろんこれはハーツさんのファンジンの例なのだし、日本の同人誌文化を見て自分たちも似たようなことをしたいアメリカのアニメファンたちもいたり、いろいろあるわけで一例から総論に移るのは危険なんだけど。でもやっぱ「文化がちがーう!」って感じで面白かったなあ。
iPod Touch はけっきょくわたしも注文した。いろいろ考えるに、こちらの iTunes では音楽は 10GB くらいしか持ってないから何とかなるかもしれないし、PDA的なものは持ってないので軽量で wifi なああいうツールもあれば便利かもしれないし、などと悩んでいたところに増井さんの技術が入るというのが後押しした感じ。
ところでわたしは刻印とかは要らない人なので買うなら amazon だろーな、と思って注文一歩手前まで行ったのだが、けっきょくやめて apple からネット直販で注文した。なぜというに、わたしは amazon の調達能力を全く信用していないからだ。洋書が本国で発売されているのに発売されていないことになったり、挙句のはてに調達できなかったと抜かしたりしたことは何度もあった。予約品で数が揃えられなくなったというトラブルも何度か聞いたことがある。
iPod Touch は注文する人も多いだろうし大きなトラブルになることは考えにくいのだが、でもやっぱりちょっとイヤな記憶が蘇って迂回してしまったという感じ。
ワールドコンに来た有名なアメリカのファンの一人、ジョン・ハーツさんという人がまだ日本にいて、日本のいろんなSFファンと交流をしたいらしいということで突発的に開催された囲む会に参加して、すみっこでいろいろ話を聞いてきました。
語り口は柔らかくてゆっくりめの日本人にわかりやすい英語をしゃべってくれるのですが、ひとつの質問に対して少なくとも30分くらいは延々としゃべりつづけるという人で、面白かったけどキョーレツでした。
いろんな話をしてましたが、面白かったのはファンジン文化みたいなものと、ゴースト・オブ・オナーの話かなぁ。ファンジン文化ってのは、日本の同人誌/SFファンジン文化と似たようなものだろうと思っていたのだけれど、ぜんぜん違うんだなあと得心しました。どっちかというとあれね、数人でいっしょに文通しているような感じなのかな。
ゴースト・オブ・オナーというのは、アメリカのゲスト・オブ・オナーをもじったジョークで、たとえば93年にサンフランシスコで開催された confransisco というワールドコンでマーク・トゥウェインがゴースト・オブ・オナーってことになってたと。そんでファンで役者の一人がワールドコンのあいだじゅうずーっとマーク・トゥウェインの格好をしてうろうろしていたのだそうで。で、その期間中にジョン・ハーツさんがヒューゴー賞セレモニーに出席するために正装に着替えて、セレモニーが終わったあとにうろうろしていた午前2時、会場とホテルのあいだの道端でそのマーク・トゥウェインにバッタリ遭遇したと。マーク・トゥウェインの「中の人」はハーツさんの旧来の友人だったのだが、自分もいかにも19世紀の人みたいな正装なので、マーク・トゥウェインと、そういう立ち話をした。しかもマーク・トゥウェインがサンフランシスコにいたころはまだ若くて新聞記者とかをやってたころという設定なので、まわりにギャラリーとかそういう人はまったくいないのに、しめしあわせたかのように彼の記事の読者という設定で記事について立ち話をして(現代の素に戻ることはいっさいなく)そのまま別れていったりしたとかなんとか。そういう真剣な遊びはオレは好きだぜ。
ほかにもヒューゴーの規定の話とか、ファンタジイとSFの定義の話とか、いろいろ面白い話がいっぱいきけました。楽しかった。
coco’s bloblog のまんがの書籍化。
出る前は「早川よく決断したなwwww」という気分3割くらい、「こういう時流に乗っかってみました感満載ですなぁ」が6割くらいで楽しみ度は1割くらいでしたが、読んでみたらやっぱり良かったね。うむ、これほど「出てよかった」と思える書籍化は(個人的には)なかったかもしらん。
オレはそもそも web 上のまんがを安易に書籍化して売るというスタイルが嫌いで、なぜかといえばだいたいこういう web 上のまんがというのはリソースが少ないので、ぜんぶをかき集めたとしてもひじょーに薄味な本になるわけです。1ページに平均すると4コマ1つ以下、みたいな。
けれどもこの本の場合、というか、もともとはコネタとして始まったこのシリーズの場合には元のまんがのエントリには作者の声というのがある。それを4コマの脇にコメントというかツッコミとして配していて、量が足りないとかいったような残念な感じが払拭されているのが好印象。もとと同じように楽しめて満足でした。
ところで、この一歩引いた目線からの作者の冷静なツッコミ、というのがこのまんがの妙味だったのだなあというのも改めて思った次第。というのはどういうことかというと、このテのマニアというのは自分を見る冷静な視線というのを持ち合わせているとオレは思う。あるモノに夢中になってる自分と、「そんなモノに夢中になってるオレ」を見つめる自分と、両方が同居しているのだね。
『今日の早川さん』では、登場するキャラたちもわりとそういうメタっぽい視点は持ってるんだけど、それに加えて作者の脇からのツッコミがあることで、読者は両方の視点で読むことができるのだなあと思った。だからこそ、おたくというかマニアというか、まあ何でもいいんだけどようするに「同類」な皆さまが共感を持って読めるのかもなあ、なんて思ったりして。
だからさあ、オレは『啓示空間』が出たころから「レナルズは短編は面白いけど長編はだめだよね」って言ってきたわけですよ。ってそんな勝ち誇るほどではないのだけれど(というか当時から短編も既読の人はたいがい似たようなことを言ってたかも)。
あまりのブ厚さに多くのSF者がド肝を抜かれ、そしてけっこう多くの者が挫折した『啓示空間』という本の著者がアレステア・レナルズだ。『啓示空間』には同一世界観の作品があり、そのひとつが『カズムシティ』というタイトルで刊行されている(原書ではもっといっぱいある)。本作『火星の長城』もそれらと世界観を同じくするシリーズの短編集だ。ちなみに本書に掲げられたシリーズタイトル《レヴェレーション・スペース》ってのは『啓示空間』の原題 Revelation Space のことだね(英米でもこのタイトルがシリーズ名にも使われているようだ)。
原書では一冊の短編集に2冊の中編が発表されているものを作品内の歴史順に並べなおし、二分冊として編みなおした一冊目が本書。続いて『銀河北極』と題した短編集が刊行予定らしい。
で、最初の段落にもどる。
レナルズは物凄い小説巧者というわけではない。といってもけなすつもりがあるわけじゃなく、そんなにヘタなわけじゃない。実は『啓示空間』もオチまで読んだらけっこう面白かったし『カズムシティ』だって部分部分がそんなにひどいわけじゃないんだ。読むに耐えないというわけじゃない。
ただまあ、基本的には一本調子というか、なぜこんなに長いのかわけもわからないまま金太郎飴のように長い。だから読んでいて疲弊してしまう。けれども短編ならそういうこともなく、ちょうどいいところでちょうどよく終わってくれる。だから本書はいろんな読者にかなりオススメ。シリーズのファンという奇特な人はもとより、『カズムシティ』はさすがに挫折したという人にも、シリーズなんてぜんぜん読んでませんという人にも安心して勧められる作品になっています。
ところで、べつに驚くようなことでもないけどレナルズのベースはわりと伝統的なSFだ。意匠として、集合的意識を芽生えさせてしまった「連接脳派」とか行き過ぎた身体改造を行う「ウルトラ属」とかヘンな連中がいっぱい出てくるけれど(『啓示空間』でも、尺八でブン殴る虚無僧とか、いつも水槽のなかで生活をしている水棲人とか、そういう謎のコネタが一杯あって楽しい。ま、だから長いのだが)、それにしたところで物凄いヴィジョンというわけじゃなくて、あくまでも楽しいコネタなわけだ。そして、そういう部分を剥ぎとってしまえばさらにふつうの話になる。「火星の長城」は迫害された者たちの脱出、「氷河」は来訪した惑星の謎の解明、「エウロパのスパイ」は内惑星連合からのスパイがエウロパに潜入するエスピオナージもの、「ウェザー」なら交流不可能な異種族間の心の交流ってところか。
でもまあ、やっぱり読めば面白いわけだし、そういう一言では簡単に済ませづらいところもある。オチはわかっていても「氷河」みたいな話はオレは好きだし、「エウロパのスパイ」もけっこう好きだ。どの作品もわりと高い水準で安定していると思う。いやあ、よく出来た短編集なので二冊目も楽しみです。
それから、S-Fマガジンで読んだときにはけっこう間に時間があったのでそれほど感じ入らなかったのだが、こうして続けて「火星の長城」と「氷河」を読むと意外にもぐっとくる。そういう話でもあるのだなあ。
……
と、いうことでもいいんだけど。
本書で読んでて一番印象に残ったのはしかし、おおよそ全体の3分の1ほどを占める中編「ダイヤモンドの犬」。死んだと思っていた旧友と再開した主人公は一筋縄ではいかないメンバーとともに、とある惑星に発見された塔に挑む。この塔というのは、おそらく現存しない異星人のもので、内部はいくつもの部屋に分かれている。下から入っていくと一室ごとに数学の問題が提示されてはそれを解くことで登っていくというものだったが……(むろん失敗したら死の制裁)という話。
いったい塔とは何で、異星人は何が目的でこんなものを作り、旧友はなぜこの塔の征服を目指しているか?という謎があるのだが、どちらかといえばそんなことよりも塔の難問や制裁に対応していくために身体改造が進行していくあたりの描写や、「なんだかよくわからないモノに何故わざわざ挑むのか?」というあたりがメインなのだな。そういうあたり、「伝統的なSF」のお作法からはけっこう外れていて、わけのわからない魅力をちょっと感じた。
まあ、いずれにせよ、やっぱり短編を読めば読むほど「レナルズは短編だけ書いていればいいんじゃないかなあ」と嘆息せざるをえない短編集でありましたよ。
touch はさわってみたい。いじってみたい。
しかし欲しいかっつーと、そんなに物凄く欲しいわけでもないなあ。欲しいのは Classic の方か。わたしは80GBくらいでいーんだけど、やっぱり iTunes に入れてある曲はひととおり sync しておきたいんだよね。そういう使い方をするアイテムだということになっているので。
いつになるか知らんけど入荷したらば渋谷あたりの Apple Store にでも行けば触れるから、それで満足する気がするよ、わたしは。
ところであんま関係ないけどそういえばワールドコンでは新型の iMac が置いてあったよね。「おおっ」とちょっとだけ思った(しかし L.A.con IV のPCスペースに置いてあるデスクトップマシンがほぼ Ubuntu だったのを見たときよりは感動が薄い)。