見出し画像

【開発哲学1】〜詳説正規表現 第3版を読んだ感想〜

で、予告していたとおり、時間がある時に、開発哲学系の本を読み始め、、、💦

を、ちょっと、他の作業が立て込んでいたり、
他に読みたい洋書

読みたい小説

があったのと、
現在業務で使っているプログラミング言語がGASだったりしながら、
著者が必要と言っている章をやっと1周読み終わったので温かいうちに感想を。

本書の構成

全10章の構成だが、著者が冒頭で書いているとおり、

第1〜6章:
正規表現全体の仕組みを理解するのに必要な部分(=総論)。
第7〜10章:
perl,Java,VB,net,PHPの正規表現周りのテクニックや効率的な書き方などを論じている(=各論)。

率直な感想

正規表現を使う人は是非是非、6章までは通読して考え方に触れた方がいい。とにかく、奥が深い。

感想詳細

以前他の記事で触れた

に比べて、

すごくマニアック

なところまで、書かれている。

だからと言って、

それが悪いと言っているわけではない

し、

むしろありがたい✨

中々独特な節回しだったりで、読みにくいなあと感じることもあったのだが、しっかり6章の最後まで読み進めると、

なるほど。てか全部繋がっているからこういう書き方なのね。

と正規表現の全体像が、エンジン(NFAとDFA)の違いなども含めて、理解できる感じで、納得な1冊。

ただし、Perlでのサンプル例が多いため、人によっては、
「自分には関係ない」
「すぐに使える答えだけが欲しい」
と挫折するか、必要そうなところだけつまみ食いして終わりかも。

例えば、リファレンスやAppendix的な役割を期待しているだけならば、
15ページや、30ページ、46ページなどを見れば事足りることもあるかもしれないし、それで、ある程度の正規表現の抜き出しが出来ればわかった気になるかもしれない。

しかし、この本で通底しているのは

結局、正規表現にも絶対の答えなんかない
👉状況にあった答えの導き方=正規表現の考え方を身につけること。

に尽きるので、何か複雑なことをしないといけない時や、いざ動かしてみると気づかないエラーが発生して大きなしっぺ返しを喰らうかも。

まだまだ1周目だから、理解したなんてゆー方が烏滸がましいけど、
例えば、第4章を数行でまとめると、
・正規表現のエンジンには、DFAとNFAがあり、
・DFAと違ってNFAは、指定された正規表現にマッチするものを
・保存ステートを使って、
・クルクルクルクルとバックトラックしながら探して行く
から、余計な処理時間を消費しないように、効率的な処理の方法を第5章以降で身につけようね。

って流れに繋がっていく。

で、6章まで読み終わると、また第1章から読み返したくなる。

読んでよかったなあと思う点

今まであまりWEB周りよりもDB周りの業務に携わってきたので、
正規表現よりSQLの方が馴染みが深かったのだけれど、
今回GASを使うことになり、正規表現に本格的に触れた。
ただ、WEBで見ても解説が薄かったり、根底の理解がなかったりで、
結構、苦戦していた。
そこで、この本を買って読んだんだけど、
第1〜2章で触れられている、基本的な記法やエスケープ文字の意味が理解できた上で、

「ああ、結局絶対的な答えなんて正規表現にないんだ。だから、状況に合わせて、その都度、最適な正規表現を見つければいいんだ。試すしかないなあ。」

ってことが肌でわかってよかった。

他の本を読み終えたら、またこの本は定期的に読み返すだろうな。
本当に奥が深いし、
読み返すたびに新しい発見がありそう。

開発哲学本の旨み

知ら(読ま)なくても、動くものは作れる。
しかし、知ら(読ま)ないと、最適解からは遠のく。
開発とは、所詮、正解ではなく、最適解を見つけること。
👉開発に関する考え方=哲学
→開発哲学
答えなんざない。
と哲学的に書くと、漠然としているけど、
本や学校などで習ったやり方以外の要求がきた場合に、考え方が身についとくと、できること=最適解が増えるってことかな🙇‍♂️

偉そうなことは言えないけど。

次に読む本

次に読む本はコレ

今回反省したこと

前回、週に1冊ペースでなんて強気な発言をしていたけど、

哲学学ぶのに、時間を気にしても意味がない

500ページ以上ある大型本だったり、今後の作業に大きな影響のある開発哲学を、1週間で読みこなすとか無理だったな。
もっと時間をかけて、ちゃんと精読しよ。

てことで次回から不定期でゆっくり腑に落としてから、記事にしますー!

この記事が気に入ったらサポートをしてみませんか?