パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

Perlの啓蒙と促進を目指す「Japan Perl Association」発足」記事へのコメント

  • by Anonymous Coward on 2009年04月10日 2時49分 (#1546668)

    難点といえばソースが丸見えなことがビジネス的に問題なくらいで、Javaが目指したクロスプラットフォームは満たしているし、開発者にとって日本語みたいなUNIXシェルや、一番慣れ親しまれている開発言語であるCとの共通点も多いので、Javaほどプログラマに求める新たな開発スキルは必要ない。

    現実に組織内で完結する環境では、業務ツール開発言語として最も頻繁に使われてるように思える。

    • by pumipumipon (37998) on 2009年04月10日 10時02分 (#1546759)

      自分の組織内でPerlをほとんど使わなくなった主な理由は、次の4つ。

      - true, false の boolean値を利用できない。
          CやJavaを利用している人にとって、これが使えないのはかなり痛い(自分だけ?)。

          Perlの場合、bool値を使う場合は、常にuse constant を使うか、
          sub true() { return 1; }
          sub false() { return 0; }
          などの記述をする必要がある。非常に面倒。

      - オブジェクトを呼び出す際に new 演算子が必ずしも必要でないため、開発者の嗜好や、開発環境の慣習によってコードがバラバラになっていることが多く、可読性が低いものが多い。

      - モジュール(クラス)を作る際、いちいち bless をする必要がある
          一度覚えれば分かりにくくは無いが、他の言語に比べて余計なコーディングしている感は否めない。また、人によって、$this だったり、$self だったりマチマチなのもいただけない。

      - public, protected, private などの指定ができない。
          よって、モジュール(クラス)のどのメソッドでも呼び出せる。危険なだけではなく、どれがインターフェースなのか分かりにくく可読性が悪い。

      上記が満たされるようになれば、また使いたい言語です。

      親コメント
      • by taro-nishino (32033) on 2009年04月10日 10時32分 (#1546773)

        今や、PerlでOOするのなら、ごしごし書きませんよ。MooseやMouseを使えば、
        blessなぞ、書く必要もないです。もちろん、boolean等の型指定も可能です。
        ここらへんのことが余りにも知られてなくて、JPAが啓発して行こうと考えているのでしょう。

        親コメント
        • MooseやMouseモジュールの存在を知らなかったので、ざっと見てみました。
          しかし、結論から言うと、まだ使う気になれないですね…。

          MooseやMouseの記述方法が、モジュールではなくPerlの言語として正式に組み込まれるのであれば使う気がおこるのですが、今のところそうではなさそうなので…。

          このような混乱が続く以上、積極的にPerlで開発するというメリットを感じません。
          少なくともアクセサは言語の中に組み込まれるべきだと思います。(使う使わないは別にして)

          # MooseやMouseについて、教えていただきありがとうございました。勉強になりました。

          親コメント
          • by taro-nishino (32033) on 2009年04月10日 14時18分 (#1546920)

            MooseやMouseの記述方法が、モジュールではなくPerlの言語として正式に組み込まれるのであれば使う気がおこるのですが、今のところそうではなさそうなので…。

            このような混乱が続く以上、積極的にPerlで開発するというメリットを感じません。
            少なくともアクセサは言語の中に組み込まれるべきだと思います。

            極論すれば、MooseやMouse等を完全にコアに入れたものが、Perl6なんです。
            「混乱」等ないと思いますが、あるとすれば非英語圏の人だけだと思います。
            Mooseのメインメンテナである、Dave Rolsky氏は(「Mason」という本の著者で有名ですが)
            は、Perl Foundationから資金を受けて、Mooseのドキュメントを沢山書いてくれました。
            これを読めば十分なんです。分からなければ、Daveに質問すればいいのです。現に、
            この私でさえ、相手にしてくれました。

            親コメント
      • by Akiho (5343) on 2009年04月10日 11時05分 (#1546787)

        CもJavaもやるけど、true/false無くても別に痛くない。
        人によってマチマチになる点はコーディング規約で縛ればいい。
        命名規約でも縛ればいい。

        自由すぎて困るなら、自分で枠を作ってやればいい。
        # それがフレームワークの別の側面だと思う

        親コメント
        • by pumipumipon (37998) on 2009年04月10日 12時10分 (#1546831)

          booleanがなくても構わないというのは、すごいですね。
          そもそもbooleanって、0と1だとコードの可読性が低くなるから導入されたものですよね。

          $is_valid = true;
          $is_valid = false;

          $is_valid = 1;
          $is_valid = 0;

          上記のコードでは、あきらかに前者の方が理解しやすいです。後者は1という数値が真を表しているのか分かりませんし、0と1だけではなく、ひょっとすると 2,3,4...という数値があるかもしれないという疑念にかられてしまいます。(実際に2以上の値がついたコードで嵌ったことがあります。)

          > 人によってマチマチになる点はコーディング規約で縛ればいい。

          コーディング規約を決めるコストが高つくので、あまり使わなくなったという経緯があります。
          真偽値の扱いをどうするかとか、アクセサのモジュールはどれを使うのとか、そういったことを開発前に打ち合わせること自体、時間の無駄だと思います。

          親コメント
          • 確かに欲しい時ありますね。

            とはいえ、Cでも、C99まで言語仕様にtrue/falseは無かったのですが、
            コード規約や共通で使用するマクロで定義されていたから、
            それほど問題は無かったです。
            これがakiho氏の考え方ではないでしょうか。

            親コメント
            • coffe_ataさん、代弁ありがとうございます。

              pumipumiponさんは言語仕様にbooleanを入れるべきと言っているように見えたもので。
              『コード規約や共通で使用するマクロで定義』があれば済む話だと思うんですよね。
              それがいわゆる業界標準的なものになれば、尚良しでしょうか。

              例えば「真は必ず"true"とし、共通ライブラリXに用意した真偽判定関数のisTrue()を使うこと」とか。

              となると「0か1ではないコードを書く未熟者が現れる」は
              「規約を守れないアホの出現」の話になるわけで。
              そこまでアホな奴の対処は業務上では不要というか、排除か再教育かでしょう。
              # 以上、1点目の解消案。

              # 2点目はコーディング規約で、4点目は命名規約で解消可能。
              # 3点目は笑いどころと受け取りました;-D

              親コメント
          • by Anonymous Coward

            >そもそもbooleanって、0と1だとコードの可読性が低くなるから導入されたものですよね。
            $isValid(正当かどうか)っていうように、変数側の命名基準がハッキリしてれば
            0か1か2かじゃなく"真か偽か"の二択だっていう事は判るだろうし、言語の問題というよりはどっちかというと
            読む側の"行間を読む"能力の問題じゃないの?

            • はい。そのとおりです。
              変数名の命名規則でほぼ判別できます。
              ただ、true か false のほうが確実ですよね?

              一番怖いのは、変数名をだけを見て、読む側が0か1だろうと判別してしまうことです。
              書く側が未熟で、0か1ではないコードを書く可能性だってあります。その場合、原因に気づけず、多くの時間を費やすかもしれません。

              これまでの経緯で分かると思いますが、Perlのbooleanの有無については、必ずこのような議論が発生してしまいます。
              私はこのようなこと自体が無駄だと思うので、あまりPerlを使わなくなったのです。

              親コメント
      • by Anonymous Coward
        上げた理由を見ているとCでのコードの書き方を無理やりPerlでも通そうとして
        はまっている様にしか見えないのだが、私だけだろうか.....
        • by Anonymous Coward
          > 上げた理由を見ているとCでのコードの書き方を無理やりPerlでも通そうとして
          > はまっている様にしか見えないのだが、私だけだろうか.....

          たぶんあなただけだと思います。
          その証拠に、perlでのコードの書き方を例示した人が誰もいません。
    • by Anonymous Coward on 2009年04月10日 3時19分 (#1546673)
      > Javaほどプログラマに求める新たな開発スキルは必要ない。

      最近のPerlはそうでもない気がします。
      親コメント
      • by Anonymous Coward on 2009年04月10日 3時40分 (#1546677)

        他人のコードを読むスキルには、かなり高度なものが必要だと思います。

        #ビール片手に一ヶ月前に書いた自分のコードは(ry

        親コメント
        • >#ビール片手に一ヶ月前に書いた自分のコードは(ry

          Syntax errorと中の小人さんがおっしゃっております。
          もちろん私にも読めません。
          --
          spam嫌いなbeefeater
          でも豚肉は好き
          親コメント
        • ピンクのらくだ本(Perl4の時代っすね)を一通り理解したロートルなんで大外
          しかも知れませんがご容赦を。
          perlスキルは、自分ででかいの書いたことはなくて、フリーのCGIを拾ってき
          て改造する程度です(^^;;

          以下の2点で、やっぱりperlは読みにくいよなぁ、、、と思います。
          # (念のため)Hobby useでの話です。業務ではLL自体使いません

          1. 暗黙の参照
          これのおかげで記述が省略されているところが多いと読み下すのにすごく大変
          です。
          # 『慣れ』の問題だとは思うんですけど、『慣れるまでが大変』というか、
          # 『慣れる前に放り出したくなる』っていうか(苦笑)

          2. やりかたは何通りもある
          らくだ本に何度も出てくるフレーズで“perlらしさ”の原点なんだろうとは理
          解していますが。。。例えば(Cで記述しますが)

          int foo_1(int x)
          {
              return (x ? x*foo_1(x-1) : 1);
          }
           
          int foo_2(int x)
          {
              if (x != 0){
                  int result;
                  result = x * foo_2(x-1);
                  return result;
              }
              else {
                  return 1;
              }
              /* NOT REACHED */
          }

          foo_1 とfoo_2は同じことをする関数(完全に等価かどうかは突っ込まんでくだ
          さい)ですが、私も若い頃はfoo_1のような書き方がカッコいいとイキガッテ(笑)
          たんですけど、業務で書くならfoo_2のように書きます。

          で、偏見だと思う(思いたい)んですが、perl遣いのかたってfoo_1のような記
          述を好む傾向がある気がしています。。。

          ---- こういう人間がJPAの啓発対象なんだろうなぁ・・・(苦笑)

          --
          ♪潔くカッコよく生きてゆこう
          親コメント
          • それは foo_1 に書くのは oneliner 的な書き方をする場合などで、仕事でコーディング規約を揃えてやろうっていう場合は foo_2 のように書ける人ばかりだったりしますね。
            しかしそれはそういったコーディング規約を決めずに好き勝手に書いていい状態で野放しにした結果なんじゃないでしょうか。

            どんな言語を使ったって 1 ステップごとに内容のコメントを書いていく人やわざわざ難解な記述 (単項演算子を使うとかいうレベルではなく) にする人はいますので、そこは言語の責任ではないように思えます。

            親コメント
        • by Anonymous Coward

          もう、この手のはFUD扱いしても良いんじゃないかな。

          ・TMTOWTDI (There's More Than One Way To Do It.) で書き方が多彩
          ・暗号のような正規表現が頻出
          ・$,@,%等の変数接頭辞

          あたりが挙げられるけれど、別にそれは欠点ではないし(変数接頭辞はむしろ読みやすい)
          ・純粋なオブジェクト指向ではない
          とか、殆ど言いがかり

          ・そもそもPerlの基礎知識が足りない
          ・そのソースの書き方が汚い

          という本質的な理由を、Perlのせいにしてるのが殆どじゃないの?

          なんて指摘するとヒステリー起こす人がいるんだけど
          別にPerlに慣れてないのは恥ずかしい事じゃないわけで、使い込んでみたら意外と良い物だよ。

          Perlはゴミ言語、そう思っていた時期が私にもありました。
          今ではガラクタ出力機だと思って愛用してます。

          • by _Neon (22944) on 2009年04月10日 9時59分 (#1546754) 日記

            今ではガラクタ出力機だと思って愛用してます。

            "ガラクタ出力機"ってのは本当にぴったりだなぁ。もちろん良い意味で。

            あとはtkとかGDとかイメージマジック使わずに簡単なGUIが作れてグラフ作図や図形描画ができれば最高のがらくたメーカーなんだがなぁ。マルチプラットホームだし。

            それなりに一通りの言語触ってきてそれぞれ向き不向きがあるのは分かるけど、とりあえずちょっとしたアイディアとかを試す時の楽さでいえばPerlが一番楽ちんだなぁ。言語のポリシーにもブレがなくていい。

            アバウトにアバウトなプログラムが書けてアバウトに動かしても"きちんと"アバウトに動く、そんな感じ。もちろんキッチリとキッチリとしたコードを書いてキッチリと動かすこともできる。ラリーウォールの言語仕様に対するバランス感覚が天才的なんだと思う。ラクダ本を読むと特に。

            # と、M1中だがあえてコメント

            親コメント
            • >あとはtkとかGDとかイメージマジック使わずに簡単なGUIが作れてグラフ作図や図形描画ができれば最高のがらくたメーカーなんだがなぁ。マルチプラットホームだし。

              この時代、GUI が必要ならウェブシステムにしちゃえばいいんですよ。

              親コメント
          • by coffe_ata (31369) on 2009年04月10日 11時10分 (#1546790) 日記

            最近は、グダグダなPerlもありかなと思うようになりました。

            Perlって元々行儀の良い言語じゃなくて、生まれも育ちも悪い。
            それでも熱い魂は持っている、Punkな言語なんですよね。

            おバカなプログラマであっても、只のノイズにしか見えない
            コードしか書けなくても、快く受け入れてくれる。
            教科書に書かれたようなコードより、勢いのある熱いコードが似合う。
            そんな言語だと思うようになりました。

            # 変態技巧を凝らしたコードも好きですけど!

            親コメント
          • by Anonymous Coward on 2009年04月10日 17時53分 (#1547085)
            まったく間違ってる。

            perl が批難されてるのは、
            「使えない」からじゃなくって、
            「難解」だからだ。

            本当に perl を批難してる人は、perl が使えない等と言わない。
            わからないのは、恥ずかしい事じゃないだと?
            的外れも甚だしい。

            たとえば、perl ベストプラクティスって本を読んでみればわかるが、
            やってはいけない事、使ってはいけない方法が大量に書いてある。
            そしてそれらは過去の互換性のために、未だに使用できる状態だとわかる。
            再利用を意図されていない他人のコードを再利用する場合には、
            最低でも、こんな本に書かれている事のすべてに精通している必要がある。
            # もしくは、自力でそれら問題を看破する必要がある。

            ほぼ並の人が解析できる量を、遙かに超えた自由度をもつ構文で、
            必要とあらば使ってはいけないと言われる機能を自由に使う事ができ、
            # 使ってはいけないと言われているんだから、当然、使い方など憶えてない。
            同じ目的に複数の記法があり、書き手の好みによって自由に選択する事ができる言語を、
            難しいと言わずしてなんて言えばいいんだ?
            親コメント
          • 正規表現については言い掛かりだと思うけど、
            (正規表現で処理したいからするのであって、嫌なら別の方法で処理すればいい)
            「書き方が多彩」がある意味で欠点とされるのは仕方無いと思いますよ。
            特に、ビジネスでは、

            個人でちょこちょこやるにはこんな気軽な環境は無いけど、
            仕事なら相応のフレームワークを加えた方がいいんじゃないかと、

            「そのソースの書き方が汚い」についても、
            フレームワーク導入で解決すべき事だと思うな。
            自分のスタイルでないソースは読み難くて汚く感じるもんだよ。
            で、それが「書き方が多彩」と言う「欠点」と言われるわけだから、

            > 別にPerlに慣れてな

            • by Anonymous Coward on 2009年04月10日 11時47分 (#1546813)
              > 正規表現については言い掛かりだと思うけど、
              >(正規表現で処理したいからするのであって、嫌なら別の方法で処理すればいい)

              これはそうとも言えないんだけども。

              >「書き方が多彩」がある意味で欠点とされるのは仕方無いと思いますよ。

              なんというか、perl擁護派は昔の非構造化BASIC擁護派と同じタイプの主張をしているんだよね。
              手軽さ、機能の豊富さを誇り、欠点は「君が慣れてないから」で片付ける。
              perlはあれもこれも出来る、(perlはXXが難しい、面倒くさいという意見に対して)それはperlに慣れていないだけ、俺には簡単
              親コメント
              • by Anonymous Coward

                正規表現が無ければ、オートマトンで書けばいいじゃない。

            • by Anonymous Coward

              > > 別にPerlに慣れてないのは恥ずかしい事じゃないわけで、
              > うわっ、凄い上から目線!

              そりゃ、ある言語が使える人は、使えない人よりも上でしょ?
              # どういう基準で上かはよく分からんが

              「知らなくても別に良いじゃん」ってのがそんな反応するほど上から目線ですかねぇ

              「Rubyワカンネ」「知らなきゃ読めないよ」
              「Pythonイミフ」「覚えりゃ読めるよ」
              ってのと同じ話なんだけど、これらも上から目線ですかね

              • by Anonymous Coward on 2009年04月10日 11時20分 (#1546796)

                > 「知らなくても別に良いじゃん」ってのがそんな反応するほど上から目線ですかねぇ

                「知らなくても別に良いじゃん」って、何処が?

                #1546737 [srad.jp]の以下の部分が「上から目線」だと言ってる事は読み取れるよね?

                > ・そもそもPerlの基礎知識が足りない
                > ・そのソースの書き方が汚い
                >
                > という本質的な理由を、Perlのせいにしてるのが殆どじゃないの?
                >
                > なんて指摘するとヒステリー起こす人がいるんだけど
                > 別にPerlに慣れてないのは恥ずかしい事じゃないわけで、

                Perlに難を示された場合に、
                『基礎知識が足りない』『書き方が汚い』と返すのが駄目駄目なの。

                その前に挙げられていたのは枝葉の話だけど、
                それらは確かにPerlの特徴として存在するものであって、
                それぞれに、それが問題にならないようにする解も用意されてるよね?

                それらを示して解決に導くのではなく、
                「そんなの問題ではない」と客観視の出来ない高慢な態度で、
                (相手が問題視してる部分に「俺は問題だと思わない」と返すのは論外でしょ)
                「お前の知識や書き方が至らないだけ」と切り捨ててしまって、
                挙句、『慣れてないのは恥ずかしい事じゃない』等と言う。

                違う違う、Perlにはちゃんと解法が用意されてるから。
                なのに、それを教えられなかっただけでしょ?
                慣れてなくて上手く教えられないのは恥ずかしい事じゃないけどさ。

                そりゃ「Perlは使えねぇな」と言う評価になりますよねぇ。
                本当は、その場その場で妥当な解決策を提示出来ない、
                その人に対する評価(このPerler使えねぇな)であるべきなんですけど、
                その人は「Perlはそーゆーもんだ」と言う態度なので、
                その周囲ではPerlの評価が下がってしまう。

                親コメント
              • by Anonymous Coward
                > そりゃ、ある言語が使える人は、使えない人よりも上でしょ?
                > # どういう基準で上かはよく分からんが

                分らないまま言い切る言語センスが凄い。
    • by Anonymous Coward on 2009年04月10日 5時42分 (#1546694)

      ウォーターフォール開発の大好きな日本の職場環境では、Perl のような Quick Hack 言語は
      受け入れられにくいと思う
      技術的に優れているものが必ずしも普及する訳ではないのはよく解っているはず
      自分もテキスト処理をしたいときに個人的に Perl 使っているだけで、他の人に
      使ってもらおうとは思わない
      (メーカー系 IT 企業だけど Unix 的な文化からは程遠いから)

      親コメント
    • by Anonymous Coward
      だよねぇ。強力だし、なんてったってお手軽。
      Javaと違って今のperlは内部UTF8で処理されるから色々楽。
      JavaだとUTF16の一部の文字の扱いが面倒で・・・
      # でも新たに要求されるスキルは多いと思うが。

      なのにビジネス用途だと尻込する人多いんだよね。
      特にえらいさん。

未知のハックに一心不乱に取り組んだ結果、私は自然の法則を変えてしまった -- あるハッカー

処理中...