ラクダ黙示録その5 91
ストーリー by Oliver
玉座に座るのは 部門より
玉座に座るのは 部門より
Perlの作者Larry Wallが書いてるApocalypse(黙示録)シリーズはPerl6へむけての構想をまとめたものだ。Apocalypse 5では正規表現を扱い、僕らの知る正規表現感を盛大に「破壊」し、興味深い事になっている。Perl6がどんどん楽しみになってきた。
Perlの作者Larry Wallが書いてるApocalypse(黙示録)シリーズはPerl6へむけての構想をまとめたものだ。Apocalypse 5では正規表現を扱い、僕らの知る正規表現感を盛大に「破壊」し、興味深い事になっている。Perl6がどんどん楽しみになってきた。
開いた括弧は必ず閉じる -- あるプログラマー
Apocalypseの記述量が多い割には難しくない (スコア:5, 参考になる)
記法をすっきりさせたという印象があります。
その上で、parserとして機能できるように、
クロージャーの記述や、文法ルールのクラス化、
バックトラック制御などを追加しています。
細かい例外ルールがたくさん書いてあって読みにくいのですが、
それらの例外は、よく使うものを短く書くために使うものです。
使わなければ知らなくてもすむもの。
今まで書いていた正規表現は、よりわかりやすくなると思います。
「<」と「>」がメタ文字に取られてしまったので、HTMLやXMLに対して
正規表現マッチを行うときはちょっとめんどくさいかもしれません。
逆に心配な点。Perlのクロージャーを入れ込むことが
非常に簡単になるので、ちょっと気を抜くとPerlでしか使えない
式になってしまいそう。
そうそう、いざとなればいつでもPerl5の記法にfallbackできます。
m:p5/旧形式の正規表現/と書けばよい。
Re:Apocalypseの記述量が多い割には難しくない (スコア:2, おもしろおかしい)
が、
ここが一番 Perl らしいという罠。
Re:罠ってなに? (スコア:2, 興味深い)
ドラスティックな変更が加わって新生 Perl とでもなろうかというところなのに、互換性維持の手法が Perl らしい泥縄なアプローチのようだったので「ああ、やっぱり Perl なんだなあ」と思った、という次第。
先の投稿は言葉を端折りすぎたようです。
# 罠という言葉の使用に深い意味は無かった、という罠
Re:罠ってなに? (スコア:1)
2ちゃんねるの客層から考えてみるに、ここからでてきたのかもしれないと思ったりもします。
かなり有名なはずなのに、誰も言及しないのはなぜ?
Re:罠ってなに? (スコア:0)
実は誰も知らない罠。
Re:罠ってなに? (スコア:0)
Re:罠ってなに? (スコア:0)
最近増えたようです
Re:罠ってなに? (スコア:1, 参考になる)
> 最近増えたようです
大昔のASCII系の雑誌の読者コーナーでよく見てたぞ。
調べてから書きなさい。
Re:罠ってなに? (スコア:0)
方言というか、ある場所ではよく使われているから、で思考停止するのが問題なのか、
発言者の意図が知りたかっただけなのか、
いわゆる国語辞典の語義でいいのか、
はて、「調べてから書きなさい」と言い放つだけで済ますのも2ch的だなぁ、と感想を漏らすべきなのだろうか。
うん、確かにアレルギー体質かもしれない罠。
Re:罠ってなに? (スコア:0, オフトピック)
Re:罠ってなに? (スコア:0)
# あの頃はゲーム帝国と伝言版を読むためだけにファミ通を買ってた人って多いのでは?
Re:罠ってなに? (スコア:0, オフトピック)
別の本で読んでからファミ通で見つけたのであまり把握していません。
一応
DON
Re:罠ってなに? (スコア:0)
Re:罠ってなに? (スコア:0)
Re:罠ってなに? (スコア:0, フレームのもと)
~だわな、とかいう語尾を2chらしく当て字したんじゃないですかね。
と、2ch を知らん僕は勝手に納得して流しております。
-- wanna be the biggest dreamer
Re:罠ってなに? (スコア:2, おもしろおかしい)
文化醸成媒体であるところの人間にとってミーム伝達は快いのであると指摘してみるテスト。
ただし対立ミームの持ち主には不快である罠。
Re:罠ってなに? (スコア:1)
この「テスト」と「罠」は同じ意味に見えますが合ってますでしょーか?(笑
# Larry Wall は言語学者だし…と言い逃れしてみるテスト。
-- wanna be the biggest dreamer
Re:罠ってなに? (スコア:1)
ミーム伝達は快いのであると指摘してみる罠。
ただし対立ミームの持ち主には不快であるテスト。
違うよーです ^_^;
Re:罠ってなに? (スコア:0)
> ~だわな、とかいう語尾を2chらしく当て字したんじゃないですかね。
あんたの解釈を元に翻訳してやろう。
「ここが一番 Perl らしいというだわな。」
どこぞの方言か?
「初心者が陥りやすいプ
Re:罠ってなに? (スコア:1)
「初心者が陥りやすいプログラミングの罠」?
えーと、多分なにかのジョークなんだろうけど、すいません意味分かりません。
ジョークに見えないのでつまり言葉遊びも何もない、辞書通りの意味の「罠」の使い方ですが、そんな講釈じゃないですよね。
一般的な意味から外れた、何の脈絡もなく突然体言止める「罠」ということばの使い方はどんな意図があるんだろーか、って疑問なわけで。
-- wanna be the biggest dreamer
Re:罠ってなに? (スコア:1)
XXという罠(わな)
XX(主に将来招聘されるであろう事態)を提示し、それに対して懸念の意を表する際に用いる。
用例:
「実はネカマだという罠」
「そのまま徹夜という罠」等
Re:罠ってなに? (スコア:1)
うーん、分かったような分からないような…。
これだと辞書的な罠の意味でもまぁ通じますよね。
それにこの使い方は前からちらほら見受けられたし、違和感覚えながらもそのまま読めてたわけで。
「~だわな」の当て字などというアクロバティックな解釈を捻り出さずともすんでたわけです。
最近、ソースは示せないですが、意味を持ってないんじゃないかとしか思えない使い方を見かけません?
意味は無く、ただし「罠」という言葉のイメージだけを印象付けるような。
意味が変化したという印象が事実として、その以降には仮説ふたつ思い付きました。
・従来の「~という罠」の使い方がインフレ起こし、意味が抜け落ちて印象だけ通用するようになった。
・従来の使い方を知っていた人が、たまたま「~だわな」という文に変換を入れ、それが読者の支持を得て普及した。
僕は後者を疑ってるわけです。
-- wanna be the biggest dreamer
Re:罠ってなに? (スコア:1)
#103752 [srad.jp] から始まるスレッドの中でたくさん「罠」という言葉が使われていますが、ほとんどは「落とし穴」という言葉に置き換えても意味が通じます。
「罠」とか「落とし穴」という言葉が比喩的にいろいろな意味で使われるので、「……という罠」という表現もいろいろな文脈に出てきます。
「皮肉なこと」と言い換えていい場合も多いように思います。
「困ったこと」という意味の場合もありますね。
ぼくは言語学をよく知りません。感覚的な突っ込みも学術的な突っ込みも歓迎します。
鵜呑みにしてみる?
Re:罠ってなに? (スコア:1)
> 「困ったこと」という意味の場合もありますね。
場合で分けて考えるよりも、その中間の意味を持っていると捉えた方がいいような。
単純に置き換えるとしたら「皮肉を含んでいる」でしょうか。
で、「皮肉」よりは多少具体的な被害(困ったこと)を伴っている、あるいは被害を受ける可能性があると。
「~だわな」という解釈は強引過ぎてまるで同意できない。
>学術的な突っ込みも歓迎します。
歓迎はするが理解できない罠。
うじゃうじゃ
Re:罠ってなに? (スコア:1)
ぼくが #104956 [srad.jp] に挙げた分類が完璧だと主張するつもりはありませんが、「皮肉なこと」に挙げた例と「困ったこと」に挙げた例の間には、意味の大きな違いがあると思いませんか。
言語学の中にも、いったん用法を分類して、なぜそれらが一つの言葉の意味として出てくるのかということを考えることで、「言葉本来の意味」を理解するという考えかたが実際にあります。 まあそうかもしれません。 (^^;)
でも学術的な議論がどれも理解しがたいというわけではないので。言語学などの立場からわかりやすい意見がもらえればいいと思って書いたまでです。
鵜呑みにしてみる?
Re:罠ってなに? (スコア:1)
ただ、皮肉ってのは嫌味という意味や矛盾した状態を指して使うこともありますよね。特にそれで誰かが困るわけじゃなくても。
それに対して「罠」は何か困った状態になったり、そうなる可能性がある場合に限られているような気がします。
そんなわけで、「罠」は「皮肉」と「困ったこと」の中間的な意味で、他の言葉に置き換えようとした場合にはそのとき次第でどちらにウェイトが置かれているか変化するってことで。
わざわざ他の言葉に置き換えようとすることが意味を歪めてしまうのもよくあることで、「皮肉」「困ったこと」よりも「罠」の方がしっくりくる場合もあるでしょう。
なんとなく使ってみたくて書いたまでです。:-)
言葉の意味を言葉で説明しようとすると再帰定義に陥る罠。
うじゃうじゃ
Re:罠ってなに? (スコア:1)
でも、 #104956 [srad.jp] ではぼくは意味が変わってしまわないよう注意して置き換えを行ったつもりです。ある言葉がどういう意味で使われているかを考えたいとき、その言葉を別の言葉に置き換えて意味が変わったように感じないかどうかを調べるというのは一つの方法です。
また、「罠」という言葉のほうが他の言葉よりしっくりくる場合があるかという点に関して、ぼくは懐疑的です。ぼくは、この用法はほとんどの場合、意味を変えずにほかの適切な言葉に置き換えることができると思っています(ぼくがこの用法をほとんど使わない理由もそこにあります)。 #104956 を書いたのも、その点を確認してみたかったからです。
でも、この考えは albireo さんには賛成していただけなかったようですね。まあ、人によって意見が分かれるところでしょうから、賛成していただけなくても仕方がないと思っています。それに、ぼくが見たり聞いたりした用例なんて、世の中で使われている例のうちのごく一部ですし。
鵜呑みにしてみる?
Re:罠ってなに? (スコア:1)
「皮肉」は特に「困ったこと」状態でない場合も使いますし、「困ったこと」なら「皮肉」の意味を持たないことのほうが多いかもしれません。
置き換えが可能かどうかという面で見れば tix さんの考えている通りのように感じますが、「罠」はその時々でウェイトの違いはあってもこの2つの意味を同時に含んでいる点がポイントではないでしょうか。
「罠=皮肉 or 困ったこと」ではなく「罠=皮肉 and 困ったこと」じゃないかなあと。
一般的な「皮肉」でも「困ったこと」の意味を含んでいることは多いし、「困ったこと」という言葉に皮肉が隠れていることもあります。
そこに「罠」を使えば両方の意味を持っていることが多少明示的になるような気がするので、あとは使う人間が表現としてどちらを使うかという話だと思います。
「確かにこの言葉に置き換えても意味は変わらない、でもオレはこちらの言葉を使いたいんだ」というのは間違った主張だとは思いません。
(その選択の結果、相手に意味が伝わらなかったりする点は多少問題ですが)
定義としては tix さんのものが私の感覚に一番近いと感じたので私なりの意見をコメントしたわけで、「賛成できない」というほど強いものじゃないです。
用例として歴史が浅いし、一般に認知された使い方でもないのでこの程度の解釈の揺らぎはあっても当然だと考えていますから。
うじゃうじゃ
Re:罠ってなに? (スコア:1)
>「ここが一番 Perl らしいというだわな。」
>どこぞの方言か?
日本語として正しくなるように、
「ここが一番 Perl らしいわな。」
くらいに変換してください。
# 一字一句置き換えられて反駁されるとは思わなんだ。
-- wanna be the biggest dreamer
Re:罠ってなに? (スコア:0)
Re:罠ってなに? (スコア:0, すばらしい洞察)
Re:Apocalypseの記述量が多い割には難しくない (スコア:1)
正規表現とその上の…例えば BNF みたいなもので
分割するというのはなかったんかな。
正規表現にいろいろ盛り込みすぎなのが心配。
# perl の文法自体が、単純にトークンに分割できないような言語だからか?
# mishimaは本田透先生を熱烈に応援しています
正規表現というよりパターンマッチャ (スコア:1)
個人的にはトーカナイザとCFG+αがいっしょくたに書けるのは 好きです。ANTLR [antlr.org] とか。
5.8 のときに話題にするべきだったのかも (スコア:2, 興味深い)
「8 ビットエンコーディング (結合文字や RTL はサポートする意思なし) または UTF-8、従来のマルチバイトエンコーディングは無視」みたいな 「国際化」が多くてげんなりしてるので。
(というか、現実はもっとひどくて、「国際化」とは翻訳のことだと 思っている人が多いみたい)
Re:5.8 のときに話題にするべきだったのかも (スコア:2, 参考になる)
少なくとも、
スクリプト言語界(?)はそうでもないですよ。Rubyはもちろん、 Pythonだって(Unicode中心とは言え)スクリプトの自身の エンコーディングを明記することで、ISO-8859-xや EUC-JPのスクリプトを認識し、(おそらく一旦Unicodeに 変換してから)動かすような仕組みも考えられています。
#Perl6ではどうなるんでしたっけ?
スクリプト言語は「ちゃちゃっと書いてさくっと実行」というのが 身上なので、「従来のマルチバイトエンコーディング」でも がんがん書けないと意味ない、という気持ちはあるかも。
とはいえ、「文字列の長さ」と「文字列のバイト数」を 区別させることからして、何かと悩ましいわけではありますが……。
Re:5.8 のときに話題にするべきだったのかも (スコア:1)
Perlのメインのひとつ、CGIだと入力エンコーディングがね。
NN4.いくつかで、Content-TypeのcharsetもMETAもくっつけて、こっち(CGI)から丁寧にエンコードした送信ページを作ってやっても、そこから送られてくるエンコードが(再判定しないと)確定できないの。(ユーザー設定が優先するんだっけな?詳細忘れた)
そーゆーブラウザがあるだけでもLOCALE一発てのは難しいでしょうね。
#しかもなぜか固執するファンが多いんだよね、NN4。
Re:5.8 のときに話題にするべきだったのかも (スコア:1, 余計なもの)
その上で、例外を作ればよいかと。 たとえば、スクリプト自身のエンコーディングは、 ワンライナーとかだと、ロケールのエンコーディングに決まってるけど、 システムにインストールしてしまうようなスクリプトだと、 ユーザのロケールに合わせて解釈が変わってしまうのはまずい。 というわけで、自分自身がどんなエンコーディングで書かれているかを 指定する識別子を先頭行 (付近) につけるとか。
ファイル名も、ロケールから独立したものだから、どうするかが問題です。 (これはけっこう難問で、あちこちで繰り返し議論されているようです)。
もちろん、ロケールモードで一時的にバイト列を扱いたいとか、 互換モードで一時的にロケール文字列を扱いたいとか、 ということも、できる必要があります。
Re:5.8 のときに話題にするべきだったのかも (スコア:2, 参考になる)
まだ libc5 が幅をきかせていたころ、「Linux 環境を日本語化する」
というタイトルの Web ページがあったので、
「どんなすごいことをしてるのかなわくわく」
と思って見てみたら、jless と jgroff と kterm その他を
インストールする方法が書いてあっただけの罠。
今わりと困るのは、むしろ「国際化すれば地域化が不要だと思ってる手合い」かも。
Re:5.8 のときに話題にするべきだったのかも (スコア:1)
昔はJEという名前でMuleなどがまとめられていましたね。
jperlというのもあったけれど、今はもういらないものなのだろうか...
Re:5.8 のときに話題にするべきだったのかも (スコア:1)
1. LC_CTYPE ロケールだとネットワークでは役に立たない
2. 文字列リソース一つ一つのエンコーディングをプログラマが管理したくない
3. 特定のエンコーディングに依存しない汎用文字列ライブラリの作成は困難
この3点じゃないか?
1. 2. に関しては、ファイルハンドルなんかの、
外部に直接繋がってるリソースに対してのみエンコーディングを管理すれば解決できそうだ。
たしか以前の Apocalypse でファイルハンドルにいろいろ設定できるようなことが書いてあったし。
内部に入ってくるデータはすべてロケールで指定されたエンコーディングになるから、
あとはワイド文字列にしちゃう(mbstowcsはロケール依存なので問題なし)、
でライブラリレベルでは全部 wcs を使えば 3. も解決?
これだと問題は文字数 != 文字列の長さ、ってあたりでえらく問題が出そうだが…
そこはプログラマの問題なんだろうな。
> 「国際化」とは翻訳のことだと思っている人が多いみたい
そもそも perl って翻訳用カタログすら作れなかったな…
# mishimaは本田透先生を熱烈に応援しています
Re:5.8 のときに話題にするべきだったのかも (スコア:1)
国際化 == 英語以外禁止 (スコア:1)
某県立大学の人が、「うちは国際化を目指しているので、入学式も卒業式も全部英語でやっています」と自慢していました。ソフトウェア業界の外で「国際化」って言うと、日本語(現地語)を使わずにすべて英語だけで済ませることを意味するようですね。
お前ら、いい加減にしてください。 (スコア:1, おもしろおかしい)
Re:お前ら、いい加減にしてください。 (スコア:1)
Re:(´-`).。oO(なんでだろう?) (スコア:1, すばらしい洞察)
m:p5/旧形式の正規表現/
って、
use regex p5;
とかで代用できないんですかね? いちいち正規表現に「:p5」ってつけるの面倒だよー。
多分。
ていうか、おいらはPerl5で十分なんだよなー。あんまり積極的な興味が湧かない。>Perl6
Perl5互換モード (スコア:3, 興味深い)
似たような方法が提供されることになるでしょう(予想)。
> おいらはPerl5で十分なんだよなー。
最初からプログラム全体をPerl5の文法で書くという方法もあります。
Perl6のパーザはPerl5のプログラムを発見すると、
Perl5としてコンパイルし、Perl6のインタプリタエンジン(Parrot [parrotcode.org])で実行します(予定)。
Perl5かPerl6かの判定は、最初の方に出てくるキーワードで決めるという方法が
有力視されています。例えばPerl5の「package」はPerl6では「module」と書く
ことにして、「package」文が出てきたらPerl5と判定する、など。
Re:Perl5互換モード (スコア:1, すばらしい洞察)
でも、perl らしい dirty hack だよね :D
Re:Perl5互換モード (スコア:1)
> package/moduleの次元に絡めるのはいかがなものか、と。
切り換えるのはインタプリタエンジンではなくてパーザエンジンです。
組み込み関数などセマンティクスの違うものが、
別クラス、別メソッドとして実装されることになることも考えると、
実行時ライブラリも切り換えると言えるかも。
実はPerl6にとっては、スクリプト内の特定の式(やキーワード)で動的に
syntaxが変わるのは普通のことです(特定のブロック内でのみ有効な
演算子とかも考えられている)。Perl6にとってPerl5は「Parrotエンジンで
動かす多数の言語(Perl6, Jako, Cola, BASIC, mini-Scheme……)の
うちのひとつ」でしかないのです。
Re:黙示録なんてついてるから (スコア:1, 参考になる)
そもそもラリーが大好きなんです(笑)
その記事の元の講演はこれかいな
http://www.perl.com/pub/a/1999/03/pm.html
Re:反射的に思うのは (スコア:1)
Perl5互換を謳うライブラリは多いけどPerl5.6.x互換のは見たこと無いなぁ。