パスワードを忘れた? アカウント作成
13523005 story
プログラミング

プログラムの写経、もしくはカーゴ・カルト・プログラミングを抜け出すきっかけは? 74

ストーリー by hylom
ほしい物はコピペで作れなかったから 部門より
あるAnonymous Coward 曰く、

スラド読者の皆さんは、プログラムの勉強の為に、教科書や参考書通りにプログラムを入力する「写経」の様な行為や、カーゴ・カルト・プログラミングの様な事を経験した事があると思う。

その段階を抜け出したきっかけは何だろうか?

その処理が何を意味しているかを深く考えず、不必要であるものも含めてとりあえず動いているコードをコピペするようなプログラミングスタイルを「カーゴ・カルト・プログラミング」などと呼ぶそうだ。

カーゴ・カルト」とは、文明レベルに差のある人々が交流したとき、文明の遅れたほうの人たちが進んだ方の人たちの所有物を「神が作った物」と考え、その中身ではなく外見を模したものを作り出す行為。コードを理解できずにコピーすることからこういった名前が付けられたそうだ。

関連リンク

  • 多分、習い始めた(FORTRAN)1-2か月くらいは、教科書そのままを売ってみたんだと思うんだけど。

    ここに返信
  • 全ての技術は模倣から始まる。最初の一歩は良いものを模倣するのが最善です。
    模倣したものを少しずつカスタマイズしていくうちに技術が身につく。
    が、技術が身についただけでは職人として一人前になったに過ぎない。
    オリジナリティのあるものを作れるかどうかは別の問題。

    # 最初に変なものを模倣するとまずい…

    ここに返信
    • by Anonymous Coward

      会社の新入社員教育でEnterprise Hello Worldを叩き込まれたのが俺の人生の分岐点だった

  • 写経から抜け出したのは、自分が思っていることをやらせるにはパソコン側にも理解出来るように書かないとならないってのを明確に認識したあたりですかね。
    「int型?float型?なにそれ、同じ数字なんだからそれくらい同じように処理してよ」なんて思ってた時期もありました。

    # 趣味レベルでしか書いてないので、本職の人からしたらまだまだ全然

    ここに返信
  • 「カーゴ・カルト」とは、文明レベルに差のある人々が交流したとき、文明の遅れたほうの人たちが進んだ方の人たちの所有物を「神が作った物」と考え、その中身ではなく外見を模したものを作り出す行為。コードを理解できずにコピーすることからこういった名前が付けられたそうだ。

    どこぞのサーバーで動かしてたスクリプトがこちらのサーバーで動かないのは、こちらのディスクパス構成がおかしくなっているのが原因。
    コマンドを置いているパスを(以前どこかで使ってたサーバーと同じものに)「直して」くれ。
    という呪いみたいなリクエストは年に何回か飛んできます。

    そのスクリプトの中のコマンドパス指定を今使っているサーバー環境に合わせればいいのに。
    普通、利用環境で変わりそうなのってスクリプトの最初の方で定義してるんじゃないのかな。
    #「普通」っていうのも個人の思い込みで通用しない罠。

    ここに返信
  • 「その段階を抜け出したきっかけは何だろうか」

    プログラムはアルゴリズムありき。
    アルゴリズムを現実に動かすのがプログラミング。
    自分はプログラミング歴 38 年の初心者ですが、覚えたときからそうしています。

    サンプルプログラムは動かしても、コードをそのまま動かすなんて、怖くてできない。
    そんなことしたら、バグが有っても取れないじゃん。

    優れたコードがあっても、そこからアルゴリズムを導き出せるまでは使いません。
    …プログラムではね。
    ---
    sendmail の CF を書くときは今でも・・ゲフンゲフン。

    ここに返信
  • by jizou (5538) on 2018年02月10日 6時50分 (#3359296) 日記

    ゲームするためにバイナリの入力はしていた気がするけど、あれは写経っていうんだろうか。

    本を読んでコマンドを覚えて、PCのあるところでプログラミングをしていたから、
    最初から写経はしてないなぁ。やりたいことがあるから、プログラミングするんだし。
    今は写経もしないんじゃないかな。
    あちこちにコードがあるから、コピペするだけ。

    ここに返信
  • by Anonymous Coward on 2018年02月09日 15時05分 (#3358815)

    やりたいことを実行させるのに必要なアルゴリズムと機能を実現するために必要な関数群を思い浮かべて設計できるようになるかどうかが分かれ目だろう。
    何をどう実行させたらいいかわからないうちは、内容なんて理解できずにコピペしているなんてことが新人には多い。
    内容を理解していないから、問題が発生しても対処できなかったりする。

    ここに返信
    • by Anonymous Coward

      今だとライブラリやプラグインを探して使うのが主流になってるから
      もうそれもアリと思い始めてる

  • by Anonymous Coward on 2018年02月09日 15時23分 (#3358825)

    > ほしい物はコピペで作れなかったから

    多分カーゴ・カルトから抜け出さない/抜け出せない人達って、その「ほしい物自体」を想像できない/しない人たちなんじゃないかなと思った。

    何年か前に新人が何かの時に言った「教えてもらってないから考えませんでした」って言葉に衝撃を受けた記憶がよみがえりました。考える能力の不足問題?

    ここに返信
  • by Anonymous Coward on 2018年02月09日 15時28分 (#3358829)

    雑誌の投稿プログラムや書籍で勉強した、、、
    いわゆるナイコン族だったので、まわりのナイコン族とプログラム言語やアルゴリズムの議論だけやってた。理屈だけ頭にあるけど手を動かしたことがない状態が1年以上あったので、写経の類ややれなかった。

    わからなくても動かせる環境がすぐに手に入った人がうらやましい。

    ここに返信
    • by abies (39185) on 2018年02月10日 8時54分 (#3359318)

      なんだこのスレの同志感は・・。

      ポケコンから入って、飽き足らず電気屋で写経するも見直しイヤだからエラーコードからたぐって修正、メジャー機種は人気で使えないからマイナー機種へ移植(if800とか・・)、という流れでした。

      しかし今考えると、電気屋も店頭にたむろする子供を相手に、よくあの状況を許してくれたもんだなぁと、感謝。

    • by Anonymous Coward on 2018年02月09日 16時13分 (#3358862)

      ナイコンじゃないけど、
      ベーマガのコードを一心不乱に入力→でもどこかでミスってる→ミスを見つけるために動作の把握やデバッグ技術が身に付く→気がついたらプログラミングができた
      という成長過程……

      • by Anonymous Coward

        オレもこれ。
        ベーマガやプロポのゲームを打ち込んで(=ある意味写経)で遊んで、改造して遊んで...を繰り返してたかな。

        仕事やら趣味でプログラムを組むようになった頃にはアセンブラ、C言語、C++だったから、
        写経よりもライブラリ使用になったんで、まぁ、ライブラリソースの中身は知らない。

        他人のプログラムでムカついたのは、その人本人が元の関数を作ったにせよ、似たコードをコピペして新しい関数
        を作ってを繰り返してたプログラムかなぁ...
        その人のソースはホントに触りたくない。修正しててイライラしてくる。
        似た関数が増えた時点で共通化関数にしろと言いたい。

    • by Anonymous Coward

      ナイコン族が長く、PCを手に入れた後もゲームメインでタイピング練習をしていませんでした。
      おかげで写経だと大変なので自然と自分で考えて (キーボードを見ながら) 打ち込むクセがつきました。

      なので今でも写経は苦手です(マテ) PC使い出してン十年なのにタイピング速度は今でも200~250文字/分程度。

    • by Anonymous Coward

      おっさんたちは全員写経からですね。
      無敵化とか連射対応とかで修正に乗り出し、その後はマイナー機種を買ってしまったゆえPC8xのプログラム移植とかをへて
      オリジナルのプログラム作成って感じですね。

      • by Anonymous Coward on 2018年02月09日 19時04分 (#3358984)

        ベーマガとかは編集部による選考が、ある種のコードレビューになってたからね。真似してもあまり問題はなかった、と思う。

        問題は中途半端にVBAとかから入ったタイプ。
        なまじ「駄目な癖」のついてる人が作ったコードを写経するところからプログラミングから入ってたりすると、「お前は余計なことするな、一生、世界と挨拶しててくれ」と言いたくなるようなクソコードを量産したりするから。
        駄目な技術の拡大再生産は恐い、マジで。

    • by Anonymous Coward

      ポケコン使いだったが、他機種のプログラムを打ち込んでは、動くように修正していくことばかりしてた

  • LISPの入門書に、「再帰による階乗」が出てきたが、いくら写経しても全く理解できなかった。
    時間をかけて手習い本を読むと、↑くらいは何も考えなくても頭の中から出るようになった。

    ここに返信
  • by Anonymous Coward on 2018年02月09日 16時06分 (#3358854)

    もう大分昔になるけど、
    This is a magic. Don't change this.
    ってコメントに書いたことならある。

    多分、コンパイラのオプティマイゼイションのバグか何かだったんだと思うけど、
    コード上は副作用とかないのに、消すと正常に動かなくなる謎のコード。

    ここに返信
    • by Anonymous Coward

      a magicとは普通言わないよな

      • by Anonymous Coward

        「だって"a magic"以外の書き方に変えたら動かなくなったんだもん!」

        #元コメントとは別人のただのおもおか狙いのAC

      • by Anonymous Coward

        英語的には、 THE magic ですね

        • by Anonymous Coward

          これを真に受けてThis is THE magicと大真面目に書いてしまうのが写経プログラマー

  • by Anonymous Coward on 2018年02月09日 16時12分 (#3358861)

    当然タイプエラーがあり動かない。
    構文に関するバグは取れるが、変数名や関数名でやらかしてたりすると、動いてるようでも結果がおかしい。
    処理や仕様を追っているうちにという感じだろうか。

    ここに返信
    • by Anonymous Coward

      classのprivateフィールドに書くべき内容を
      publicに写経したやつがいたけど、動いてたよ。

  • by Anonymous Coward on 2018年02月09日 16時32分 (#3358875)

    Hello world. を書いたことがない者だけ石を投げよ。

    #何かの本に「#include 」はおまじないだと思ってくださいって書いてあったな。

    ここに返信
    • by Anonymous Coward

      「おまじない」という説明は、私も説明できるほど理解してないので突っ込まないでというメッセージです。

    • by Anonymous Coward

      Cの本で「おまじない」と「void main」を書いてるの見たことあります

    • by Anonymous Coward

      Hello worldすっ飛ばして本を読み進めてこんなもんだろ!でやってみてあんまりまともに動かなかった時から、
      ちゃんとHello worldをやるようになった。

  • by Anonymous Coward on 2018年02月09日 17時00分 (#3358891)

    写経はまだ初心者だからいいけどカーゴ・カルト・プログラミングはやばいな。
    意味も分からずそこら中で CoInitialize() 呼び出してるとかだよね。

    ここに返信
    • by Anonymous Coward

      DSL系には意味が分かって挫けそうに投げ出したくなる文も有る
      enabledelayedexpansion
      とか

  • by Anonymous Coward on 2018年02月09日 18時18分 (#3358952)

    //. ◯◯可能

    //. ↑原因不明だがこの空行はかならず必要なので削除しないで!(削除するとコンパイルエラーになる)

    ここに返信
  • by Anonymous Coward on 2018年02月09日 19時42分 (#3359007)

    正しく写経してくれるのなら良いのだが、
    良く分からないまま受けた講習会資料の中途半端なコピペに
    ググってタマタマ拾ったウソ知識を足して3で割った様な規定を作り上げて、
    下々の者に押し付けた挙句、監査で吊し上げを食らうまで
    半年間、自分の正当性を主張し続けた中途入社の
    自称傭われ敏腕マネージャーが居たんだよ…

    あの半年を返せ!!

    ここに返信
typodupeerror

にわかな奴ほど語りたがる -- あるハッカー

読み込み中...