Perlのどのへんが面倒臭いですか?↓の文章をまだ読んでいなければ、一度読んでみるとPerlの変なところにもそれなりに意味があったんだと納得できると思いますよ。Natural Language Principles in Perlttp://chasen.org/~daiti-m/text/natural-ja.htmlcf. The Zen of Pythonttp://www.python.jp/Zope/articles/misc/zenPerlとPythonで比べてみるとまったく逆のことを言っていて面白いですね。Perl「同じことを表す複数の言い方」Python「間違えようのないやり方がひとつだけあるのがいい」Perl「曖昧性があっても、それがすぐに解決される限り、人々はうまくやっていける」Python「あいまいなことをてきとーに処理しちゃいけません」
まずは、何より$,@,%,&を着けるのがひっかかりました、まぁただ着けるだけなら覚えれば済む話なんですが。 ひっかかったのは、@arrayの要素を指定するのは$array[0]とするけど、@arrayと$arrayは違う変数であるのがパッと見混乱しそうな気がします。 それとコンテキストによってリストとスカラと変わるのとかも、覚えるまでが面倒だなぁとか。 それといまだにリファレンスが覚えきれていないです...orz 「自分でperlを書く分にはわかっている範囲で十分」ではあるかもしれませんが、仕事では他人が書いたコードを保守することを想定していた(しかも統一的なコード規約の無い状態)ので、短期間で全体的に目を通して置く必要があったというのも混乱の元だったのかもしれません。 文法の問題とかはPerlの流儀に慣れればいずれ気にならなくなるんだと思うんですが、実はPerlの案件自体がうやむやになったのでそこまでのモチベーションが無くなってしまい、そこまで至れていないです。> 逆のことを言っていて Perlの端々が気に入らないと感じられるのはまさにこの辺の精神かなぁと思ったり...。
僕にとっての言語の好き嫌いは自分が書いていて気持ちいいかで判断しているので、保守性については全く考えていませんでした。確かに保守性を考慮していないPerlのソースコードを後から読むのは辛いかもしれませんね(でもそれってCなんかでも同じ問題のような気もします)。Perlのsigil($,@,%,&,*)は変数の一部と思うと混乱するので、むしろ語尾変化の一種と考えた方がいいです。あとOOPを使う近代的なPerlプログラミングでは割とリファレンスを多用するので、その辺の区別も重要ではなくなっています。$a = [0, 1, 2]$a->[0]$a = {x => 1, y => 2}$a->{x}>Perlの端々が気に入らないと感じられるのはまさにこの辺の精神かなぁと思ったり...。僕はPythonの「間違えようのないやり方がひとつだけあるのがいい」というポリシーに未だに納得できていません。PythonのWebフレームワークだけで一体いくつあるのかと...。
> むしろ語尾変化の一種と考えた方がいいです 昔、Perlは自然言語と同じだと言われていたのを覚えていたので、Perlを勉強していわんとしているところはわかった気がします。> PythonのWebフレームワークだけで一体いくつあるのかと...。 そこがPythonの実装しやすさなのですよー...という言い訳(汗 一応それぞれに目指すところとかは違っているのでまぁいいかなぁと思ったりします。ただ、kidをシンプルにしたGenshiなんかはあまりに簡単にforkしてしまっている気もします(Webフレームワークでは無いですが)。