パスワードを忘れた? アカウント作成
11421670 story
教育

コンピューターサイエンスのカリキュラムに不足しているものは? 32

ストーリー by headless
補完 部門より
本家/.「Ask Slashdot: "Real" Computer Scientists vs. Modern Curriculum?」より

職場で昨日、あるプログラマーが最近のコンピューターサイエンス学部卒業生の品質について話しているのを聞いた。彼の意見では、主にJavaを学習している学生はCを使用するときに必要なメモリー管理が身についていないので、特にひどいという。IT業界での経験を10年積んだ後でコンピューターサイエンスの学位を取得しようとしている身としては、スラッシュドットの皆さんにお尋ねしたい。これはコンピューターサイエンスの新卒者に共通する問題なのだろうか。そうだとすれば、Java中心の学習を補完するには何をすればよいのだろうか。

  • 計算機がどのように動いているのか、データと命令とか、値としての 20h と スペース文字の区別がつかないとか、そういう事をまずは一旦理解してから高級言語へと移行するべきだと思うんだ。別に長大なプログラムをアセンブラで組めるようになれ、という意味じゃなく。

    最初から高級言語だと、その高級言語が何に依存しているのか判らないんで、「床を踏み抜く」的な間違いをしでかしてしまう。

    --
    fjの教祖様
    • by Anonymous Coward

      Cで書いててポインタがわからないと言っている人は、その基礎をやってないからだと思う。

    • by Anonymous Coward

      ほぼ同意だが、順番はどうなんだろう?高級言語やってからハードに降りていくのは無理なのだろうか

    • by Anonymous Coward

      i386 だとアドレッシングモードとか煩雑なので Z80 エミュレータと zasm を使用して演習しています。メモリに番地があって 0 番地から順番に実行される。命令もデータもメモリに置かれるなんてことを学生に理解してもらうのに苦労しています。それでもやらないよりはましだと信じている。

    • by Anonymous Coward

      そもそも計算機がどう動いているかというと、マイクロコード、ハーバード・アーキテクチャ、バスアービトレーション、
      フリップフロップ、クロック、AND/OR/NOTゲート、トランジスタ、半導体、電圧・電流・電荷、電子、・・・

      とりあえず、クオークとレプトンとは?辺りから学習すればいいのですか?

    • by Anonymous Coward

      単に自分が理解できる一番低レベルなところを基礎としているだけ。

      C言語は知っているけれどアセンブリ言語はやったことのないうちの上司は、
      アセンブリ言語までは必要ないけれどCは基礎だから、と言っていますし。

      アセンブリ言語が普通に使われていたころは、
      ワイヤードロジックも理解せずにプログラムができるか、
      とか年寄りが言っていたはず。

      単に古来からある「最近の若い者は」現象にすぎませんね。

    • by Anonymous Coward

      それで出来上がるのが教祖様なら、やめておいた方がいいと思うがね

  • Java中心の学習とかイミフメ杉。
    『Cを使用するときに必要なメモリー管理』っていうのもよく分からないけど、学校で教えるような事ではないね。

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

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

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

    • by Anonymous Coward

      アーキテクチャを勉強しない計算機科学とかどんな大学だよ。fcp はヘネパタ本読んでないようだな。

    • by Anonymous Coward

      500年後は言い過ぎでしょう。

      ノイマン型コンピュータができて100年たってないんですから。
      今のアルゴリズムは大体ノイマン型を大前提にしているはず。

      というか並列化の時代になった時点で、
      すでに使えなくなっているアルゴリズムは出てきているのでは?
      早いのが取り柄のアルゴリズムなんかは。

      データ設計のほうがまだ長持ちすると思う。

  • by Anonymous Coward on 2014年08月10日 18時08分 (#2654339)

    これさえ身に付ければ大抵の言語は習得できる。
    順番は関係ない。
    Javaから入ってパフォーマンス不足に悩まされたらCを覚える流れでも全然いいと思う。

  • なんでCに特有のテクニックを、
    コンピュータサイエンスで教えないといけないのか。

    自社の業務に必要な知識は自社で教えればいいだろう。

    メモリ管理とか十把一絡げに言うが、
    じゃあ関数呼び出し時に変数をスタックに積むロジックとかは、
    Cをやっている人に書けるのだろうか?
    これも重要なメモリ管理の一つだと思うが。

    と考えると、「メモリ管理」というのはCに特有なテクニックにすぎない。
    単にC以外を知らない人がCの常識は世界の常識だと思って、
    新人を常識知らず扱いしているだけだろう。

    単にその職場の職員の質の問題であって、
    職場での教育に力を入れればいいだけの話。

    コンピュータサイエンス教育が何かをやる必要はない。

    • なんでCに特有のテクニックを、
      コンピュータサイエンスで教えないといけないのか。

      メモリ管理なんて、別にCに特有のテクニックでもなんでもないし……。
      というよりテクニックですらないし。
      なに言ってんだコイツ?

      メモリ管理とか十把一絡げに言うが、
      じゃあ関数呼び出し時に変数をスタックに積むロジックとかは、
      Cをやっている人に書けるのだろうか?
      これも重要なメモリ管理の一つだと思うが。

      最近はこのレベルの阿呆が、ドヤ顔でわけわからんことのたまうから始末に負えない。
      このコメントひとつで「私はCコンパイラに関してドシロウトです」と吹聴してるようなもん。
      JavaやPascalじゃあるまいし、Cが全ての関数呼び出しが

  • by Anonymous Coward on 2014年08月10日 17時42分 (#2654319)

    栄養ドリンクはどれが効くとか、ゲーム業界はやばいからやめとけとか、給料がいいのは金融系だとか・・・・・・

  • by Anonymous Coward on 2014年08月10日 17時50分 (#2654325)

    人とのコミュニケーションの取り方、女性との話し方。
    ん、理系全般に言えそうな気がしてきた。

    • by Anonymous Coward

      それは重要ですね
      ただ、それって文系・理系問わず重要なことなので、小学生のころからやったほうがいいものではないかと思います
      恋愛がらみは思春期にさしかかったころじゃないと身につかないとは思いますが

      ちなみに某学校で対人スキルを身に着けさせる授業を導入したところ、いじめが減ったらしいです

    • by Anonymous Coward

      理系全般どころか、あらゆる分野に言えることじゃん

      あとコミュ力を学問として教えることはあまりないし、コミュ力が「文系」スキルなのかは怪しい

  • by Anonymous Coward on 2014年08月10日 17時56分 (#2654330)

    仮にもIT系の学科を卒業しておきながらJavaしか使い物にならんというほうが問題のような気も・・・
    アセンブラをどれか1つにc or c++、perl or python、lisp or scheme、ml or haskellぐらいは
    教養課程のうちに終わらせておいてもバチはあたらない・・・あ、あとshも必要か(笑)

    • by Anonymous Coward

      SFC出身に勉強してきたことはなにって聞いてみたら
      cpとか、lsとか、catとか言ってたがjavaのジャーも言わなかったんだが

  • by Anonymous Coward on 2014年08月10日 17時57分 (#2654331)

    コンピュータサイエンス出身のクセに「Javaで勉強したからメモリ管理が出来ない」
    なんてレベルの人間なら、その時点で無駄無駄。

    仮にCで教育したって、今度は「あいつらはCでしか勉強してこないから、
    Javaのメモリ管理は全部GCに任せられてラクチンだとしか思ってない」
    ってなるのがオチでしょ。

  • by Anonymous Coward on 2014年08月10日 17時58分 (#2654333)

    っていうかJavaみたいな糞言語の学習はほどほどで切り上げて、
    CeylonとかKotlinとかのまともなJVM言語を勉強した方が良いんじゃないか

  • by Anonymous Coward on 2014年08月10日 18時17分 (#2654341)

    そもそも何をもってして計算機科学を修めたとするんだろう。
    「俺が修めたものこそが計算機科学、お前らがやってきたのはただのプログラミング、専門学校の領域だ!」ってな人がぼちぼちいて怖い。

    • by Anonymous Coward

      学位って修士なの? 博士なの?
      博士なら、スキルの修得なんてどうでもよくて(というか必要条件でしかなくて)、
      どれくらいその分野に本質的な貢献をしたかだけが問われる。
      もちろん、コピペでOKみたいな大学の話はおいておいて。

typodupeerror

目つきのヤバい少年がナイフをシュッ・シュッと振り回しながら街を徘徊している情景が目に浮かんだ -- あるセキュリティ専門家

読み込み中...