«前の日記(2008-01-24) 最新 次の日記(2008-01-26)» 編集

Matzにっき


2008-01-25 [長年日記]

_ 取材

某新聞社から取材。先日のとは別の新聞社。

事前に良く調べていらっしゃって感心する。 話が早くてありがたい。先日の取材とちょっと内容かぶっちゃったけど しょうがないよね。私は一人なんだから。

_ 講義

島大講義。後期のRuby講座の最終回なんだそうだ。 最終回とは認識してなかったな(いいかげんな講師)。

テーマは「Rubyの今後」。 でも、Rubyの今後というか、 Rubyのご先祖とこれからのテクノロジートレンドとかいうような話だったな。 Rubyに限定した話ではなかったような。 学生さんがどのくらいわかったかは疑問だけど。

しかし、スライドが100枚近くあって、 サンプルプログラムがLispとSmalltalkしかないってのはどうよ。

_ まつもとゆきひろと語る会

講義後、法文学部主催で「語る会」も開かれる。 地域振興やIT産業、また閉ざされた日本、みたいなテーマから Rubyそのものにいたるまでいろんな話をつまみ食い、みたいな。

たのしかったけど。ちょっとくたびれたかな。

_ [言語] その文字列はセーフ? 本当は奥深いデコード処理 − @IT

PHPの文字列処理の話。

ジュン:特に最近話題になってるのは、バイナリセーフな関数とかバイナリセーフじゃない関数とかを交ぜこぜで使うと困ったことになる、ってとこかなぁ。

っていうか、バイナリセーフ関数とそうでない関数があるって必然性そのものが理解できないんだけど。 ちょっと手抜きすぎじゃないかと。

いや、もちろんC文字列を経由しないと呼び出せないものがあって、 たとえばファイルパスとかにNUL文字が入れられないのはわかる。 しかし、それだってできる限りちゃんとチェックして、 NULが入ってたらエラーにするとか、するもんじゃないの?

で、そのチェックがもれてたら、「すいません、それバグですから直します」とか いう話なんじゃないかと。少なくともRubyではそういう態度。

それを「文字列処理関数にはバイナリセーフなものとアンセーフなものがあります」って 割り切っちゃうってのは。 ところ変われば、ってのはあるんで、言語コミュニティごとに常識は 違うのはある程度「当たり前」なんだろうけど、 個人的には大変驚いた「当たり前」であった。

本日のツッコミ(全13件) [ツッコミを入れる]
_ takahsahim (2008-01-27 00:57)

>少なくともRubyではそういう態度。<br>Ruby (1.8.6 i386-mswin32)でも、<br> f = File.open("README"+0.chr+"hoge","r")<br>で「README」というファイルが開けるみたいですけど……

_ まつもと (2008-01-27 01:12)

「バグです」(苦笑)

_ まつもと (2008-01-27 01:14)

あ、1.9ではすでに直ってます、念のため

_ takahsahim (2008-01-27 02:55)

なんと。<br>じゃあ、<br> f=File.open("README","r q")<br>だと例外が出るのに、<br> f=File.open("README","r"+0.chr+"q")<br>とかだと例外が出ないのもバグだったりしますか?<br>(Rubyは 1.9.0 (2008-01-26 revision 15257) [i686-linux] です)

_ まつもと (2008-01-27 03:33)

そうです。<br>バグがたくさん見つかってありがたいなあ(本気)

_ くろ (2008-01-27 10:05)

どっちもどっちだ・・・

_ まつもと (2008-01-28 08:38)

「どっちもどっち」と思われるようじゃまだまだですね。<br>精進します。

_ 通りすがり (2008-01-28 16:35)

えーと、PHP は良く知らないんですが、この記事自体の論旨は必ずしも PHP に限定されたもんじゃないんじゃないんですかね。「一般的な落とし穴としてプログラマならば認識しておくべきこと」という話じゃないでしょうか。

_ まつもと (2008-01-28 16:47)

そうかもしれません。<br>が、私の論旨は「そんな落とし穴を放っておく言語設計者は駄目だ」です。<br>で、私の言語にも落とし穴は残っていたわけですから私も駄目なんですが、放っておいてはもっと駄目だと思うので、すぐに埋めました。

_ とも (2008-01-28 17:20)

バイナリアンセーフなのは良くないかも知れないですが、<br>一方で、バイト列と文字列は本来的に別もの(別の型)<br>だと思うので、言語処理系は本当は両者が別物に見える<br>ようにできる方が良いなという気もしたり。<br>保存しなきゃいけない同一性とかできるべき操作とかが<br>違うので。

_ kat (2008-01-29 03:20)

まぁ余談ですが、これ結構古い問題で、perl なんかも未だにあったりします。自分が知る限り一番古い情報で99年あたりです。

_ kwatch (2008-01-29 09:23)

>バイト列と文字列は本来的に別もの(別の型) <br>>だと思うので、言語処理系は本当は両者が別物に見える <br>>ようにできる方が良いなという気もしたり。<br>僕も同感です。M18Nを特に考慮してなかった1.8ならbinaryとstringとを同じにしててもよかったのでしょうが、1.9でも両者の区別がないのはちょっとなーと思います。<br>なんというか、今のままだとHashとArrayの区別がないPHPを笑えない。

_ Tietew (2008-01-29 11:58)

だがしかし、「文字列」に「文字」である "NUL" が入ってはいけないとする(C言語由来、という理由以外の)理由はない、とも言えるんじゃないですか。まあ、システムコールが最終的に NUL 終端しか受け付けないので、どこかでこの制限は入らざるを得ないのですが。

お名前:
E-mail:
コメント:
[]

«前の日記(2008-01-24) 最新 次の日記(2008-01-26)» 編集

track feed Matzにっき Creative Commons License This work is licensed under a Creative Commons License.