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

プログラミングのカルト宗派」記事へのコメント

  • by 335 (4199) on 2008年01月04日 9時08分 (#1275074) 日記
    根性、苦行系がみつからない
    • by Anonymous Coward
      苦行系というか, ライブラリや他人のコードの再利用はせずなんでも自分で書きたがる人はいるよね.
      自前のXMLパーサーのメンテで働いたつもりになるのはマジでやめてほしい.
      そういうのが趣味なら余暇でやってくれよと.
      • Re:あれ? (スコア:5, おもしろおかしい)

        by 335 (4199) on 2008年01月04日 9時41分 (#1275086) 日記
        なんでもかんでもコードを再利用せよというやつが
        GPLに「汚染」されたなんていうんですよね。

        GNUのソース盗んどいて、仕事ができたことにするのはマジでやめてほしい
        そういうのが仕事ならヤクザやってくれよと
        親コメント
        • by Sukoya (33993) on 2008年01月04日 9時45分 (#1275088) 日記
          期間内に仕事が終わって、後腐れが無いならどっちでもいいよ……
          親コメント
          • by 335 (4199) on 2008年01月04日 9時47分 (#1275090) 日記
            実はどちらでもいいのに、こういうふうに主張をするのが
            プログラミングにおけるカルトなのでは?
            親コメント
            • by Anonymous Coward
              どちらでもいいというより, どちらも良くないが正解かと.
              再利用カルト と すべて自前カルト
              で,最悪がコードを書かずにどのカルトが最悪か延々議論すること.
              さ, 今日から仕事仕事.
      • Re:あれ? (スコア:3, おもしろおかしい)

        >なんでも自分で書きたがる

        たしか「NIH症候群」とか言われてますよね。
        "Not Invented Here"の頭文字を取ったもの。
        古い世代のプログラマーほど罹患しやすい病気だそうで…。

        --
        clausemitz
        親コメント
        • by Anonymous Coward
          > 古い世代のプログラマーほど罹患しやすい病気だそうで…。

          やばい、当てはまってるかも…
          インタフェースが気に入らないって理由だけで、
          コードを全部書き直してつかったりしてる。

          テストだるいのが歯止めになってやらない事がおおいけど、
          元から信憑性の低いコードでは嬉々として書き直す事がおおい。
      • by paprika (5024) on 2008年01月04日 17時44分 (#1275325) 日記
        反論。

        > 自前のXMLパーサーのメンテで働いたつもりになるのはマジでやめてほしい

        xercesを使ったときは二週間かかって全体の一割くらいしか理解出来なかったけど、
        “オレSAX”を作ったときは、三日くらいかかって、ほぼ完璧に動作した。

        車輪の再発名だし、最初は不安定化もしれないけど、自分自身が書いたコードだからこそデバッグしやすい。
        ヒトの作ったライブラリを習得して、生半可な理解で使ってるような暇があったら、自分で書いた方が速い/早い/正確ってことはある。

        私に言わせれば、XMLをパースすることが目的なのであって、既存ライブラリを利用することが目的なのではないと思ったりする。

        既存ライブラリを利用するのは「手段」、オレ様ライブラリを自作するのも「手段」

        どちらの手段を採用するかは、時と場合による。「自前のXMLパーサーのメンテ」の方が後々楽だと判断すれば、躊躇せずにそうする。再利用が常に最適解だとは限らない。

        親コメント
        • Re:あれ? (スコア:1, 興味深い)

          by Anonymous Coward on 2008年01月04日 21時33分 (#1275401)
          つ boost::spirit

          XMLパーサなら1時間で作れる。

          ってよりは字句解析及び構文解析ライブラリ

          ライブラリって実績のあるライブラリを利用することで質を高めるって面もあると思うけれど、
          ライブラリを理解することでライブラリを作った人の思想を理解すると言う面もあると思うんだ。

          それは自分のプログラムの幅を広げることでもあるし、
          上記のboost::spiritは特にその発想に驚愕したライブラリだったりして、
          そのライブラリコードに感銘を受けることはやっぱり大事だとおもうんだ。
          親コメント
          • by Anonymous Coward
            つbison+flex

            (似非)XMLパーサなら1時間で作れる。

            ってか、なんか論点ずれてね?
            • by Anonymous Coward
              XMLなんてやめて全部S式にすればいいんだよ!
              • by Anonymous Coward
                XML <-> S式相互トランスレータの実装ができますた。
          • by Anonymous Coward
            boost::spritは確かに驚愕でしたが、

             あれを駆使したコード、渡せる人は周りにいますか?

            と聞きたい。

            永久メンテナ志望ならいいですが、コードよりも自分の人生の方が大事。
          • by Anonymous Coward
            boost::spiritのソースを見ると、こりゃいかがなものかと思うぞ。
            まあ、確かに感銘は受ける。
            俺は一生かかってもこんなコードを書けるレベルには達しないだろうな。
        • by Offtopics (34135) on 2008年01月05日 1時18分 (#1275469)
          > 自分で書いた方が速い/早い/正確ってことはある。

          ↓ごめん、そうは思えなかった…
          「車輪の再発名」「最初は不安定化も」
          親コメント
          • Re:あれ? (スコア:2, 参考になる)

            by paprika (5024) on 2008年01月05日 1時39分 (#1275476) 日記
            ・他人のライブラリは習得に時間がかかるが、退屈なことが多い。
            ・自作のライブラリは実装に時間がかかるが、楽しいことが多い。

            ・他人のライブラリはまあまあ安定しているが、万一問題があったときに対処が難しい。融通が利かないことが多い。
            ・自作のライブラリは最初は不安定かもしれないが、その場ですぐデバッグしやすい。用途に応じて柔軟に対処できる。

            しばしば、頭ごなしに車輪の再発名を非難したがる人がいますが、私は、車輪の再発名は、エンジニアが成長する糧としても、実益の面でも、有効(な場合ある)と言いたいだけです。

            親コメント
            • by Anonymous Coward
              >しばしば、頭ごなしに車輪の再発名を非難したがる人がいますが、私は、車輪の再発名は、エンジニアが成長する糧としても、実益の面でも、有効(な場合もある)と言いたいだけです。

              まあ、作れるけど作らない奴が「車輪の再発明」って言うのと、そもそも作れない奴が言うのじゃ
              話が全く違ってきますしね。
              作れない奴が言ってたら単なるピエロ。
            • by Anonymous Coward
              変換ミスだと思いきや、本当に間違えて覚えてるだけなのかな。

              s/車輪の再発/車輪の再発/g;

              あと、「自分のライブラリ」を「他人がメンテする」、ってあたりのところを意識的にか無意識的にかスルーしてるのも気になるところ。
              確かに、自分のプログラムを自分だけがいじる小規模なプロジェクトなら、あなたの言うことも正しいとは思うのだけど。
              • by paprika (5024) on 2008年01月05日 14時33分 (#1275626) 日記
                > s/車輪の再発名/車輪の再発明/g;

                訂正しなかったのは私の責任ですが、間違えたのはATOKのせいです(笑

                > 「自分のライブラリ」を「他人がメンテする」、ってあたりのところを意識的にか無意識的にかスルーしてるのも気になるところ。

                ライブラリに限らず、プログラミングに限らず、あらゆる業務の「引き継ぎ」に関して、一般論として言えることだと思います。

                ちゃんとドキュメントを書いて説明するのは、作者の責任なのは理解しているつもり。
                ただ、既存ライブラリを採用したとしても、後任者もそれを習得するコストとメンテナンスするリスクを負わなければならないわけで、「既存ライブラリを採用したら解決!」という簡単な話ではありません、時と場合とライブラリの種類によるでしょう。

                親コメント
              • by the.ACount (31144) on 2008年01月05日 16時40分 (#1275663)
                >再発明
                利点/弱点を深く理解するには必要な事。
                >再発名
                まあ、非難されるだろうな。
                --
                the.ACount
                親コメント
              • by Anonymous Coward
                > 訂正しなかったのは私の責任ですが、間違えたのはATOKのせいです(笑

                でわ、ATOKを書き直すんだ!
        • Re:あれ? (スコア:1, すばらしい洞察)

          by Anonymous Coward on 2008年01月05日 3時29分 (#1275492)
          >> 「自前のXMLパーサーのメンテ」の方が後々楽だと判断すれば、躊躇せずにそうする。再利用が常に最適解だとは限らない。

          いや, あんただけがそのコードのメンテを永遠に担当するならおおいに結構,ご自由にどうぞ(納期だけはまもってね)なんですが,
          他人が書いたオレ様ライブラリを解釈してメンテ・拡張させられるチームの身にもなりなさいって.
          そのプロジェクトが自分の手を離れた後も, その俺様XMLパーサーなりの機能拡張とドキュメント化を黙々と
          勤務時間外にやってくれるならいいんですけどね.

          新たな機能を実装するためには, 往々にして他人が結局汎用ライブラリに差し替える作業を強いられると思うのよ.
          パーサー程度ならまだしも, スピード(メモリー)クリティカルな操作だと規模がおっきくなると俺様ライブラリは
          使いもんにならんということもままあるでしょう.

          (自分もすべては自分で作りたい派だし, 学生時代は3Dライブラリとか数値計算ライブラリを自分で作ってチューニングして
            やれフリーなlapackのへぼ実装よりだんぜん速いぜとかやってましたが, それは趣味であって, チームの仕事じゃない.)

          それでも俺の方が汎用ライブラリよりよっぽど洗練されたインターフェースのものを短時間で書けるというのであれば,
          あなたは独立ベンダーにでもなれば大儲けできると思うよ.
          親コメント
          • by paprika (5024) on 2008年01月05日 14時06分 (#1275609) 日記
            私だって“何を”作るかによって、既存ライブラリかオレライブラリかは使い分けますよ。

            暗号化通信しようと思ったら、さすがに私の手には負えないから、OpenSSLなりWinInetなりを使います。
            でも、XMLパーサ程度だったら、所詮文字列処理とコード変換くらいだから、自前の方がやりやすい。

            とか、あくまでも、必要に応じて、っていう話。
            親コメント
            • Re:あれ? (スコア:1, すばらしい洞察)

              by Anonymous Coward on 2008年01月05日 19時18分 (#1275691)
              元のACのコメント

              >> 他人が書いたオレ様ライブラリを解釈してメンテ・拡張させられるチームの身にもなりなさいって.

              で言ってるのは、「たとえばあなたが、プロジェクトの元メンバが書いたオレ様XMLパーサとそれを使っているコードを渡されたらどう感じるか」って話だと思うが、それでも

              > でも、XMLパーサ程度だったら、所詮文字列処理とコード変換くらいだから、自前の方がやりやすい。

              って言えるのかな?
              自前で作るなら、自分には確かに分かりやすいのは当然。しかし、 オレ様コードは、書く人は一人でその人にとっては最高なだけで、使う人・メンテする人にとっても最高とはならないんですよ。googleで検索するだけでトラブルシューティングやリファレンス検索、サンプルコード参照できる既存ライブラリに比べ、オレ様ライブラリは作者がそばにいない限りは足枷にしかなりません。もっとも、既存ライブラリがマイナーでメンテされてるかも良く分からないとか、コードが若くてバグが大量にありそうな場合はオレ様ライブラリでも良いとは思いますが。
              なので、チーム開発ならメジャーな既存ライブラリがある場合そっちを使うべきです(再実装することが手に負えるか手に負えないかじゃなくて、あくまで既存ライブラリがメジャーかそうでないかで使い分けるべき)。

              # などと言いつつ、私も他人の作ったオレ様ライブラリ(一応社内標準)を拒否して自分作ったオレ様ライブラリで置き換えることが良くあるのですが…
              ## だって他人の作ったオレ様ライブラリのデバッグなんてご免やし。
              親コメント
              • by Anonymous Coward
                教授!簡単化カルト儲を発見いたしました!
          • by foobar2006 (30156) on 2008年01月05日 20時00分 (#1275698) 日記
            カルト発見! と言わずしてなんと言おう。
            親コメント
            • by Anonymous Coward
              >カルト発見! と言わずしてなんと言おう。

              カルトじゃなくて原理主義でしょ。あの攻撃性は。
              「俺の宗教に異を唱えるおまえはサタンだ」とゆう感じで怖いですね~

          • 既製品のライブラリだって永遠にメンテ・拡張されるわけじゃないぜ。

            フリーにしろそうでないにしろ、既製品の有名なライブラリは多機能すぎることが多い。
            リヤカーで十分なのに、大型トラックを引っ張り出してくることもあるまい。
            親コメント
          • by Anonymous Coward
            > あんただけがそのコードのメンテを永遠に担当するならおおいに結構

            お前バカだな。
            誰が書いたかわからん既存のライブラリと、奴(paprika氏)が書いたライブラリで、
            メンテ・拡張する側になんの違いがあるって思うんだよ。

            汎用ライブラリより専用ライブラリの方が、
            要件に洗練されて最小限の実装になるのは当たり前だろう。
            汎用って言葉の意味知ってるのか?

            > パーサー程度ならまだしも, スピード(メモリー)クリティカルな操作だと規模がおっきくなると

            そんなでっかい奴を自前で書くわけないだろ。
            論外な例を持ち出してくるなよ。
        • by Tatenon (20311) on 2008年01月07日 19時13分 (#1276560) 日記
          自分で作れるだけの技量を持たない人間が、どこの馬の骨が書いたかわからんようなライブラリを正しく使えるのかってのも
          よくよく考えて欲しい所ですよね。

          『みんなが使ってるライブラリなんだから、正しい動作をするだろう。出力は正しいのだろう』

          などという妙な断定で使うなら、問題が発生したときは泥沼化すること請け合いです。
          ライブラリってのは自分でも作れるけど同じもの書くなら出来合いのもの使ったほうが色々手間が省けるよねっってのが本来の使い方ではないかと。

          なので使い方理解するのに一週間かかるようなライブラリなら、3日で作れる俺コードで正解だと思いますけどね。私は。
          まぁ、もちろんデバッグ込みでの話ですが。(3日で作ってデバッグに10日では本末転倒

          # いっぺん自分で書くとライブラリの有難味もまたひとしおだしね。
          親コメント
          • by Anonymous Coward
            使い方理解するのに一週間かかるライブラリを、3日で書き上げることができるか?という疑問があります。 それに、単機能の使い方ならサンプルコード読んだり簡単なテストプログラム作って半日くらいで習得できるようなのが大半じゃないでしょうか?もちろん機能の大半を理解するのにはもっとかかるでしょうけど、C++の標準ライブラリ同様、すべて理解しないと使えないってものじゃないですし。

            ライブラリってのは自分でも作れるけど同じもの書くなら出来合いのもの使ったほうが色々手間が省けるよねっってのが本来の使い方ではないかと。

        • by Anonymous Coward
          >ヒトの作ったライブラリを習得して、生半可な理解で使ってるような暇があったら、自分で書いた方が速い/早い/正確ってことはある。

          言いたいことは分かりますが、ほどほどにしないと、後任や補佐が付けられなくて、休めない、辞められない、昇進しない、という泥沼にはまります。

          まあ、後任も俺様ライブラリを書ける人なら良いんですけどね。
      • by Anonymous Coward
        それってPerfection Cultの一種かな、と思う。
        自分のコードが完璧であって、自分のコード以外で「汚染」されたものは嫌がる。

        ただ、なぜかあまり人の仕事を読まない人もいて、そのために自分のコードへの自信にかかわらず再利用しようという発想自体が無い人もいる気はする。
        • by yukichi (12361) on 2008年01月04日 10時56分 (#1275119) ホームページ
          個人的には、「自社管理で無いものは認めない」という感じの人がいる気がします...。他人の作ったものを使うのを極度に怖がる人っていますよね。僕の経験では無いのですが、メール送信に関連するPerlのプログラムを作る際に、CPANではなくて、「メンテ出来ないから自分で書いてくれ」と言われたとか。

          それって、どうなのかな、とか思うことも多いです。確かに、バグとかあったら恐いのはわかるんですが、開発の労力を考えると、既存のライブラリや人のコードを使う方がはるかにいい方法だとは思うんですけどね。
          親コメント
          • by Sukoya (33993) on 2008年01月04日 12時19分 (#1275165) 日記
            そういったライブラリの蓄積すら無いのに、いまさらゼロから造れってのは、本当はとんでもない話なんだぜ
            用意するなら用意するで、本来はそれをどのように用意するか考えておくべきなのに、当初の予算にもスケジュールにも組み込まれていない

            簡単に見えるものほど当たり前のものを見落としがちでデバッグが難しい
            そして、結局はどこかで拾ったコードを使う事になる

            ああ恐ろしい……デスマーチの足音が聞こえる……
            親コメント
          • by Anonymous Coward
            そりゃ仕方ないでしょ。仕事でやる以上は責任の所在ってものがある。
            自分たちの内部での瑕疵なら仕方ないと思えても、顔も性格も知らない、せいぜい名前くらいでしかも本名かもわからない、そんな馬の骨の作ったものに自身の責任をゆだねられるほど、人は強くないでしょ。
            一度でもライブラリのバグで苦しんだり、責任者の立場になればわかるよ。

            • by Anonymous Coward
              そんなこといってたら、Microsoftを始めとする他社の製品なんて怖くてシステムに組み込めないと思いますが。たとえ他社製品のバグだとしてもその製品を使った責任が無くなるわけじゃないし、顧客に対して「他社製品の不具合なので諦めてください」などとは言えるはずもなく、必死に不具合の回避策を探したり、製品の開発元に修正を迫ったりなどの「責任を全うするための作業」をやらないといけないですしね。
              #ソース弄るという手段が使えるのは、責任を全うするという意味においては
              #意外と心の拠り所となってたりします。
              • by vn (10720) on 2008年01月05日 17時13分 (#1275672) 日記

                必死に不具合の回避策を探したり、
                その回避策が積もり積もったものを、後から見た人が "カーゴ・カルト" と名付ける。
                だから、欠陥の多いプロプライエタリ製品を組込んでいる限り、カーゴ・カルトを信奉
                するのがいちばん安上がりで、事実上これしかない方法になる。

                オープンソース製品だけを組込んでいる場合にも、コストを考えれば第一選択はカーゴ・
                カルトになる。欠陥に突き当たれば、大抵はちょっと回避するのが手っ取り早い。
                ソースが弄れるというのは、本当に困ったときはカーゴ・カルト以外の手段も使えるぞ、
                という最後の精神的拠り所となるに過ぎない。
                親コメント
          • by Anonymous Coward
            俺はzlib使うなって会社が使ってる害虫に言われた。
            面倒くさかったんで会社やめた。
        • Re:あれ? (スコア:1, 興味深い)

          by Anonymous Coward on 2008年01月04日 17時33分 (#1275320)
          >自分のコードが完璧であって、自分のコード以外で「汚染」されたものは嫌がる

          流れを若干無視しますが、私の場合は簡単なことをしたいだけなのに、パワフルなライブラリを嫌がって自分で書くことはあります。確かにライブラリはよくできているものがたくさんありますが、そのために依存関係が厄介だとか、パラメータが多いとか困った点もあります。

          また、私がよくやることですが、プロジェクトの中でルーチンを作り、せっかくだからライブラリとして他人に使ってもらおうと欲をかいて、そのためには汎用性があって・・・とかやっていくと、プロジェクトのためにライブラリを作っていたのが、ライブラリを作ることが目的化してしまうことがあります。そうして作ったライブラリは思いの外使い勝手が悪く、再利用しないことも結構あります。

          まあつまりダメプログラマってことですけど。
          親コメント
        • by Anonymous Coward
          プログラマにとって、再利用によって得られるのは「楽」であることは誰にでも理解できる
          が実は

            - 自前によって得られるのが 「快楽」 or 「苦痛」
            - 再利用によって得られるのが 「快楽」 or 「苦痛」

          というマトリックスが存在して、対極の人がいるということは、容易には
          理解されない。でも本当は苦痛だと感じる者にとっては、耐えがたいほどの苦痛なんだ。

          プロなら再利用したことも自前で作ったこともあるだろう、発想自体が無いわけじゃない。

          • Re:あれ? (スコア:3, 興味深い)

            by SteppingWind (2654) on 2008年01月04日 12時58分 (#1275188)

            プログラマにとって、再利用によって得られるのは「楽」であることは誰にでも理解できる
            が実は

            再利用にかかる(調査・改造)工数が新規作成にかかる工数よりも必ずしも小さいとは言えない. それを承知で再利用を強行するのは賭けだったり, 苦痛を通り越して破滅をもたらすパンドラの箱だったりすることも少なくない. だとすれば, たとえ「苦」であることが分かっていても, その限度が見切れる方を選ぶというのもプロとしては合理的なんですよね. その点, 目処がつかなければ捨てることができるアマチュアとは判断基準が異なるわけで.

            もう一つは, 自分が作ったプログラムを自分で再利用する場合と, 他人の再利用を考慮した場合とではドキュメントを含めた製造コストが大幅に異なることでしょうか. 将来の定かではない多くの「楽」のために再利用できるようにしようとすると, 今の「苦」あるいはコストが少なくとも確実に増えるというのは, 再利用のモチベーションを落とすための強力な要因になると思います. このあたりは多分Easy Cultの一流派とも言えそうですけど.

            親コメント

アレゲはアレゲ以上のなにものでもなさげ -- アレゲ研究家

処理中...