アカウント名:
パスワード:
難点といえばソースが丸見えなことがビジネス的に問題なくらいで、Javaが目指したクロスプラットフォームは満たしているし、開発者にとって日本語みたいなUNIXシェルや、一番慣れ親しまれている開発言語であるCとの共通点も多いので、Javaほどプログラマに求める新たな開発スキルは必要ない。
現実に組織内で完結する環境では、業務ツール開発言語として最も頻繁に使われてるように思える。
他人のコードを読むスキルには、かなり高度なものが必要だと思います。
#ビール片手に一ヶ月前に書いた自分のコードは(ry
ピンクのらくだ本(Perl4の時代っすね)を一通り理解したロートルなんで大外しかも知れませんがご容赦を。perlスキルは、自分ででかいの書いたことはなくて、フリーのCGIを拾ってきて改造する程度です(^^;;
以下の2点で、やっぱりperlは読みにくいよなぁ、、、と思います。# (念のため)Hobby useでの話です。業務ではLL自体使いません
1. 暗黙の参照これのおかげで記述が省略されているところが多いと読み下すのにすごく大変です。# 『慣れ』の問題だとは思うんですけど、『慣れるまでが大変』というか、# 『慣れる前に放り出したくなる』っていうか(苦笑)
2. やりかたは何通りもあるらくだ本に何度も出てくるフレーズで“perl
私ならイキがりじゃなくバグを減らすためにfoo_1を選ぶけどなあ。 だってfoo_2は「長い」んだもん。
長ったらしいから目で追うのがそもそも辛いし、 中間変数を使えば変数の取り違えのリスクが生じる。
三項演算子がマズイとすれば優先順位が見づらいことだろう。 だからコーディング規約として 「三項演算子なら各要素をかならず括弧でくくれ」とでもしておくのは有意義だろう。
が、三項演算子じたいを禁止すればコードが冗長になりすぎることが有る。 冗長すぎるコードはバグの元だ。
あと、三項演算子が見た目として目立たないから気づきにくくてマズイという指摘については、SQL
ご意見ありがとうございます
>三項演算子がマズイとすれば優先順位が見づらいことだろう。
自己分析まではしたことがなかったんですが、私が引っかかってるのは多分ココです。三項演算子だけじゃなくて、
read or die
なんて記法も同様なんですよね。優先順位をうまく利用してコードを短くしてる。解説を読むと『へぇ~』とは思うんですが、イキナリこゆコードに出会うと面食らうんですよ。。。年寄りには
if (read == FALSE) then die # 架空の言語
のほうが咀嚼しやすいようで・・・ # モダンじゃないっスねぇ(汗
RODは私も少しだけ(TVで)見て結構好きになりました。
>年寄りには
何についてどう年を食ってるかにもよります。 C(の三項演算子)に慣れてると、三項演算子を使うほうが爺っぽくみえる。
Java坊やたちに read or die みたいな「論理演算子の左辺がBooleanではない(とは限らない)式」を見せると、いい獲物だと言わんばかりに騒ぎ出しますね。
#Javaしか知らない自称OOP屋なひとは、いっぽうでNullがオブジェクトではないことについて全く騒ぎ立てないから不思議だ:-O
いずれにせよ、CだのPerlだのRubyだののあそこらへんのBoolについてのユルいルールは、 (歴史は知りませんがたぶん)経験則ですよね。「型のルールとしてはちとグダグダだが、実際にコーディングしてみると、こういう書き方をすると丁度旨い具合にコーディングコストが下がる(短くなる)」というのが経験的に見えてるからこうしてる、という。
ただ、たとえば0をtrue/falseどっちとみなすか?で派閥が有るのが厄介ですが(^^;
>いずれにせよ、CだのPerlだのRubyだののあそこらへんのBoolについての>ユルいルールは、 (歴史は知りませんがたぶん)経験則ですよね。
別枝のブール値の話題にはクビを突っ込まなかったんですが、Cの場合、最終的にアセンブラコードに落ちる時のことを考えると、jz, jnz(8086ニモックの場合ね)になってくれるのが実効速度的にも利いてきますから、ゼロ/非ゼロを真偽に割り当てるのが妥当なんだと思います。(まさしく経験則)
で、偽=ゼロ、真=非ゼロで定義しておくとビット演算のand, orで破綻しないですから。実際、Cのif構文の条件判断は、偽=ゼロ、真=非ゼロですしね。
あと、if (hoge() == ture) と書いてハマるという話題があって、確かにその通りなんですが、真か偽を返すはずの関数が3とか5とかいう返り値を出すのはナニガシか『もっと大きな問題』を内在している可能性がけっこうあったりしますので、あえて
#define TURE 1#define FALSE 0
と定義して、if (hoge() == TURE) と書くように統一したこともあります。もちろん、関数単位の単体テストをキッチリやらせるのが大前提ですし、それでも1/0以外の値を返されると大ハマりするんですが、ソレでハマるケースっていうのは、アルゴリズムに致命的な欠陥がある、とか、そもそも仕様が変、だったりすることがあって、結果的にはそういう『もっと大きな問題』を早期に炙り出してくれることにつながった思ってます。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
アレゲは一日にしてならず -- アレゲ研究家
Perlはもっと評価されていい (スコア:0)
難点といえばソースが丸見えなことがビジネス的に問題なくらいで、Javaが目指したクロスプラットフォームは満たしているし、開発者にとって日本語みたいなUNIXシェルや、一番慣れ親しまれている開発言語であるCとの共通点も多いので、Javaほどプログラマに求める新たな開発スキルは必要ない。
現実に組織内で完結する環境では、業務ツール開発言語として最も頻繁に使われてるように思える。
Re: (スコア:1, 興味深い)
最近のPerlはそうでもない気がします。
Re: (スコア:2, すばらしい洞察)
他人のコードを読むスキルには、かなり高度なものが必要だと思います。
#ビール片手に一ヶ月前に書いた自分のコードは(ry
Re: (スコア:1)
ピンクのらくだ本(Perl4の時代っすね)を一通り理解したロートルなんで大外
しかも知れませんがご容赦を。
perlスキルは、自分ででかいの書いたことはなくて、フリーのCGIを拾ってき
て改造する程度です(^^;;
以下の2点で、やっぱりperlは読みにくいよなぁ、、、と思います。
# (念のため)Hobby useでの話です。業務ではLL自体使いません
1. 暗黙の参照
これのおかげで記述が省略されているところが多いと読み下すのにすごく大変
です。
# 『慣れ』の問題だとは思うんですけど、『慣れるまでが大変』というか、
# 『慣れる前に放り出したくなる』っていうか(苦笑)
2. やりかたは何通りもある
らくだ本に何度も出てくるフレーズで“perl
♪潔くカッコよく生きてゆこう
Re: (スコア:0)
私ならイキがりじゃなくバグを減らすためにfoo_1を選ぶけどなあ。 だってfoo_2は「長い」んだもん。
長ったらしいから目で追うのがそもそも辛いし、 中間変数を使えば変数の取り違えのリスクが生じる。
三項演算子がマズイとすれば優先順位が見づらいことだろう。 だからコーディング規約として 「三項演算子なら各要素をかならず括弧でくくれ」とでもしておくのは有意義だろう。
が、三項演算子じたいを禁止すればコードが冗長になりすぎることが有る。 冗長すぎるコードはバグの元だ。
あと、三項演算子が見た目として目立たないから気づきにくくてマズイという指摘については、
SQL
Re: (スコア:1)
ご意見ありがとうございます
>三項演算子がマズイとすれば優先順位が見づらいことだろう。
自己分析まではしたことがなかったんですが、私が引っかかってるのは多分コ
コです。三項演算子だけじゃなくて、
なんて記法も同様なんですよね。優先順位をうまく利用してコードを短くしてる。
解説を読むと『へぇ~』とは思うんですが、イキナリこゆコードに出会うと面
食らうんですよ。。。年寄りには
のほうが咀嚼しやすいようで・・・ # モダンじゃないっスねぇ(汗
♪潔くカッコよく生きてゆこう
Re:Perlはもっと評価されていい (スコア:0)
RODは私も少しだけ(TVで)見て結構好きになりました。
>年寄りには
何についてどう年を食ってるかにもよります。 C(の三項演算子)に慣れてると、三項演算子を使うほうが爺っぽくみえる。
Java坊やたちに read or die みたいな「論理演算子の左辺がBooleanではない(とは限らない)式」を見せると、いい獲物だと言わんばかりに騒ぎ出しますね。
#Javaしか知らない自称OOP屋なひとは、いっぽうでNullがオブジェクトではないことについて全く騒ぎ立てないから不思議だ:-O
いずれにせよ、CだのPerlだのRubyだののあそこらへんのBoolについてのユルいルールは、 (歴史は知りませんがたぶん)経験則ですよね。
「型のルールとしてはちとグダグダだが、実際にコーディングしてみると、こういう書き方をすると丁度旨い具合にコーディングコストが下がる(短くなる)」
というのが経験的に見えてるからこうしてる、という。
ただ、たとえば0をtrue/falseどっちとみなすか?で派閥が有るのが厄介ですが(^^;
Re:Perlはもっと評価されていい (スコア:1)
>いずれにせよ、CだのPerlだのRubyだののあそこらへんのBoolについての
>ユルいルールは、 (歴史は知りませんがたぶん)経験則ですよね。
別枝のブール値の話題にはクビを突っ込まなかったんですが、Cの場合、
最終的にアセンブラコードに落ちる時のことを考えると、
jz, jnz(8086ニモックの場合ね)になってくれるのが実効速度的にも利いてき
ますから、ゼロ/非ゼロを真偽に割り当てるのが妥当なんだと思います。
(まさしく経験則)
吐くそうなんで、若いヒトにはピンと来ないかも
で、偽=ゼロ、真=非ゼロで定義しておくとビット演算のand, orで破綻しな
いですから。
実際、Cのif構文の条件判断は、偽=ゼロ、真=非ゼロですしね。
あと、if (hoge() == ture) と書いてハマるという話題があって、確かにその
通りなんですが、真か偽を返すはずの関数が3とか5とかいう返り値を出すのは
ナニガシか『もっと大きな問題』を内在している可能性がけっこうあったりし
ますので、あえて
と定義して、if (hoge() == TURE) と書くように統一したこともあります。
もちろん、関数単位の単体テストをキッチリやらせるのが大前提ですし、それ
でも1/0以外の値を返されると大ハマりするんですが、ソレでハマるケースっ
ていうのは、アルゴリズムに致命的な欠陥がある、とか、そもそも仕様が変、
だったりすることがあって、結果的にはそういう『もっと大きな問題』を早期
に炙り出してくれることにつながった思ってます。
♪潔くカッコよく生きてゆこう