西村賢さんのPython内部文字コードの話題から端を発するUnicodeの話
「Unicode文字列型が複数の内部表現をサポート」ってどういうこと?「Python 2系からの移植を容易にするため…Unicodeリテラルシンタックスも復活」これは良い。 http://t.co/LxkUP45x
2012-03-06 21:44:00PEP393 Flexible String Representation か。Pythonにしてはすげー頭悪いことしてる気がする http://t.co/fndkFh99
2012-03-06 23:03:57HaskellやClojureと比べるとRubyとPythonは双子のよう。じゃあなぜ科学計算でPython、WebでRubyとなったかって、大阪でエレベーターは右に立ち、東京では左という程度の偶然ってことないかな。DHHが左に立ったのは全然偶然ではないけど
2012-03-07 10:15:01この比較表を見ると、Rubyの簡潔さと一貫性が際立っているとと思うのだけど、やっぱりPythonとは双子じゃないかと思ったりする http://t.co/CqW9kIf3
2012-03-07 10:22:20そうか、Pythonにはswitch caseがないのかー。これは象徴的だな。RailsのArray#forty_twoメソッドと真逆の発想という気が
2012-03-07 10:34:59@nalsh ん? どうしてですか? UTF-8じゃないと面倒すぎるという意味でしょうか?
2012-03-07 10:35:51@knsmr HTTP絡みの操作する時に外部から来たバイト列と、コード由来のUnicode文字列が混ざって面倒+そもそも仕様決めるのが大変という。PHP6なんかはそれが理由で死んじゃったのだと思ってたり
2012-03-07 10:43:28@nalsh でも、日本のWebだと外部から来るバイト列はいまだにかなりShift_JISだったりもしませんか? ヨーロッパもアジアもUTF-8が完全制覇というには程遠いのでは?
2012-03-07 10:46:41@knsmr バイト列ならShift_JISでもUTF-8でもあんまり問題ないんですよ。例えばHTTP_REFERERとか識別子は同じバイト列になるので。でもUTF-16だとここで変換しないといけないので、req.params[b"HTTP_REFRER"]とかやらないといけなく
2012-03-07 10:52:42@nalsh SJISもUTF8もASCII上位互換だから、ASCIIはそのままでいいってことでしょうか? むむむ?
2012-03-07 11:00:29@knsmr はい。Rubyのその辺いじってて、内部UTF-16だと発狂するなぁと思いました。ASCII互換だけ相手してても仕様決めるのが悩ましかった
2012-03-07 11:01:43Webは一見文字列に見える、なにか謎のバイナリで通信してる無法の荒野だからな。まともな文字列のあつかいをしてる言語ほどWebでは死ぬ
2012-03-07 11:03:40@nalsh なるほど、そういえば、UTF-8がASCIIのスーパーセットでもあるというのって、あまりに当たり前で忘れていました。そういう意味ではShift_JISも偉かったのかも。内部UCS2は時代の必然と思ってましたが、確かに面倒かも
2012-03-07 11:04:49謎のバイナリを謎のバイナリのまま扱うすべを持っていないと頭がおかしくなって死ぬ。持っていても頭がおかしくなるのでるびいすとはあたまがおかしい
2012-03-07 11:04:53@knsmr @nalsh 内部UCS2は修羅の道ですよ。理論上は綺麗かもしれないけど、実践ではいいことなんにもない。
2012-03-07 11:06:27@yukihiro_matz @knsmr いやいや、Win32APIや.NET、Cocoaとやりとりしやすい、ICUを叩きやすいっていうメリットはあります。これに目が眩んだ人も多い
2012-03-07 11:07:17@nalsh @knsmr ああ、そこは見落としてました。そっち方面に住んでないから。でも、その先、外界との界面ではやはり修羅の道のような。
2012-03-07 11:09:23@yukihiro_matz @knsmr 「外界」がファイルとかクリックとかGUIのフォームとかだと「界面」はフレームワーク内なので、問題はたぶん顕在化しないです。WebとかSocketとかネットワーク系だと顕在化して修羅の道ですね
2012-03-07 11:14:29@hutai ISO 2021でなくISO 2022でしょうか。wide characterというかEUC用の拡張が入ったのはISO 2022の86年改正なので必須ということは無いです
2012-03-07 11:20:58@nalsh @yukihiro_matz なるほどー。Unicodeが描いた美しい“文字列オブジェクト”の世界ですね。ネットワーク上もDBもUTF-8が主流になって、結局インピーダンスミスマッチ的なことが起こってるんでしょうか
2012-03-07 11:23:36@nalsh @yukihiro_matz しかし「バイト列」を扱っていれば済むという発想って、BiDiを持つ文化圏を考慮していないということもありませんか。そうか、プロトコルがASCIIだから話がややこしいのかしら
2012-03-07 11:25:54@hutai 時系列的には、Σプロジェクト→EUC→DEC 漢字ですね。仰るとおり「マルチバイトのほうが正しかった」ってのはかなり後になってわかったことなので、後出しの話ではあります
2012-03-07 11:29:07@knsmr @nalsh @yukihiro_matz とはいえ私達の縦書き文化が考慮されたことなどありませんし。しょせん完全な対応を求めるのは無理なので、できるところまでやるしかないと思いますよ。
2012-03-07 11:29:15