例えば、API で抽象化されたレイヤーばかりを使っていると、例えば、Array List も Linked List も、ある一定のインターフェイスだけに注目している限りは、同じものに見えてしまいます。また、リテラルの部分文字列のマッチングで、リテラル検索(Java 言語でいえば indexOf )も、リテラルの正規表現によるマッチも同じものに見える、なんていう例もありますよね。下位の層を理解していれば、どういう場合に Array List を使えべきとか、indexOf を使えべきとかがわかるはずですが、理解していなければ、それもできません。
思いつかないのですが、もっぱら API ユーザーであることには、他にも懸念されるべき点がいくつかあるような気がしています。
求められる基本能力の高度化 (スコア:1)
国立情報学研究所の新井紀子教授が著書「 コンピュータが仕事を奪う [nikkeibp.co.jp]」で問題提起されているように、今まで機械化されていなかった「知的労働」も、あるマニュアル化できる定型的なものについては、積極的に機械化されていき本格的なOA化が進む時代が目前に迫っていることを考えると、今までのような能力では仕事を得るのも難しくなっていくと覚悟しないと。(人工知能にはフレーム問題のような根本的な問題があるので、オール・マイティな人工知能はむりだけど、特定業務に限れば実用にたる人工知能は実現目前だと思う)。
そう考えれば、機械に仕事を与える仕事と
Re: (スコア:1)
隣のスレッドにも書いたのですが、今のプログラミングの世界は、ひと昔前と違って、API の使い方さえ知っていればプログラムが書けますね。API の先の具体的な実装やそこで使われているノウハウを知らなくても良いですよね。
このことを、そろばん(計算)についても当てはめて考えると、計算の具体的なアルゴリズムは知らなくても、例えば足し算とはどういうものか、その性質だけ理解していれば、あとは電卓の叩き方さえ覚えていればよいってなりますよね。実際、私達 sin とか cos なんかの関数ではそうしています。
こんなふうに考えてみると、計算の必要性っていうのも、程度問題のような気もしてきませんか?…あ、これは、掘り下げるための思考実験的な議論で、私の個人的な意見っていうわけではありませんけど。 (゚∀゚)
Re:求められる基本能力の高度化 (スコア:1)
>その性質だけ理解していれば、あとは電卓の叩き方さえ覚えて
確かにマニュアル通りに仕事(研究でもいいけど)をしていて、マニュアルの想定内であれば、そのとおりといえるかもしれない。
ただ、ちょっと異常事態になってくると、計算の仕方を理解していないとダメなこともあるよ。
読み書きそろばんの「そろばん」というのは、単純な計算能力だけではないと思うんだよね。
計算している際に、結果を見て、その計算結果が正しいかどうかを見極める能力なんかが、経理や財務みたいな帳簿付けなんかでは必要になってくるし。数字のカンは、自分で計算を繰り返し練習しないと身につかないと思うんだよね。
パソコンが使えるといって、表計算でしか集計をしたことがないと、計算式が間違っていたり、入力したデータに誤りがあっても見つけられないと思うな。
とはいえ、何かを便利な道具として「ブラックボックス」として扱っても、実用上、困らないことの方が多いですよね。
例えば推測統計は、理解するにはかなり数学に詳しくないといけないけど、普通のビジネスマンがデータから傾向を判断するときは、ブラックボックスとして扱うことが多い。データを入れて、Rとかの関数で検定して、という使い方も多いだろうし。
で、読み・書きにしろ、計算にしろ、基本的な部分は、理解しているべきだと思うし、その求められる基本的な部分は、その時代や社会で変わってくる。
少なくとも、ここしばらくは、今までのカリキュラムに上積みされた形でプログラムなりなんなりが求められてくると思うけど。
Re:求められる基本能力の高度化 (スコア:1)
あ、ありがとうごさます。
(読み書きソロバンの問題からは、離れてしまいますが…)実際のところ、私は、最近のプログラマーが 「API ユーザー」 に成り下がっていて、それらの下に潜んでいる部分を理解するよりも、それらをうまく使いこなす方に重心を置いている(…そうせざるを得ない環境にある)ことについて、危惧のしています。
例えば、API で抽象化されたレイヤーばかりを使っていると、例えば、Array List も Linked List も、ある一定のインターフェイスだけに注目している限りは、同じものに見えてしまいます。また、リテラルの部分文字列のマッチングで、リテラル検索(Java 言語でいえば indexOf )も、リテラルの正規表現によるマッチも同じものに見える、なんていう例もありますよね。下位の層を理解していれば、どういう場合に Array List を使えべきとか、indexOf を使えべきとかがわかるはずですが、理解していなければ、それもできません。
思いつかないのですが、もっぱら API ユーザーであることには、他にも懸念されるべき点がいくつかあるような気がしています。
論理的に説得力のある説明にはなりませんが、私も直感的に、プログラミングだけでなく、読み・書き・ソロバンも含めて、下位階層についてはある程度具体的に理解しておくべきだろうと思っています。
(゚ω^* )
Re:求められる基本能力の高度化 (スコア:1)
もう一つのスレッドに回答していて、思ったのですが、下位階層を知らないまま過ごすことで懸念されるのは、例えるなら、手料理を作らずに出前とかコンビニ弁当のような出来合いのものばかりを食べている人についての心配とにたようなものかもしれません。この例えで考えるなら、
など考えられますね。問題か起こるのは、いずれの場合も、何かそれまでとは違う変化が急に起きた場合のようです。状況の変化といえば、イギリスの「オオシモフリエダシャク」という蛾の 「工場の煤煙で樹木が黒ずんだため、白い蛾より黒い蛾が優勢になった」 という自然選択の話 [wikipedia.org] を思い出すのですが、下位階層まで知るとか、下位階層はそこそこに 無数にある API を匠に使いこなす、とかいったアプローチの差は、それ自身に正解というのはないのかも知れません。時・場所・状況に応じて、優勢(最適解)があるだけなのかも知れません。ただ、少なくとも、全員が全員例外なく唯一つの同じアプローチを採用するといった自体になると、環境が変わると全滅して生き残るものが居なくなるから、それは避けるべきだということは言えそうですが… (*´∀`*)