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

「プログラミングは簡単に学べる」というのは嘘か 156

ストーリー by hylom
気がついたらプログラミングをしていたので是非についてはコメントできません 部門より
あるAnonymous Coward 曰く、

FreeCodeCampというオープンソースベースのプログラミング学習サービスがあるのだが、そのサイトに「One does not simply learn to code(「プログラミングは簡単に学べる」という嘘)」という興味深い記事があったので紹介したい(オリジナル記事)。

世の中には「プログラミングは簡単です」という言説が多々溢れているが、これはマーケティング的にそう語られている場合が多く、次いでベテランの開発者が「知識の呪い」として初心者の気持ちを思いだせなくなり、そうした発言をしているケースが多々あるという。例えば、巷のチュートリアルには「単にSalesforceのAPIと統合するだけ」や「ただAWSにデプロイするだけ」などと書かれたページが見られるが、こうした内容は初心者にとっては全く簡単なことではない。こうしたページの作者は、自分と同程度のスキルを持った読者を想定してデザインしてしまっており、「簡単」という言葉を使っているようなチュートリアルは避けるべきとしている。

スラドにはプログラミングが出来る側の人が多いと思われるが、プログラミングは簡単or難しいどちらだろうか?

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by mishima (737) on 2016年10月14日 12時53分 (#3096542) ホームページ 日記

    1.教育用のシンプルなソースコードを読んで意味を説明できる
    2.教育用のシンプルなソースコードを修正して動きをちょっとだけ変える
    3.教育用のソースと同レベルの要件に対して0からソースコードを書ける
    4.オープンソースで提供されているアプリのソースコードを修正して動きをちょっとだけ変え
    5.業務で 0 からソースコードを書く
    6.外注先が作った、カプセル化の概念がほとんどない 100Ks を超えるソースコードの中から障害の原因を探しだし、多数のモジュールに変更が必要なことに怨嗟のうめきを上げながら管理職に報告、「なんでそんなことになってるんだ」と怒られつつ毎日終電まで修正する

    どのあたりまでできたら「プログラミングを学んだ」って言えるんでしょ
    (2.あたりまでなら「簡単に」って言っても差し支えがない気がする)

    --
    # mishimaは本田透先生を熱烈に応援しています
    • 1. から 6. に向かって加速度的に難易度が上がっていくところが「簡単でない」という所以かも。
      親コメント
      • 5と6の間は絶壁ですね。
        全くプログラムができない管理職に説明するのは超がつくほどたいへんだし、
        プログラムができる人に説明するのは超簡単。
        同じ理屈でエンドユーザに説明するのは、かなり大変。

        私は、孔子が「教うるは学ぶの半ばなり」というように、
        新人に教えられれば、プログラマと呼べるんじゃないでしょうか。

        親コメント
    • by Anonymous Coward on 2016年10月14日 14時10分 (#3096588)

      単体動作のアプリケーションを作るのと、複雑なシステムの動きを動作を理解したうえで動作を変更する修正を行うのとでは、天と地の差があるものなあ。システムの仕様を理解するだけで、600MBものドキュメントファイルを読んで理解しなきゃならないとか地獄だよなあ。まあ、ドキュメントファイルが全くなくて、既存システムのソースコードすらないなんて案件もあったけれどね。

      親コメント
  • 医者は簡単になれないけど、小説家は誰でも名乗ることはできるでしょう。
    小説もプログラミングも普通は人命や健康に対する責任を伴いませんし。

    • by Anonymous Coward on 2016年10月14日 14時36分 (#3096611)

      もっと単純に、「料理」でしょう。
      料理もある意味プログラミングですよ。

      アルゴリズム=材料の性質
      データ構造=仕込み(皮をむく、切る)

      これらをフローに沿って組み上げていくと料理が出来上がります。

      一人暮らしの男の自炊から、料理上手な専業主婦、プロの料理人、プロでも中華、和食、フレンチとプログラマにもいろいろ。

      レトルトはフレームワーク。
      レトルトを使うと料理の手間が幾分か省ける。
      カップ麺みたいなインスタント食品はpkgやyum/rpmみたいな。

      料理が簡単か難しいかと言えば、簡単な料理もあるというだけの話。

      親コメント
  • もっとも,
    プログラミングを覚えることが目的だと困難を極める。
    なんででしょうねw
    • 網羅的にやるのは何であれ困難を極めると思うけど。

      親コメント
      • 網羅的に覚える必要はないんですけどね。そこへの気づきって難しいですよね。
        (英語なんかも同じ罠におちますよね。使えりゃ問題ない,という意味では)

        ゲームが作りたいからプログラムを覚える,てのも無理ゲーパターンかな。
        「どんなゲームを作るのか」と考えてルールに落とし込まないと。
        まずはそこが大事で,
        じゃあそれをどうコンピュータゲームに落とし込むのか,
        という時に初めてプログラミングの必要性が出てくる。
        んで,その解決には決して網羅的になる必要はないですもんね。
        親コメント
    • by masakun (31656) on 2016年10月14日 12時24分 (#3096519) 日記

      何かを極めようとするからでは。勿論プログラミングに限った話ではないが。

      --
      モデレータは基本役立たずなの気にしてないよ
      親コメント
    • by Anonymous Coward on 2016年10月14日 12時32分 (#3096525)

      中学の時にマシン語の参考書を読んで勉強してた頃
      「だからアキュムレータに値を足したり引いたりしてなんなんだよ!」
      と憤ったことがあったなあ。
      その後、ディスプレイに8bitの直線を引くというサンプルを動かして初めて「なるほど!」と理解できたもんです。

      hello world並みの簡単プログラムだったけど、ただ学習するのと目的もってサンプル書くのではえらい差だなぁと今思いますね。

      親コメント
  • くだらない話で済みません。原文にちゃぶ台返しの絵があって吹いた。ほんとにそう書いてあったのか。

    Before you know it, you’ll suddenly hear the sound of your own voice screaming, feel your body rising to its feet and (╯°□°)╯︵ ┻━┻

    英文でいきなりこれが出てくるとは。みなさん、わかったのかね。声に出して読むと:

    ふぃーる ゆあ ぼでぃ らいじんぐ とぅ いっつ ふぃーと あんど “ちゃぶ台返し”

    chabudai-gaeshiは英語だったんだ……。

  • 確かに書くだけなら簡単だろう。文字を、単語を、文法を覚えれば、書くことはできる。

    だが、文章を書くことによって(読者に伝えたいことを伝えるという)目的を果たすこと
    となるとどうだろう。伝えるべき内容が多く、複雑になるほどそれは簡単ではなくなる。

    「プログラミング」という言葉を、「文法エラーのないプログラムを書くこと」と
    取るなら簡単だ。だが、「思い通りの動作をするプログラムを書くこと」と取るなら、
    難易度は「思い通りの動作」の複雑度次第となる。ただそれだけの話。

  • プログラミングは10歳になる前からやってたから、特に難しくはなかった。
    正確にいうと、他の事に比べて特に難しいというわけではなかった。
    1km走るとかの方がよっぽど困難だった。
    実際には、雑誌のコードの打ち込みとバグ探しだけで何時間もかけていたんだから、今の時間尺度で考えると簡単にやっていたわけじゃないんだけど、苦痛ではなかった。
    #子供だから苦痛なら自分からはやらないよね

    だからプログラミングが想像していた以上に難しいと考えるようになったのは大学に入ってから。工学部の情報工学科というフィルターを通してすら、プログラミングが理解できてそうなのは5%ぐらいしかいなく思えた。さらに就職したら、プロを名乗ってもこんなものなのかと感じた。

    やっぱりプログラミングは特殊技能だよ。
    だから、もっと高い報酬をよこせ。

    #困難な仕事をやり遂げた報酬は、もっと困難な仕事
  • by Anonymous Coward on 2016年10月14日 12時29分 (#3096522)

    アマチュアが入門本を読んでちょっと触ってみたり遊ぶのは簡単

    クライアントや上司が示した要求・仕様を、エラー時の動作も含めてきちんと設計・実装したり
    多人数で一つの大きなソフトウェアを開発したりするといったような、プロの仕事は難しい。

  •  PRINT "Hello wprld." や printf("Hello world.\n"); とするだけなら簡単です。
     1^1の知識量とでも言うか。
     ただ次のステップに進むためには2^2の知識、その次には3^3の知識量・・・って感じでしょうか。
     結局、根底にはアセンブラの考え方が流れていたりして、高級言語はそれをなるべく隠しているだけに過ぎませんし。

     でもまあ、体得するには動機も必要ですからね。
     私は高速に動く言語が欲しくてCからアセンブラに移行しようとしたら、当時のGCCの最適化が私の書くアセンブラより速くてCに定住してしまいましたし。
     今は既製品(商用のみならずフリー含む)で済む場合が多いですからね、その気になれない時代でもありますよね。
    • by Anonymous Coward on 2016年10月14日 13時12分 (#3096553)

      プログラムの話題ゆえか、^がべき乗記号じゃなくてXOR演算子に見えて、全部0じゃん!って思ってしまった

      親コメント
      •  この話題で、挫折してしまったアセンブラが懐かしくなり捨てられなくて本棚に死蔵させていた通称"青本"を読みふけってしまいました。
         データレジスタを4バイト長で0初期化するなら move.l #0,Dn より clr.l Dn なんですねー。
         確かもう少し速いので eor(xor)使うのがあったと思ったけど、思い違いでした。

         と言うか加算の最速が4クロックで、乗算の最速が70クロック(*1)だとか、当時からして使うと遅くなるとか使うなとか言われてましたね。
        *1:正しくはクロック表記が『<70』で、最大70クロックと言う意味なのかも・・・。
        親コメント
    • ×wprld
      ○world

      これはリテラル部分だから動作するでしょうけど、
      おそらく本来の目的である『画面にHello world.と表示する』は達成できません。

      揚げ足取りみたいになってしまいましたが、
      ちょっとした入力ミスはすごくよくあることで、
      これが prinrf だったら、コンパイルエラーになってしまいます。

      言語や処理系によりますが、エラーメッセージって親切とは言いがたいですし。
      苦手な人間が引っかかると、
      『動くはずのものが動かなくて、何で動かないかもわからない』
      になっちゃうわけで。

      『正しく動かない原因をつきとめて修正する』
      という技能というかノウハウが、わりと早期からに必要になってきますが、
      これがなかなか難しいと考えます。

      親コメント
      •  ああっと、ファンブル!(--;

         昔は"Syntax error in xxx"でしたからね。
         初心者に、もっと難しかったのが"Illegal function call in xxx"でした。
         まあ、エラーが出てくれれば良い方なんですけど(^^;
         マシン語/アセンブラを実行した時の、ノーコンになった時の妙な間の沈黙(笑)。

         ぶっちゃけた話、割り込みなど複雑な制御構造があるにせよシングルタスクである限り、実行は一筆書きなんですよね。
         順番を追う習慣さえ身に付けば、デバッグも捗るもので。
         でもおっしゃるように、難しいですよね(^^;
        親コメント
  • by Anonymous Coward on 2016年10月14日 18時33分 (#3096819)

    「コーディングを学ぶこと、それはあなたが考えるよりも大変です」
    http://postd.cc/learn-to-code-its-harder-than-you-think/ [postd.cc]

    要約:全ての根拠が示しているのは、「プログラミングには高い適性を要求されますが、適性を持った人間はわずかしかいない」ということです。最近の流行の短期でコーディングを学べるコースは、デマカセを売り付け、プロのプログラマのスキル不足解消に何ら力になってないのです。

  • by Anonymous Coward on 2016年10月15日 1時54分 (#3096992)

    ※個人の感想です。

typodupeerror

開いた括弧は必ず閉じる -- あるプログラマー

読み込み中...