コンピューターサイエンス教育では、 C も Java も教えないよ。 C なり Java なりを道具にして、アルゴリズムの設計と実装という、 500 年後にも意味のある (と期待される) 概念を教えるんだよ。
もちろん、コンピューターサイエンスの中でも専門とする内容によっては Linux カーネルを改造することが必要になったり Haskell コンパイラーを書くことが必要になったりするから、そういう人は必要な技術を学ぶけれど、「コンピューターサイエンス学科の卒業生なんだから C 言語でプログラムが書けるはず」みたいな先入観はやめた方がいいと思う。
コンピューターサイエンスの何たるか (スコア:5, 興味深い)
コンピューターサイエンス教育では、 C も Java も教えないよ。 C なり Java なりを道具にして、アルゴリズムの設計と実装という、 500 年後にも意味のある (と期待される) 概念を教えるんだよ。
もちろん、コンピューターサイエンスの中でも専門とする内容によっては Linux カーネルを改造することが必要になったり Haskell コンパイラーを書くことが必要になったりするから、そういう人は必要な技術を学ぶけれど、「コンピューターサイエンス学科の卒業生なんだから C 言語でプログラムが書けるはず」みたいな先入観はやめた方がいいと思う。
Re: (スコア:0)
500年後は言い過ぎでしょう。
ノイマン型コンピュータができて100年たってないんですから。
今のアルゴリズムは大体ノイマン型を大前提にしているはず。
というか並列化の時代になった時点で、
すでに使えなくなっているアルゴリズムは出てきているのでは?
早いのが取り柄のアルゴリズムなんかは。
データ設計のほうがまだ長持ちすると思う。
Re:コンピューターサイエンスの何たるか (スコア:2, 参考になる)
「500年はちょっと言い過ぎ」というのは同意だけど
>> というか並列化の時代になった時点で、すでに使えなくなっているアルゴリズムは出てきているのでは?
というツッコミは,あなたの読解力あるいは理解力の低さを示してますね.「アルゴリズムの概念を学ぶ」ことは「特定のアルゴリズムを使えるようになる」ことではありません.
例えばソートの方法で様々なアルゴリズムの存在を知っていれば,具体的なソートの問題に直面した時にその知識を使って解決できます.しかし,並列化の時代になると従来の知識そのままでは使い物にならなくなる.これが貴方の指摘ですね.
一方で,fcp氏の書いているように「アルゴリズムとは何か」という概念を(ちゃんと)学べば,いろいろなソートアルゴリズムが本質的にどう違って,その違いが(その時点の計算機の処理上で)性能にどう影響しているのか,そういう理屈を正しく理解しているはずです.ですから,並列化の時代になっても,その理屈からちゃんと並列化に合ったソートアルゴリズムを導き出す(あるいは見つけてくる)ことが可能です.
上記ではソートというベタなネタを例に説明しましたが,もちろん実際の大学ではそういう何か特定の問題について学ぶのではなく,もっと広く一般化した意味で「アルゴリズム」を学んでいるわけです.ですから,「人工知能型コンピュータ」とかみたいな大変革が来ない無い限り,学んだ知識は使えます.ちゃんと学んでいれば,ですけどね.
Re: (スコア:0)
なるほど。
すみません。理解が足りてませんでいた。
並列化したときにどれが使えるかという議論にも、
同じ本質が使えますね。
ただ、現在知られている結論が、
崩れることは下手すると近いうちにあり得ると思います。
そもそもアルゴリズムの相対的な重要性は下がってきていますし。
Re: (スコア:0)
う~ん、この認識はどうかと思うが?
アルゴリズムのような基礎的な研究を大事にしないと、アメリカのIT産業からは置いて行かれそう。
量子コンピューター上のアルゴリズムとか、今のうちにやっとくといいんでないかな。