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

「読み・書き・プログラミング」の時代は来るだろうか」記事へのコメント

  •  国立情報学研究所の新井紀子教授が著書「 コンピュータが仕事を奪う [nikkeibp.co.jp]」で問題提起されているように、今まで機械化されていなかった「知的労働」も、あるマニュアル化できる定型的なものについては、積極的に機械化されていき本格的なOA化が進む時代が目前に迫っていることを考えると、今までのような能力では仕事を得るのも難しくなっていくと覚悟しないと。(人工知能にはフレーム問題のような根本的な問題があるので、オール・マイティな人工知能はむりだけど、特定業務に限れば実用にたる人工知能は実現目前だと思う)。
     そう考えれば、機械に仕事を与える仕事と

    • 隣のスレッドにも書いたのですが、今のプログラミングの世界は、ひと昔前と違って、API の使い方さえ知っていればプログラムが書けますね。API の先の具体的な実装やそこで使われているノウハウを知らなくても良いですよね。

      このことを、そろばん(計算)についても当てはめて考えると、計算の具体的なアルゴリズムは知らなくても、例えば足し算とはどういうものか、その性質だけ理解していれば、あとは電卓の叩き方さえ覚えていればよいってなりますよね。実際、私達 sin とか cos なんかの関数ではそうしています。

      こんなふうに考えてみると、計算の必要性っていうのも、程度問題のような気もしてきませんか?…あ、これは、掘り下げるための思考実験的な議論で、私の個人的な意見っていうわけではありませんけど。 (゚∀゚)

      親コメント
      • >その性質だけ理解していれば、あとは電卓の叩き方さえ覚えて

         確かにマニュアル通りに仕事(研究でもいいけど)をしていて、マニュアルの想定内であれば、そのとおりといえるかもしれない。
         ただ、ちょっと異常事態になってくると、計算の仕方を理解していないとダメなこともあるよ。
         読み書きそろばんの「そろばん」というのは、単純な計算能力だけではないと思うんだよね。
         計算している際に、結果を見て、その計算結果が正しいかどうかを見極める能力なんかが、経理や財務みたいな帳簿付けなんかでは必要になってくるし。数字のカンは、自分で計算を繰り返し練習しないと身につかないと思うんだよね。
         パソコンが使えるといって、表計算でしか集計をしたことがないと、計算式が間違っていたり、入力したデータに誤りがあっても見つけられないと思うな。

         とはいえ、何かを便利な道具として「ブラックボックス」として扱っても、実用上、困らないことの方が多いですよね。
         例えば推測統計は、理解するにはかなり数学に詳しくないといけないけど、普通のビジネスマンがデータから傾向を判断するときは、ブラックボックスとして扱うことが多い。データを入れて、Rとかの関数で検定して、という使い方も多いだろうし。
         で、読み・書きにしろ、計算にしろ、基本的な部分は、理解しているべきだと思うし、その求められる基本的な部分は、その時代や社会で変わってくる。
         少なくとも、ここしばらくは、今までのカリキュラムに上積みされた形でプログラムなりなんなりが求められてくると思うけど。

        親コメント
        • あ、ありがとうごさます。

          (読み書きソロバンの問題からは、離れてしまいますが…)実際のところ、私は、最近のプログラマーが 「API ユーザー」 に成り下がっていて、それらの下に潜んでいる部分を理解するよりも、それらをうまく使いこなす方に重心を置いている(…そうせざるを得ない環境にある)ことについて、危惧のしています。

          例えば、API で抽象化されたレイヤーばかりを使っていると、例えば、Array List も Linked List も、ある一定のインターフェイスだけに注目している限りは、同じものに見えてしまいます。また、リテラルの部分文字列のマッチングで、リテラル検索(Java 言語でいえば indexOf )も、リテラルの正規表現によるマッチも同じものに見える、なんていう例もありますよね。下位の層を理解していれば、どういう場合に Array List を使えべきとか、indexOf を使えべきとかがわかるはずですが、理解していなければ、それもできません。

          思いつかないのですが、もっぱら API ユーザーであることには、他にも懸念されるべき点がいくつかあるような気がしています。

          論理的に説得力のある説明にはなりませんが、私も直感的に、プログラミングだけでなく、読み・書き・ソロバンも含めて、下位階層についてはある程度具体的に理解しておくべきだろうと思っています。

          (゚ω^* )

          親コメント
        • もう一つのスレッドに回答していて、思ったのですが、下位階層を知らないまま過ごすことで懸念されるのは、例えるなら、手料理を作らずに出前とかコンビニ弁当のような出来合いのものばかりを食べている人についての心配とにたようなものかもしれません。この例えで考えるなら、

          • ●もし、栄養のバランスがとれているとすれば、普段の食事は問題はないかもしれない。
          • ●けれども、新しい料理を発明することは恐らくできないし、
          • ●平時はともかく戦争や災害などの非常事態に突然なった場合や、輸出規制などで食物事情が変化してしまった場合には、まったく何もできず、場合によっては食事にありつけないかもしれない。
          • ●それから、突然アレルギー症状が発症しても、どの料理にどんな材料が含まれているかも分からず、知らずに食べてしまうかもしれない。

          など考えられますね。問題か起こるのは、いずれの場合も、何かそれまでとは違う変化が急に起きた場合のようです。状況の変化といえば、イギリスの「オオシモフリエダシャク」という蛾の 「工場の煤煙で樹木が黒ずんだため、白い蛾より黒い蛾が優勢になった」 という自然選択の話 [wikipedia.org] を思い出すのですが、下位階層まで知るとか、下位階層はそこそこに 無数にある API を匠に使いこなす、とかいったアプローチの差は、それ自身に正解というのはないのかも知れません。時・場所・状況に応じて、優勢(最適解)があるだけなのかも知れません。ただ、少なくとも、全員が全員例外なく唯一つの同じアプローチを採用するといった自体になると、環境が変わると全滅して生き残るものが居なくなるから、それは避けるべきだということは言えそうですが… (*´∀`*)

          親コメント
      • by Anonymous Coward
        四則演算と同列に語っていいのは三角関数の加法定理。法則性を見つけるには電卓を叩いているだけではダメだよ。APIも使い方だけじゃなくて、実装もある程度知っていた方が効率の良いコードが書ける。

        使い方を知っているのは知らないよりはマシだけどな。
        • そうですね。下位階層を実際に知らなければ、新しい法則性は発見できないと私も思います。

          でも、その一方で、三角関数の加法定理なんかもそうですが、法則の殆どは、自分たちが自ら発見したのではなくて、すでに発見されているものを教わったもので、私たちがやるのは、せいぜい、その証明の過程を一度なぞることで、その後は証明の過程は忘れとしまって、定理の使い方だけ覚える… みたいなパターンが多いのではないでしょうか?(少なくとも私の場合は全部そうです (^w^))

          証明の過程を知らなくても定理が使える状態、というのは、実装の中身を知らなくてもAPIを使えるというのと似ているように思えるんです。ご指摘なさっているとおり、実装をある程度知っている方が、効率の良いコードが書けるというのは、そのとおりだと思います。前にも出しましたけど Array List と Linked List みたいな例もありますもんね。 ( ^ω^)

          親コメント
          • by Anonymous Coward
            加法定理を知っていると便利なのは、ある平面上の直交座標系で表されている点について、原点を中心に任意の角度だけ回転した点を求めたいとき。そういうときに、加法定理を知らない人は極座標系に変換して、角度を加算した後に再び、直交座標系に変換することになるけど、知っていれば、四則演算以外には任意の角度のsinとcosだけで十分という法則性に気が付くことができる。さらに任意の角度がπのn分割の整数倍しかないのなら、予め、そういうテーブルを用意しておくことで、sinやcosを計算することすら不要ということも思いつく。

            まあ、プログラミングのときにしか役に立った覚えが無いが。
            • 三角関数の加法定理ってなんだっけ…って。もうずっと見てないから、すかーり忘れてしまってました。ネットで調べてみたら…

              cos (a+b) = cos a・ cos b + (-sin a)・ sin b
              sin (a+b) = sin a・ cos b + cos a・ sin b

              これを習った当時は、まったく気がついてませんでしたけど、これって、回転行列そのままだったんですね。…と今更ながらに気づきましたた。

              |r| cos (⊿θ+θ) = cos ⊿θ・|r| cos θ + (-sin ⊿θ)・|r| sin θ
              |r| sin (⊿θ+θ) = sin ⊿θ・|r| cos θ + cos ⊿θ・|r| sin θ

              親コメント
              • 三角関数の加法定理ですが、これを習ったときは、一般の代数学の一貫としてやっていたので、とにかく覚えるのが面倒だった記憶がありますねぇ。即興で導き出せる感じもしなかったですし。

                でも、回転行列の場合は、もちろん、回転行列 R(⊿θ) を想定して、R(⊿θ) の単位ベクトル ex = (1, 0)、ey = (0, 1) に対する応答を考えるだけなので、すごく分かりやすいなと感じていた記憶があります。最初から、線形代数の一貫として教えてもらいたかったですねぇ。

                スピンアウトで、スミマセン。(≧∇≦)

                親コメント

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

処理中...