Ognacの雑感

木漏れ日々

目次

Blog 利用状況

書庫

ギャラリ

正規表現はなぜ理解されていない

ネタ元: まさるさんの 正規表現知らんの? http://blogs.wankuma.com/masaru/archive/2007/10/04/99539.aspx
コメントでは正規表現が使われていないことを意外と見る方々と当然と見る方々の二つに分かれているようでした。
これに関連して考え込んだ事がありました。なぜ「使われない・使えない」以前に「理解されていない」のか。
中御大の仰る「所詮アルファベティカルの国の人の道具さ 」であるかも。
西洋言語には 0個以上の存在とか AND / OR / XOR の区別、一方にしか無いものの合成などの概念が浸透しているが、日本語ではそのあたりがあやふやであるためかも知れません。
「0個以上の繰り返しは .* 、1個以上の繰り返しは .+」という文が体得し難い人がいます。0個以上という言葉が壁になるようですね。
理解を得られない時は、 実例を挙げて「この場合は .* を使い この場合は .+ 使え」と言ってます(駄目な方法だとは解っていますが...orz...理解しないままコピペさせているのと同じだものね)

C言語のPointerでも類似の経験があります。世の解説書のマズイ点に「PointerとAddressは同じもの」「配列とPointerは同じもの」と記されている本があるようです。仕組みを理解していない人は言葉通り信じるので基本概念を間違ってしまうようです。
Addressは物理的な住所でしかないから Address++ は1増加だが、Pointerは型情報を把握しているから Pointer++ の演算が正確に行われるんだよ..と言ってもピンとこないようです。

SQLのOuterJoinでもありました。「一方にしか無いデータの結合」という言葉が壁になるようです。
在るもの同士の結合は実感できるが一方にしかないものをどのように結合するのか理解できないようです。
こちらも入門書の書き方にも問題があると思います。Left outer / Right outerを同列に記載されていますが、実務ではleft outerで使うケースが多いので
Left outerで実例を挙げて解説したほうが初心者は混乱しなくて良いと思うのです。

「0個以上の繰り返し」「存在しないものと存在するものの結合」などは理解している人には当然の用語ですが、理解し難い人には高い壁に思うようです。
この人たちはProgramerに不向きだといってしまえば元も子もなくなるのですが、一度は解説して上げてもいいのかなって...仏心が出たりします。
(教育はだれの責任か..は別問題)

このあたりは言葉や用語では伝えきれない部分があり個々人が実習/実演で体得して貰うしかないのかもしれません。
「習うより慣れろ」とはよくいったものです。

正規表現処理は好きですね。大量処理の時はコストが高いので敬遠しますが、入力Checkや簡単な文のパースなどは便利なことこの上ない
   xxコード char(9)    なんで定義している文から  xxコード,  char , 8 を切り出すとき  (.*?)\s+(.*?)\(((.|\n)*?)\) で可能なのでGoodだと感じます。
これ以上長くなると、後日、自分で意味不明に陥るのでこの程度で済ませてますが....orz.

投稿日時 : 2007年10月5日 10:24

Feedback

# re: 正規表現はなぜ理解されていない 2007/10/05 10:42 επιστημη

> 0個以上という言葉が壁になるようですね。

すごくわかる。英語の言い回しで似たものをよく目にします。
"I have no money." 「俺、金ねーよ」
"Nobody here..." 「誰もおらんやんけ」
"No more cookies" 「センベ一枚もないのん!?」

# re: 正規表現はなぜ理解されていない 2007/10/05 10:52 刈歩 菜良

わたしはViで正規表現を覚えて、かつ今までもViでしか正規表現は使わないので、プログラミングでは使ったことはほとんどありません。

GUI当たり前の世代は正規表現に触れるチャンスも少ないと思うので、知らなくてもいたしかたないような気もしますし、敷居も高いので、知ったところでなかなか使う気になれないというのも理解できます。

でも、一度知るとこれがちょー便利なんですよねぇ。

タッチタイピングもそうですが、使えるようになるまで結構大変ですが、一度壁を超えると大きな恩恵があるんですよね。

# タッチタイピング出来ない人の多さの方がわたし的には気になったりします。
# 脱線失礼しました。_(._.)_

# re: 正規表現はなぜ理解されていない 2007/10/05 10:57 かつのり

正規表現使えない人が文字列処理を書くと、
結局意味不明なコードになる罠。
正規表現が使える人は、正規表現を使わなくても、
効率のいいコードが書けている事実。

決して特殊な技術じゃないと思うんですけどね・・・

大抵の正規表現エンジンは後方参照とか可能にするために、
NFAで実装することが多いと思いますが、
後方参照を持ち要らないケースも実装上多々あるので、
DFAの正規表現ライブラリも欲しいなと思ったりします。

DFAはコンパイルコストが高いですが、
バックトラックは一切不要なので結構早いですよ。
実行速度が要求される局面でも十分に使えます。

# re: 正規表現はなぜ理解されていない 2007/10/05 11:03 凪瀬

単純に、正規表現というジャンルがあるということが広まっていないのかな、と思いますね。
perl使いはいざ知らず、プログラムし始めには正規表現という存在を知らないわけですから
どうやって正規表現と出会うのか、という話。

# re: 正規表現はなぜ理解されていない 2007/10/05 11:15 Chuki

>どうやって正規表現と出会うのか、という話。

最近ですと、.NETのバリデーションで初めて知った、という人をよく見かけますね。この場合使わなきゃいけない縛りをかけてますので、いやでも憶えてくれます。
#まぁ、いろんな虫さんを入れられても困るので、大体はこちらで用意してお渡しするようにしてます。それ以上に他人が書いた正規表現を読むのがウザいからですが^^;

# re: 正規表現はなぜ理解されていない 2007/10/05 11:52 刈歩 菜良

> どうやって正規表現と出会うのか、という話。
そうそう、技術者のヤル気とか実力以前に出会いがないですよね。

# 出会い... ないなぁ。 (.. )

# re: 正規表現はなぜ理解されていない 2007/10/05 13:00 Ognac

>使えるようになるまで結構大変ですが
辛抱するのが最初の壁ですね。この段階で何割かは落伍する。

>実行速度が要求される局面でも十分に使えます。
そうでしたか、以前の知識で判断してはいけない事例です。トライしてみます。

>どうやって正規表現と出会うのか、という話。 Remove Comment 99998
正規表現というタイトルの書籍も多数あるし、.netの言語解説書なども章を裂いて解説しているのに「出会いがない」とは甘えている。.....と感じるのは私か高ピーだから???
そうは言っても知らない人が多いのも事実...ということは出会いを作らない設計者の問題?
そういえば、「正規表現で処理せよ」と書いている設計書はあまり見ないなぁ。

# re: 正規表現はなぜ理解されていない 2007/10/05 13:13 まさる

>どうやって正規表現と出会うのか、という話
Visual Studio 2005 の置換ダイアログでも、正規表現は「検索オプション」扱いで、わざわざ開かないと見れなくなってますね。
秀丸とかのテキストエディタを使えば、置換ダイアログには見える位置に「正規表現」という文字はありますが、メモ帳でしかテキスト見ない人もいるしなぁ。

やっぱり運命的な出会いがないとだめなんでしょか・・・

# re: 正規表現はなぜ理解されていない 2007/10/05 13:55 刈歩 菜良

> 正規表現というタイトルの書籍も多数あるし、.netの言語解説書なども章を裂いて解説しているのに「出会いがない」とは甘えている。
ま、私も正規表現ラブなので、お気持ちはとてもわかるのですが、機能があるだけではだれも見向きしてくれないわけで、それなりの「マーケティング活動」が必要なのですよね。
たとえば、Viが開発環境だった頃は正規表現を駆使しなきゃお仕事にならなかったわけで、わたしだって今時分にプログラミングに出会っていたら、「正規表現なんてしらなくっても、お仕事できるも~ん!」と思っていたに違いありません。

あと、可読性重視という世の流れ的にも正規表現は不利だったりします。

> やっぱり運命的な出会いがないとだめなんでしょか・・・
運命的な出会い・・・ ないなぁ。(TOT)

でも、正規表現って本当に便利なんですよねぇ。
Ognacさん!スピーカーデビューのチャーンス!!
(^.^)

# (運命的な出会い) 2007/10/05 14:17 Chuki

>運命的な出会い・・・ ないなぁ。(TOT)
わんくまスピーカー1,2を争うイケメン、ぢゃまいかを氏に相談されてみるとよいかも^^;

# re: 正規表現はなぜ理解されていない 2007/10/05 15:01 刈歩 菜良

> わんくまスピーカー1,2を争うイケメン、ぢゃまいかを氏
彼はわたしのタイプぢゃないわ。
イケメンとも思いませんわ。
┐('~`;)┌

# re: 正規表現はなぜ理解されていない 2007/10/05 15:30 凪瀬

> 正規表現というタイトルの書籍も多数あるし、.netの言語解説書なども章を裂いて解説しているのに「出会いがない」とは甘えている

「正規表現」という単語の意味を理解していれば、書籍を見て「あぁ、こういうことについて述べられているのだな」と理解できるわけですが、
最初に何も知らないときに知らない単語を書店で見かけて手に取れ、調べろ、というのは酷かと。
「正規表現」以外にも沢山の知らない単語が並ぶ中で、それを選ぶことは不可能でしょうから。

どうやら正規表現ってのが便利らしい、という情報をどこから得るのか。
その第一種接近遭遇をいかにして果たすべきかということではないでしょうか。
概念に名づけられた用語を知れば、その後は調べるの楽なんですけどね。

# re: 正規表現はなぜ理解されていない 2007/10/05 17:38 シャノン

どうでもいいけど、ポストNo.100000を踏んだのは誰なんだろう…

# re: 正規表現はなぜ理解されていない 2007/10/05 17:40 シャノン

Rさんのトコだったw

# re: 正規表現はなぜ理解されていない 2007/10/05 17:41 Ognac

>単語を書店で見かけて手に取れ、調べろ、というのは酷かと。
うーん。考えさせられる発言です。高ピーな態度は改めなければと自覚しながら出来てない自分.<=コラ

>その第一種接近遭遇をいかにして果たすべきかと
「キーワードだけ提示しても遭遇した内には入らない」ということでしょうか。
この機能は「このようにして使えば、こんな効果があるよ」と一度は説明すべきかもしれませんね。
その後は当人達の態度如何でしょうが....と言うと高ピーになるんですね。
切り分けが難しいです。

# re: 正規表現はなぜ理解されていない 2007/10/05 17:42 Ognac

>どうでもいいけど、ポストNo.100000を踏んだのは誰なんだろう


????なんのこと????

# re: 正規表現はなぜ理解されていない 2007/10/05 17:48 Ognac

あぁ CommentのNoのことね

# re: 正規表現はなぜ理解されていない 2007/10/06 2:46 かつのり

でも、正規表現ってSQL並みに業務プログラマとって、
ごく当たり前な領域と思ってました。
専門とはいえなくても1つくらい本当に得意な言語とかあったら、
最低限その言語の標準で提供されているAPIくらいは
意味くらいは押さえておきべきかな~とか思っている自分がいる・・・

# re: 正規表現はなぜ理解されていない 2007/10/07 21:58 さかもと

正規表現、その都度色々と調べて、その都度「あぁいい加減に覚えなきゃ・・・」って思ってます。

そんなに使う機会がないのが原因かと・・・。

# XDUyrDoHjyYWP 2014/08/07 6:10 http://crorkz.com/

hQriCS Thanks again for the post.Much thanks again. Fantastic.

# 激安コピー 2017/09/29 10:46 nbzscxlrl@hotmail.co.jp

超人気クリスチャンルブタンクリスチャンルブタン通販超N品シューズ超N品

タイトル
名前
Url
コメント