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

コンピューターサイエンスのカリキュラムに不足しているものは?」記事へのコメント

  • コンピューターサイエンス教育では、 C も Java も教えないよ。 C なり Java なりを道具にして、アルゴリズムの設計と実装という、 500 年後にも意味のある (と期待される) 概念を教えるんだよ。

    もちろん、コンピューターサイエンスの中でも専門とする内容によっては Linux カーネルを改造することが必要になったり Haskell コンパイラーを書くことが必要になったりするから、そういう人は必要な技術を学ぶけれど、「コンピューターサイエンス学科の卒業生なんだから C 言語でプログラムが書けるはず」みたいな先入観はやめた方がいいと思う。

    •  そのような技術者の需要は日本では極めて少ない。CなりJavaなりが自由に書けるようになってからにしてほしい。
      日本の情報産業は日本語や日本の商習慣の壁に守られているから存在している、農業より世界に輸出できていない産業ということを自覚するべき。

      • いや、だから「コンピューターサイエンス学科の卒業生ならソフトウェア技術者として必要な知識や技術を持っている」という先入観をやめた方がいいと思うんだ。大学は専門学校じゃない。

        •  需要がないものを生み出してどうします。まして、学生はそれを知っているですか?
          「いまから勉強することは、日本の情報産業とは関係がないサイエンスです」ときちんと説明していますか。
          説明しているならば学生の自己責任ともいえますが、そうでなければ学生に対する詐欺ですよ。

          • vaxさんの記述には様々な点で問題があります。

            第一に、fcp氏の記述では「コンピューターサイエンス学科の卒業生」に対してvax氏は「そのような技術者」と言っていますが、fcp氏は「卒業生=技術者」とは言っていません。従って、「そのような技術者」という記述には仮定の誤りがあります。

            第二に、たしかにそのような卒業生「の需要は日本では極めて少ない」かもしれませんが、
            需要があるかどうかと本当に必要なのかどうかは別の話です。
            企業がそういう「技術」面の必要性しか認識していないだけかもしれません。
            そもそも、大学で行うことは「まだ広くその需要すら知られていない最先端の研究内容」を行う可能性があります。
            例えば一昔前、一般に知られる以前の画像認識やニューラルネットはそういう扱いだったでしょう。

            第三に、『「いまから勉強することは、日本の情報産業とは関係がないサイエンスです」ときちんと説明』すべきという主張について、それを説明するのならば『今から勉強することは、真に大規模かつ困難な問題を解くために必要不可欠な手段であって、この内容を学ぶことはあなたに他の学部では得られない真の専門性を与える』ということも同時に説明すべきです。fcp氏の言うとおり、この種の知識は500年経っても使える知識であり、と同時に日本だけにとどまらず世界のどの地域でも有効な知識です。そして、そういった「他の方法では得られない技術的な強み」こそが大学で得るべきものです。

            メモリ管理は、もしそれが本当の問題なのなら、在野のあまたのCプログラマから引っ張ってくればよい。凄腕Cプログラマなら、多大な工数をかけて、既存のGCより効率的にメモリを管理するコードを書けるかもしれません。しかし、Cが将来長きにわたって常に有効なプログラミング言語かどうかはわかりません。メモリ管理自体についても、近年のCコンパイラvs手書きアセンブラのように、何らかのブレークスルーによってGCが人間の手作業malloc/freeに対してほとんど常に上回る事になるかもしれません。どちらの場合も、その知識への需要が長続きしないことを意味します。

            一方、いくら優秀なCプログラマでも、「アルゴリズム的に開放できない必要なメモリ」は解放できません。そして、どうやればその「真に必要なメモリ=空間計算量」を減らせるかという問題は、計算機科学のバックグラウンドがなくては解決できません。

            確かに、日本の企業が常に「計算機科学的に最先端の」研究を行っているとは言えません。
            webサービスを作る程度の技術力しか必要がない企業では、計算機科学の知見は必要ないでしょう
            (それらが使っているコンパイラには計算機科学がふんだんに使われていますが)。
            しかし、そのことと、「では日本の計算機科学科で今教えられていることは不必要か」という話は別です。
            重要な点は、計算機科学の知見は「汎用」ですから、「未知の問題」に対しても適用できるということです。
            日本の情報産業の未来は、もしかしたら大量生産のようにしょうもないwebサイトを作ることにしかないのかもしれませんが、もし情報産業が新たなサービスや技術を目指すべきだと考えるなら、現在大学で教えられていることには十分に意義があるでしょう。

            長文失礼。アセンブリ言語で書いてみる経験は必要だと思います :b

            --
            新人。プログラマレベルをポケモンで言うと、コラッタぐらい
            親コメント
            • by vax730 (32985) on 2014年08月11日 7時57分 (#2654561)

               卒業生をみれば、大半が情報系の技術者か情報システムの管理技術社をやっているのではないでしょうか。
              会社も基礎研究をしている余裕はなくなって来ていますし。(大半でもイコールでないから論理としておかしいと言いたいのでしょうけれど。)
               ビッグデータで機械学習は博士課程の学生でも需要が出てきています。DeepNetでニューラルネットワークは復権中です。
              画像処理系は昔から博士の学生に需要はあります。
              ただ、大学院しかないところの画像処理の先生が、情報工学科の先生に「画像処理は情報工学ではない」と言われたと言って怒っていました。
              情報工学科の先生はなんか了見がが狭いように思います。
               500年先のことを教えることも良いですが、現在のことを教えるべきと思います。
              博士課程で深く勉強することはかまいませんが、学部の情報工学科を出たならば、malloc()やfree()ぐらい知っていて欲しいです。
              また、エイトクイーン、クイックソート、ヒープソートぐらいは自分でプログラミングできるようにして欲しいと思います。
              (単なるちゃちゃですが、500年先も必要ということは、500年経っても人工知能はできないということですね。情報系の人間としては安心しました。)
               画像処理とか、メモリーの利用が最初から計算できて。まとめて使ってすぐにフリーするような場合は、最初にmalloc()で大きく確保してから、
              自分で割り当てとフリーしたほうが速い場合もあります。その場合は、アラインメントについては知っているだけで良いので知ってて欲しいです。

               最先端の技術を大学院で教えることは問題ないと思いますが、学部とは分けて考えて欲しいと思います。

              親コメント
              • > 500年先のことを教えることも良いですが、現在のことを教えるべきと思います。

                いえ、そこの論理がおかしくて。
                500年先使えるんですから、今も使えるでしょう。
                で、それを活かせるような職を選ばなかったのは、その学生が戦略的な失敗を犯しているだけです。

                ちゃちゃについてですが、500年後には人工知能はできているかもしれません。
                量子コンピュータができればNP-complete以上の問題が簡単に解けるようになっているかもしれませんし、
                PSPACE-hardも解けるかもしれません。
                しかしそのかわり、そのころには既に人工知能以上に困難な問題が生まれているかもしれません。

                malloc/freeという固有名詞自体についてはどうかと思いますが、そういうメモリ管理が行われているということについては知るべきだと思います。

                > 最初にmalloc()で大きく確保してから、自分で割り当てとフリーしたほうが速い

                それはGC付きの言語でも同じです。ヒープの確保は高コスト、ということがmalloc/freeを習う上で理解されていればよいわけですから、同じく配列生成時に気を使えば良いということが理解されればよいと思います。

                > 情報工学科の先生に「画像処理は情報工学ではない」

                情報工学と計算機科学というのもまた微妙な問題ですね、同じではない気がします。はっきりとどう違うかわかりませんが。
                画像認識には困難さがありますが、画像処理というのはどうなんでしょうね?
                絵の画素を加工するぐらいのことであったら、計算量的困難さは無いはずです。
                この点はどこまで賢い加工を行うかにもよると思います。
                画像圧縮アルゴリズムとかになれば計算機科学でしょう。

                --
                新人。プログラマレベルをポケモンで言うと、コラッタぐらい
                親コメント
            • by Anonymous Coward

              アセンブリ言語でいえば、CASLとかよかったな。
              CASLの仕様というよりも、資格を取るというモチベーションで学べるw
              そのうえでハードウェア寄りの部分の扱い方も学べたらgood

              • by Anonymous Coward

                CAP-X より素直でよかったですね。
                ちょうどCAP-XからCASLへの切り替えの頃に受けることになって、「次まで待てばCASLだから」と一回見送った思い出があります。

皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー

処理中...