大学で初めて習うプログラミング言語
- 「大学での初心者に対するプログラミング講義ではC言語を使うべきでない」 http://qiita.com/wholekeik/items/4b8ee0825f0b12778a3a
今日の釣り堀
以下の文章は、工学部情報系学科一回生の、最初のプログラミング授業について述べたものである。
- 現在普及している
- 環境構築が容易(私の大学では大学が用意したコンピュータを使うのでこの項目は関係ない)
- 動的型付言語
- 十分高レベルに抽象化されている
1はだいたい賛成.しかし教育用や研究用に限定した場合は必ずしも必用な条件とも言えない.特に研究用だと今後普及するかもしれない言語をターゲットにするのは良くあることだろう.
2は必要では無い.一般的な環境設定くらい,学生のうちに経験しておいた方がいいくらいだ.分からないことがあっても,友達や先生に聞くことができるからな.
3は完全に反対.見えない部分で動く機能が増えて,中の動作が理解しにくくなるだけ.*1
私自身は静的型付言語の方が動的型付言語よりも優れていると考えているが、プログラミング初心者に教えるという目的には向いていないと思う。
根拠は示して無いのか.やれやれ.
4番目は「十分高レベル」と表現が曖昧.工学部としては褒められたもんじゃないな.
3とも絡むが,抽象度というか,「おまじない」が増えると中を理解するのが困難になる.情報系の学生なら,単なる「プログラミング初心者」ではなく研究者や技術者の卵なので,初級プログラマとは教育方針も異なって当然だろう.*2
- プログラミング初心者が扱うには間違いなく低レベルすぎる。
- メモリだのアドレスだのといった知識はプログラミング初心者に必要なものではないし、コンピュータの動作原理に関して造詣の深いプログラミング初心者はなかなかいない
情報系の学生なら,メモリだのアドレスだのパイプライン・ストールだのVLIWだの動的分岐予測だのは知っておくべき基礎知識の一つ.C言語でも抽象度が高すぎるくらいかもしれんが,さすがにアセンブラをやれとはいわんよ.
ヘネシー&パターソン コンピュータアーキテクチャ 定量的アプローチ 第5版
- 作者: ジョン・L・ヘネシー,デイビッド・A・パターソン
- 出版社/メーカー: 翔泳社
- 発売日: 2015/01/19
- メディア: Kindle版
- この商品を含むブログ (13件) を見る
- 作者: デイビッド・A・パターソン
- 出版社/メーカー: 日経BP社
- 発売日: 2016/10/26
- メディア: Kindle版
- この商品を含むブログ (6件) を見る
Googleさんなんか,深層学習用プロセッサとかも出してたな.
http://www.itmedia.co.jp/news/articles/1704/06/news056.html
https://japan.cnet.com/article/35099335/
- 「初心者向けの言語」 http://d.hatena.ne.jp/JavaBlack/20070804/p1
http://b.hatena.ne.jp/entry/qiita.com/wholekeik/items/4b8ee0825f0b12778a3a
- id:tsignal 大学でプログラミングを教えてもらおうと考える者は情報系に行くべきではない。
- id:akabekobeko このカリキュラムは改善の余地あるけど Joel on Software の The Perils of JavaSchools は「なぜ C 言語なのか?」についての一つの解なのでぜひ読んでほしい。
「Javaスクールの危険」
このアーティクルで言いたいのは、Javaは大体において優れたプログラマと凡庸なプログラマを見分けるのに使えるほど難しい言語ではないということだ。Javaは仕事で使うのには良い言語かもしれないが、それは今日の話題ではない。Javaが十分に難しくないというのはバグではなく、機能であるわけだが、それには1つ問題がある。
私のささやかな経験から言わせてもらうと、伝統的に大学のコンピュータサイエンスのカリキュラムで教えられているもので、多くの人がうまく理解できないものが2つあった: ポインタと再帰だ。
大学では連結リストやハッシュテーブルなどについて学ぶデータ構造の授業が最初にあり、そこではポインタを徹底的に使う。この授業はふるい分けに使われていた。あまりに難しくて、コンピュータサイエンスの学位の知的な挑戦に耐えられない者は脱落していたのだが、それは良いことなのだ。もしポインタが難しいと思っているなら、不動点理論に関する証明で難儀するのを覚悟しておくことだ。
http://local.joelonsoftware.com/wiki/Java%E3%82%B9%E3%82%AF%E3%83%BC%E3%83%AB%E3%81%AE%E5%8D%B1%E9%99%BAしかしポインタと再帰の明らかな重要性以上に重要なのは、これらの学習から得られる精神的な柔軟さと、これらを教えている授業からふるい落とされないために必要な精神的態度が、大きなシステムを構築する上で欠かせないということだ。ポインタと再帰には、ある種の推論力、抽象的思考力、そして何よりも問題を同時に複数の抽象レベルで見るという能力が要求される。そしてポインタと再帰を理解できる能力は、優れたプログラマになるための能力と直接的に相関している。
オールJavaのコンピュータサイエンス教程では、こういった概念を扱うための頭の回転の良さを持ち合わせていない学生をふるい落とせない。程度を下げた新しい授業はどうにか切り抜けられるが、Java会計アプリケーション以上に洗練されたプログラムを作れるほどには頭の出来の良くない卒業生たちを、Java 100%スクールが量産しており、その様を私は雇用主として目の当たりにしている。
- id:takumikabu 単に「プログラミング初心者」ならpythonでも構わないけど、「コンピューターサイエンス初学者」ならCでしょう
- id:als_uz 情報系なら結局アセンブリとか組み込みとかやる羽目になるのでCやらせとかないといけないし、だいたい必修になってるよね。Web系人材育成しますならruby, php, pythonでもやればいいのだけれど
- id:logic 大学ならCでいい。当時はさっぱり理解できなくても後からあの時C学んでて良かったと思うようになる。Cの後ならどの言語でも独学で覚えるのは簡単。
- id:unsoluble_sugar 業務で10個以上言語触ってるけど「Cやってて良かった…」ってシチュエーションめっちゃあるのでCで良いと思う
- id:aiueo1145140 研究はCが必須な分野が多いからダメだよ。馬鹿は退学してJavaScriptやPHPでも書いてなさい。
- id:b_wa Cでいい。Python、Ruby、特にJavaScriptなんて独学でやるもの。
- id:chikoshoot “大学”ってのがミソなんだろうが、大学生ならCを学習するための力は十分あるはずだ。Pythonでプログラムとは?みたいな話するならそれはむしろ小中向きでは。
- id:n314 情報系の大学ならCかアセンブリから始めるのでいいでしょ。スクリプト言語って講義で学ぶものじゃなくて各自で勝手にやるものだろう。
- id:rti7743 Cでいい。殆どの言語はCからの知識を使えるし、機械語的な動作も学べるんだし。
- id:pseudomeme 高校以下とか文系学部なんかならそうかも知れんけど工学部情報系学科ならCでいいのでは
- id:georgew C++ならともかくも、初心者にとってC言語はそんなに難しいだろうか?? Cライクなシンタックスは多くの他言語に影響及ぼしてるから最初に学習する価値はあると思う。
- id:Tamemaru 「おまじない」が少ないという点だけを見てもC言語は初学者にとって優れた言語だと思う。意欲的な学生ほどおまじないを理解しようとしてドツボにはまり脱落していく。Rubyでもいいけど。
- id:foobarchocobo なぜ高度に抽象化されている言語を初心者に教えたいのだろう。歯車がみえた方が理解しやすいと思うんだけどな
- id:mac_wac 初心者は型を意識させるために敢えて静的型付けを選んだほうがいいのではないかと思ってる。というわけで個人的にはC++推し。
- id:techboon "初心者がまず覚えるべきなのは、プログラミング言語とは、変数・関数とは、といった内容" そうですね。なので変数の型も意識せず何でも変数に突っ込める言語より型に厳密でメモリを意識させるCは良いと思います。
- id:nekomimist 何を学ぶためにやるかだな / 組み込み歴22年目のおっさんの意見としては、Cで書いたことがない人を増やすのは将来的に危険だと思う。だれも低レイヤやれなくなるぞ?
- id:bluemoonjp 他学科なら何でも良いと思うけれど、情報系はあえて抽象化されてないCを使ってるんでしょ(歴史的な理由もあるだろうけど)。メモリ構造は一般的な初心者には必要なくても、情報系の初歩として必要な学習内容。
- id:watanuki_p プログラミング教室と情報工学のプログラミング授業はそもそも方向性わ目的が違うのでは。
- id:REV まあ、「初心者のためのお料理教室」で、1日目:鋼の包丁の研ぎ方と、使用後の手入れ 2日目:檜の俎板の手入れと鉋掛け 3日目:鶏のバラし方 っていうのも大変だとは思う。
「料理をしたことのない若い主婦(or主夫)のためのお料理教室」じゃなくて「プロの料理人を目指す人のための調理師学校」だからね.基本的な包丁の使いかたや研ぎ方なんて,既に習得済みの人の方が多いくらいかもしれん.
お料理教室と大学じゃあ,目的が違うんだ.
- id:gingger4 どこの大学だ?
- id:ritena 今の情報系ってこんな絵本レベルのことを教えてるの・・?突然実習で知らない奴アホかって感じだったけど、本気で職業訓練所に成り下がったのか。。
- id:skifuyu 最後まで読んだらCがというよりこの全く整理も更新もされていない講義がクソなのではという感想
単に学力崩壊してる底辺大学ってだけかもね.
敗者もたくさん見てきたよ.C言語も理解できない人は素養がないから,一刻も早く別の学科に移った方がいい.味音痴が料理人目指すようなもんだ.
- id:syusuimaru オッサンからするとCASLとかに比べたらC学べるだけましな気がする。
- id:fan-tail 大学で最初にやった言語はCASL2でした…orz/課題だけ出して解決は好きな言語でやれ、とか言ってしまいそうだ…
- id:kuborn "FORTRAN、、今は使われない" せやろか
- id:ksugimori 物理系ではFortranは現役ですよ
- id:sojisan fortranバリバリ使ってるゾ
- id:wrss “* FORTRAN ・・・ 数学科学計算に特化 でも今は使われない”←ウチの会社ではまだ現役なのですが(T . T)。ただ、30年前のコードとか見てると殺意がわくのは確か。
- id:uzusayuu Fortranが今は使われないとか、ちょっとバイアスがかかっていると思う。今もFortranコンパイラはアクティブにアップデートされてて、Xeon-Phiサポートまでされてる https://software.intel.com/en-us/fortran-compilers
- 作者: Jacob Mason
- 出版社/メーカー: Createspace Independent Publishing Platform
- 発売日: 2017/06/02
- メディア: ペーパーバック
- この商品を含むブログ (1件) を見る
- 作者: Ian Chivers,Jane Sleightholme
- 出版社/メーカー: Springer
- 発売日: 2015/08/07
- メディア: Kindle版
- この商品を含むブログを見る
PCクラスタで並列プログラミング―High Performance Fortranで楽々並列化
- 作者: 岩下英俊,坂上仁志,妹尾義樹,林康晴,HPF推進協議会,津田孝夫
- 出版社/メーカー: 培風館
- 発売日: 2011/03/01
- メディア: 単行本
- クリック: 8回
- この商品を含むブログ (1件) を見る
High performance computing 分野では,まだまだ現役っぽい.
一度デファクトスタンダードになると,過去の資産の継承のためにも必要になるからな.