コンピューターサイエンスのカリキュラムに不足しているものは? 32
ストーリー by headless
補完 部門より
補完 部門より
本家/.「Ask Slashdot: "Real" Computer Scientists vs. Modern Curriculum?」より
職場で昨日、あるプログラマーが最近のコンピューターサイエンス学部卒業生の品質について話しているのを聞いた。彼の意見では、主にJavaを学習している学生はCを使用するときに必要なメモリー管理が身についていないので、特にひどいという。IT業界での経験を10年積んだ後でコンピューターサイエンスの学位を取得しようとしている身としては、スラッシュドットの皆さんにお尋ねしたい。これはコンピューターサイエンスの新卒者に共通する問題なのだろうか。そうだとすれば、Java中心の学習を補完するには何をすればよいのだろうか。
そもそも計算機の基礎中の基礎は機械語 (スコア:3, 興味深い)
計算機がどのように動いているのか、データと命令とか、値としての 20h と スペース文字の区別がつかないとか、そういう事をまずは一旦理解してから高級言語へと移行するべきだと思うんだ。別に長大なプログラムをアセンブラで組めるようになれ、という意味じゃなく。
最初から高級言語だと、その高級言語が何に依存しているのか判らないんで、「床を踏み抜く」的な間違いをしでかしてしまう。
fjの教祖様
Re: (スコア:0)
Cで書いててポインタがわからないと言っている人は、その基礎をやってないからだと思う。
Re: (スコア:0)
ほぼ同意だが、順番はどうなんだろう?高級言語やってからハードに降りていくのは無理なのだろうか
Re:そもそも計算機の基礎中の基礎は機械語 (スコア:2)
1回で覚えるようなものではないので、繰り替えして欲しいと思います。
最初に、1つの講義でハード・機械語から高級言語まで実習を交えて教えて、
そのあとでパラレルで良いのでそれぞれを実習を交えて教えて行って欲しいと思います。
Re:そもそも計算機の基礎中の基礎は機械語 (スコア:1)
Re: (スコア:0)
おっさん登場
N88-BASIC、peekにpokeでマシン語沼にドボンしてMS-DOSでc、これが定番の順番
大事もくそもこの順番しかなかたwww
Re: (スコア:0)
昔はやりたいことやるためにハードに降りて行ったけど、今はそうしなくても何とかなっちゃうからな。
Re: (スコア:0)
i386 だとアドレッシングモードとか煩雑なので Z80 エミュレータと zasm を使用して演習しています。メモリに番地があって 0 番地から順番に実行される。命令もデータもメモリに置かれるなんてことを学生に理解してもらうのに苦労しています。それでもやらないよりはましだと信じている。
Re: (スコア:0)
そもそも計算機がどう動いているかというと、マイクロコード、ハーバード・アーキテクチャ、バスアービトレーション、
フリップフロップ、クロック、AND/OR/NOTゲート、トランジスタ、半導体、電圧・電流・電荷、電子、・・・
とりあえず、クオークとレプトンとは?辺りから学習すればいいのですか?
Re: (スコア:0)
単に自分が理解できる一番低レベルなところを基礎としているだけ。
C言語は知っているけれどアセンブリ言語はやったことのないうちの上司は、
アセンブリ言語までは必要ないけれどCは基礎だから、と言っていますし。
アセンブリ言語が普通に使われていたころは、
ワイヤードロジックも理解せずにプログラムができるか、
とか年寄りが言っていたはず。
単に古来からある「最近の若い者は」現象にすぎませんね。
Re: (スコア:0)
それで出来上がるのが教祖様なら、やめておいた方がいいと思うがね
普通の大学なら足りるハズ (スコア:2)
Java中心の学習とかイミフメ杉。
『Cを使用するときに必要なメモリー管理』っていうのもよく分からないけど、学校で教えるような事ではないね。
Re: (スコア:0)
学校で教えることではないというなら、誰がいつ教える。
それが機能しなくなったから、ダメになったんだろう。
Re:普通の大学なら足りるハズ (スコア:2)
ここ覚えておいてねー、わかりましたで済む事項だから。
コンピューターサイエンスの何たるか (スコア:2)
コンピューターサイエンス教育では、 C も Java も教えないよ。 C なり Java なりを道具にして、アルゴリズムの設計と実装という、 500 年後にも意味のある (と期待される) 概念を教えるんだよ。
もちろん、コンピューターサイエンスの中でも専門とする内容によっては Linux カーネルを改造することが必要になったり Haskell コンパイラーを書くことが必要になったりするから、そういう人は必要な技術を学ぶけれど、「コンピューターサイエンス学科の卒業生なんだから C 言語でプログラムが書けるはず」みたいな先入観はやめた方がいいと思う。
Re:コンピューターサイエンスの何たるか (スコア:2)
そのような技術者の需要は日本では極めて少ない。CなりJavaなりが自由に書けるようになってからにしてほしい。
日本の情報産業は日本語や日本の商習慣の壁に守られているから存在している、農業より世界に輸出できていない産業ということを自覚するべき。
Re: (スコア:0)
アーキテクチャを勉強しない計算機科学とかどんな大学だよ。fcp はヘネパタ本読んでないようだな。
Re: (スコア:0)
500年後は言い過ぎでしょう。
ノイマン型コンピュータができて100年たってないんですから。
今のアルゴリズムは大体ノイマン型を大前提にしているはず。
というか並列化の時代になった時点で、
すでに使えなくなっているアルゴリズムは出てきているのでは?
早いのが取り柄のアルゴリズムなんかは。
データ設計のほうがまだ長持ちすると思う。
独学する方法 (スコア:1)
これさえ身に付ければ大抵の言語は習得できる。
順番は関係ない。
Javaから入ってパフォーマンス不足に悩まされたらCを覚える流れでも全然いいと思う。
情報学分野の大学教育参照基準 (スコア:1)
http://www.scj.go.jp/ja/member/iinkai/daigakuhosyo/daigakuhosyo.html [scj.go.jp]
残念ながらまだできていなかった。
Javaを勉強したらCが使えないってそれは当たり前 (スコア:1)
なんでCに特有のテクニックを、
コンピュータサイエンスで教えないといけないのか。
自社の業務に必要な知識は自社で教えればいいだろう。
メモリ管理とか十把一絡げに言うが、
じゃあ関数呼び出し時に変数をスタックに積むロジックとかは、
Cをやっている人に書けるのだろうか?
これも重要なメモリ管理の一つだと思うが。
と考えると、「メモリ管理」というのはCに特有なテクニックにすぎない。
単にC以外を知らない人がCの常識は世界の常識だと思って、
新人を常識知らず扱いしているだけだろう。
単にその職場の職員の質の問題であって、
職場での教育に力を入れればいいだけの話。
コンピュータサイエンス教育が何かをやる必要はない。
( ゚д゚)ポカーン (スコア:0)
なんでCに特有のテクニックを、
コンピュータサイエンスで教えないといけないのか。
メモリ管理なんて、別にCに特有のテクニックでもなんでもないし……。
というよりテクニックですらないし。
なに言ってんだコイツ?
メモリ管理とか十把一絡げに言うが、
じゃあ関数呼び出し時に変数をスタックに積むロジックとかは、
Cをやっている人に書けるのだろうか?
これも重要なメモリ管理の一つだと思うが。
最近はこのレベルの阿呆が、ドヤ顔でわけわからんことのたまうから始末に負えない。
このコメントひとつで「私はCコンパイラに関してドシロウトです」と吹聴してるようなもん。
JavaやPascalじゃあるまいし、Cが全ての関数呼び出しが
デスマのしのぎ方とか (スコア:0)
栄養ドリンクはどれが効くとか、ゲーム業界はやばいからやめとけとか、給料がいいのは金融系だとか・・・・・・
文系スキル (スコア:0)
人とのコミュニケーションの取り方、女性との話し方。
ん、理系全般に言えそうな気がしてきた。
Re: (スコア:0)
それは重要ですね
ただ、それって文系・理系問わず重要なことなので、小学生のころからやったほうがいいものではないかと思います
恋愛がらみは思春期にさしかかったころじゃないと身につかないとは思いますが
ちなみに某学校で対人スキルを身に着けさせる授業を導入したところ、いじめが減ったらしいです
Re: (スコア:0)
理系全般どころか、あらゆる分野に言えることじゃん
あとコミュ力を学問として教えることはあまりないし、コミュ力が「文系」スキルなのかは怪しい
複数の言語を使いこなせばいいだけでは? (スコア:0)
仮にもIT系の学科を卒業しておきながらJavaしか使い物にならんというほうが問題のような気も・・・
アセンブラをどれか1つにc or c++、perl or python、lisp or scheme、ml or haskellぐらいは
教養課程のうちに終わらせておいてもバチはあたらない・・・あ、あとshも必要か(笑)
Re: (スコア:0)
SFC出身に勉強してきたことはなにって聞いてみたら
cpとか、lsとか、catとか言ってたがjavaのジャーも言わなかったんだが
Javaのせいじゃない (スコア:0)
コンピュータサイエンス出身のクセに「Javaで勉強したからメモリ管理が出来ない」
なんてレベルの人間なら、その時点で無駄無駄。
仮にCで教育したって、今度は「あいつらはCでしか勉強してこないから、
Javaのメモリ管理は全部GCに任せられてラクチンだとしか思ってない」
ってなるのがオチでしょ。
先にC言語勉強した方がいいんじゃないの (スコア:0)
っていうかJavaみたいな糞言語の学習はほどほどで切り上げて、
CeylonとかKotlinとかのまともなJVM言語を勉強した方が良いんじゃないか
そもそも論orz (スコア:0)
そもそも何をもってして計算機科学を修めたとするんだろう。
「俺が修めたものこそが計算機科学、お前らがやってきたのはただのプログラミング、専門学校の領域だ!」ってな人がぼちぼちいて怖い。
Re: (スコア:0)
学位って修士なの? 博士なの?
博士なら、スキルの修得なんてどうでもよくて(というか必要条件でしかなくて)、
どれくらいその分野に本質的な貢献をしたかだけが問われる。
もちろん、コピペでOKみたいな大学の話はおいておいて。