
米大学のコンピューターサイエンス学部上位39学部、Pythonが初級コースで教える言語1位に 143
ストーリー by headless
初級 部門より
初級 部門より
米大学のコンピューターサイエンス学部で上位にランキングされる39学部で、PythonがJavaを上回り、初級コースで教えるプログラミング言語トップになったそうだ(Communications of the ACMの記事、
ITworldの記事、
本家/.)。
Pythonは39学部中27学部のコンピューターサイエンス初級コース(CS0またはCS1)で教えられており、上位10学部では8学部で教えられている。Javaはこの10年ほど初級コースで教えるプログラミング言語のトップに君臨していたが、Pythonへの移行が進んでいるという。一方、高校の大学先修課程ではJavaが使われているとのこと。3位以下はMATLAB、C++、C、Scheme、Scratchが続く。ちなみに、上位39学部としたのは40位に8校が同点で並んでいたためだとしている。Pythonの比率は上位10学部で80%を占めているのに対し、上位39学部では69%となっていることもあり、40位以下を含めると順位が変わる可能性もありそうだ。
Pythonは39学部中27学部のコンピューターサイエンス初級コース(CS0またはCS1)で教えられており、上位10学部では8学部で教えられている。Javaはこの10年ほど初級コースで教えるプログラミング言語のトップに君臨していたが、Pythonへの移行が進んでいるという。一方、高校の大学先修課程ではJavaが使われているとのこと。3位以下はMATLAB、C++、C、Scheme、Scratchが続く。ちなみに、上位39学部としたのは40位に8校が同点で並んでいたためだとしている。Pythonの比率は上位10学部で80%を占めているのに対し、上位39学部では69%となっていることもあり、40位以下を含めると順位が変わる可能性もありそうだ。
日本では? (スコア:5, すばらしい洞察)
この3年でPythonは科学分野に大きく普及していて,Pythonによる科学計算プログラミングの開発環境におけるデファクトスタンダードとなりつつあるIPythonのユーザー数も,ここ数年で大きく増加しています.
しかし,IPython User Survey 2013 [ipython.org]によると,日本ではほとんど流行っていないようです.
原因は私には分からないですが,一つには日本語の情報が不足していることがあるように思います.
恐らくIPythonユーザーは,プログラミングにストレスをかけずに計算したい人がほとんどで,コンピュータサイエンス分野とは姿勢が異なると思いますが,日本のコンピュータサイエンス分野にははたしてPythonは浸透しているのでしょうか?
特に学部生には,英語が大きな壁となっていないでしょうか?
Re: (スコア:0)
東大の教養ではrubyだそうですよ
Re: (スコア:0)
国産で信者が多いからあんまりこういう事言いたくないけど、
Pythonを採用している製品の数と比較にならないよね。Ruby覚えるだけ無駄っつーか。
Luaのほうがマシだわ。
Re:日本では? (スコア:1)
往々にして、このように自分の使ってない言語をくさす人間にかぎって、プログラム言語の本質も、教えた経験もない。
Re:日本では? (スコア:1)
PHPはdisっても誰からも文句の来ない唯一の言語だってエロい人が言ってました。
-------- tear straight across --------
Re:日本では? (スコア:1)
言語はシェアも大事だけど、それだけで良し悪しをいうのは権威主義というか、ミーハーというか。
教育という意味では、Ruby のオブジェクト指向言語としての完成度の高さを考えるといい選択だと思う。
Re: (スコア:0)
同意です。ruby自体は好きですが、ライブラリが少ないですし、使えるソフトウェアも少ないです。
使えるのはWeb系ぐらい? あとは、SketchUpとかかな。
数値計算には、Python+Numpyが定番と聞きます。
映像系ソフトウェアだと、3DCG含むワークフローにはPythonが標準となっていますし、あとはECMAScript派生言語の組み込まれてるのがAdobeを中心にちょこちょこあるぐらいですね。
# まぁPythonはsandboxにできないという致命的な問題があるんですが
ゲームだと、C++、C# (Unity等)、Objective-C (iOS)、Java (Android)あたりになるんでしょうねぇ。
# 言語の数がちょっと多すぎる感。
Re:日本では? (スコア:1)
Python+Numpy はお手軽なんだろうだけど,数値計算の定番っつうことはないなあ,さすがに.
そういう筋の業界の片隅で仕事しているけど,数値計算とよべるレベルで使うのは哀しいことに? 今でも大半が Fortran か C/C++ からの二択.
というのも,スパコンをはじめとして本気の数値計算用の環境にはそれしか言語が存在しないんだな.
だから,どうせ選ぶならということで大企業や大学の研究室は Fortran か C を選ぶんだよね.
正直古臭いし,単に過去からの惰性でそうしている面も無くはないので,何とかして欲しいけどね.
それに,小さなお試し計算であれば,業界では Python よりも Matlab や INRIA のアプリの方が使われているんだな.(Matlab は) 結構高いのにねえ.
で,肝心の Python や Ruby だけど,数値計算をする人の間ではほとんど話題に出てこないよ.
Re:日本では? (スコア:1)
数値計算も色々なトコに広がってるから、数値計算というおおざっぱすぎるくくりではもう何も言えない悪寒。
使う言語なんかも処理の内容とか手間とかの色々な関係で決まるだろうし、計算規模だってバラバラだと思う。何というか、速度のために他はすべて無視する(しかない)っての(だけ)が数値計算だ、っていう感覚はもう正しくはないみたいな。数値計算だからスパコンをつかわなきゃいけない、ってわけでもない。
シンプルだけどバカ正直にやると年以上の単位で時間がかかるものも数値計算だし、超複雑だけど計算時間自体はそれほどでもない、ってのもやっぱり数値計算だと思う。歴史的な経緯があるのもわかるけど、あんまカタにはめすぎないほうがいいと思う。
# Matlab すらほとんど出てこない業界の人間
# Python や Ruby (や Perl)は C/C++/Fortran からの出力の処理にみんな何かしら使ってる気がする
Re: (スコア:0)
なんだか、日本発の優秀なスクリプト言語という興奮も過ぎ去って、Railsというブームも終わって、
自称言語通ぐらいの人間にとっては何もかも終わったような感じがする今になって、
Rubyがいまさら広く浸透し始めているような感触があるんだよな…人の動きはままならない。
#「信者」はやめよう
Re:日本では? (スコア:1)
mrubyが出てからは、これまでの「RailsのためのRuby」ではない流れが始まっているように見えます。
Re:日本では? (スコア:1)
アプリ屋さんからは見えないかもしれないけど
サーバインフラ方面だとpuppetとかchefとかで、何故かRubyでの実装が人気。
Perl の代わりに Python じゃなくて Ruby 使う人が増えてるのかな?
#日本で Python がイマイチなのは PyPy などの名称が悪いのでは(半分本気)
Re: (スコア:0)
嫌みを言うのも良いけど行間読んだら?
彼は別にテクニックで変な誘導をしているわけではないよ。
Re: (スコア:0)
行間読むも糞も
>お気に入りを取り上げる時は採用数は無視する。
これがどこから出てきたんだかって話だと思う・・・。
#たまに沸くよね。自分以外のACはすべて同一人物だと思っちゃう人。
Re:日本では? (スコア:1)
便利な言語はじめに覚えるのは (スコア:0)
Matlabのように便利な言語をはじめに学ぶと他の言語何も触らなくなる人が大量に出てくるから
PHPerみたいにMatlabしかできないゴミが出来上がる
Re:便利な言語はじめに覚えるのは (スコア:1)
MATLABしか使えないPHPerって、
存在しなくね?
Re: (スコア:0)
工学部ならMATLABは妥当な選択肢だが、コンピューターサイエンス学部でMATLABというのは首を傾げるしかない
#配列のインデックスが1から始まるのはどうにかならんか? 数式で表されたアルゴリズムをコードに落とすのにとにかく不便
Re: (スコア:0)
フーリエ変換の直流成分の添字が1でしたっけ?
私もあれはないわーと思いました。0だよねやっぱ。
せめてFORTRANみたいに指定できればいいのに。
#MATLABはほとんど知らないので的外れなこと言ってたらごめんなさい。
Re: (スコア:0)
フーリエ変換に限らず、例えば時系列のデータを扱う時に(離散化した)時刻は0から始まるのが常識でしょう
(サンプリングしたデータに常に遅延がついて、遅延0を表現できないのはおかしい)
だから工学の分野のアルゴリズムは0から始まるのが一般的なわけで……
影響が大きすぎて今更仕様を変えられないのだろうけど、BASICだって0/1のモード切替があるくらいだからねえ
Re: (スコア:0)
MATLABでコンピュータサイエンスというのは確かに疑問
だけど配列のインデクスが1からというのは、MATLABの根本に行列があって数学ベースで考えるものだから
0番目というのはコンピュータサイエンスベースでの考え方
Re:便利な言語はじめに覚えるのは (スコア:1)
数学でも自然数は 0 を含める流儀が主流だと思いますが。
アルゴリズムのお勉強 (スコア:0)
コンピュータサイエンスの初級コースってのが
どんな教育をする場かは知りませんが、
アルゴリズムのお勉強とかは、C/C++ がベストと思うんですよね。
使える機能がもっとも原始的という意味で。
ま、最低、Java でもいいとは思うけど。
Re:アルゴリズムのお勉強 (スコア:1)
ちなみにKnuth先生の本では, 仮想機械の機械語を使って記述されてますね.
高級言語では, アルゴリズムを評価する基準の一つである計算量について評価が出来ないので, 機械語を使うべきなのだとか.
Re: (スコア:0)
そこはPascalだろ。
コンパイラがやってはいけないことをやってはいけないと言ってくれない言語を初心者に書かせるのはちょっと。
Re: (スコア:0)
同意。アルゴリズム+データ構造=プログラムを体得するのに,
Pascalは良い選択の一つだと思ふ。Cを学ぶのは,それからでも
遅くないです。
Re: (スコア:0)
わたしは独学でBASICで,大学に入ったらPascalでした.
私が卒業後,すぐC派閥に押されてCに変わり私の教授は嘆いてましたが.
Re: (スコア:0)
いいかも。オブジェクト指向周りの機能は、最初は不要だから、最近の言語はどれも機能が多すぎるし。
Re: (スコア:0)
言語に依存しない「アルゴリズム+データ構造」を学ぶには、やはりSICPでSchemeだと思ってたのに
今はもう違うのね。本家もPythonを使ってるみたいだし。
オブジェクト指向も3章読んで理解したのだが。
Re: (スコア:0)
数あるプログラミング言語でも飛び抜けて多機能なC++を、「使える機能がもっとも原始的」とは恐れいった
Re: (スコア:0)
そうかもしれない。私がイメージしたのはGCとかに邪魔されず。
基本的なデータ構造を自作しても効率が悪くないくらいに原始的という感じ。
確かにSTLとか使っちゃったらアルゴリズムのお勉強にならないね(^^;
Re: (スコア:0)
STLの存在がデータ構造のアルゴリズムの学習を妨げるとしたら、qsortがあるCだってソートの学習に向いていないことになってしまう
ある機能が学習の妨げになるというのなら、それを使わないようにすればいいだけ
それに、より原始的なほうが適しているというのなら、マシン語やアセンブリ言語から学ぶべきだし、
GCがアルゴリズムの学習を阻害するというのも意味がわからないな
Re:アルゴリズムのお勉強 (スコア:1)
> GCがアルゴリズムの学習を阻害するというのも意味がわからないな
ここだけ説明、GC のある言語でマージソートのようなメモリを
確保するアルゴリズムを実装すると、実装に仕方にもよるけど、
正体不明の速度低下を引き起こすことがあったりするんですよ。
私自身の体験ですけどね。
で、アルゴリズムの素の性能を見極めるときの邪魔にならないかなぁと思ったと。
Re:アルゴリズムのお勉強 (スコア:1)
どうして無限に深いスタックのあるプッシュダウンオートマトンや無限に長いテープのあるチューリング機械が計算機のモデルになるのかいつも不思議で仕方ない。それこそ無限のほうが何かと楽になるという数学屋の都合にすぎないと思うんだが。
Re:アルゴリズムのお勉強 (スコア:1)
>C++がとんでもなく多機能なのは誰が見ても明らかで、「使える機能が原始的」という根拠はまったく説得力を持たない。
私は「原始的なほど多機能」だという感覚があるから、
全然違和感ありませんが。
(私にとって)超高級言語の LOGO とか、他の言語に比べて機能が少ないどころの話じゃないですし。
Re: (スコア:0)
pythonなどではCやpascalなどに比べて考えなしにコードを書き始めても何とかなることが多いですが
教育の場においては良かれ悪しかれですね
ま、入門コースならpythonでいいんじゃないですか
素振りだけやって終わる野球入門なんてイヤでしょう
Re: (スコア:0)
入門は弱い型付けな言語の方がいい。
int x;
x = 0.5;
が、エラーになるのは、スクリプト言語という選択肢がある昨今では、プログラムを学ぶ上では本質的ではない。
コンパイラの都合、最適化、高速化の都合、書き間違いの検出、などなどの意味はあるけど、
最初期にそこで引っかかって時間を無駄にする理由は特にない。
int a[10];
float x;
x = 0.5;
a[x] = 0;
一方、これがエラーになるのは、「配列の性質」だから、理解する必要がある。
と言うように、弱い型付けの方が理に叶っている面が大きい。
あまり本質的ではないことには時間をかけずに、そこそこのものが作れるようになってから
Re:アルゴリズムのお勉強 (スコア:4, 参考になる)
勘違いしている人が多いですが、C言語では
int x;
x = 0.5;
は、エラーになりません。Cの規格上、これは"合法"です
正しい記述なので、処理系は警告を出す必要がありません。例えば、最近のGCCではエラーも警告も出ません。
しかし処理系によっては未だに警告を出す場合があります。その余計な警告が勘違いを引き起こしている様です。
Re: (スコア:0)
> int x;
> x = 0.5;
> が、エラーになるのは、スクリプト言語という選択肢がある昨今では、プログラムを学ぶ上では本質的ではない。
うーん、整数を宣言する意図があるのに、その直後浮動小数点数を代入というのは
思考が整理されていない証拠のように思うのです。
数学でも、まずは自然数、次に整数、次に有理数、でもって実数と段階を踏みますよね。
整数と浮動小数点数が区別できることは重要ではないかと。
まあ、これ以上は、動的型の言語か静的型の言語かの果てしない論争になるんでしょうけど。
Re: (スコア:0)
>動的型の言語か静的型の言語かの果てしない論争
俺の中では、「型推論ありの静的型付け言語が最良」ととっくに結論が出てるな
C++/Java/C#だって型推論を取り入れ始めたし、
動的型付けの言語だって、実は最適化のために内部で型推論してる処理系は多い
型推論ありの静的型付け言語を否定する意見があったら聞いてみたい
Re: (スコア:0)
型付き論理は一般的ではないので論理型言語では動的型のほうがよい
Re: (スコア:0)
で、結局型を意識しないと実行時エラーになるのが弱い型付け言語ですよね。
Re: (スコア:0)
初級ならお約束は少ない方がいいんじゃないでしょうか
Cだといきなり
#include <stdio.h>
とか(当初は)意味不明なお約束が出てきて
「へ~、スタジオをインクルードっと。あれ、エラー? stANDARd iNPUT/oUTPUT? 騙された!」
となるわけでそれだけで嫌いになる要素充分ですわ
Re: (スコア:0)
どうせ意味不明なお約束はどの言語でもあるし、
プログラムをしていれば何度でも出くわすんだから、
そういうもんだと認識させるのは非常に重要ですよ。
全部分かってからじゃないと書けない、なんて言ってる人は
新しい物事なんか永遠に始められません。
Re: (スコア:0)
あとvoid main~も。
Re:アルゴリズムのお勉強 (スコア:2)
hosted environmentだっけか、ランタイムに対する仕様
ランタイムまで自作するときにゃvoid main(void)でもかまわん、
つまり言語そのものの仕様とはしないってのがCの特徴では?
時代の流れ (スコア:0)
Cに似たJavaが作られ、CやJavaに似たPythonが作られ、・・・だから10年後はCやJavaやPythonに似た言語に変わってるでしょう
Re:時代の流れ (スコア:1)
Python が登場したのは1991年
Javaが登場したのは1995年
分かりやすい統計結果 (スコア:0)
>Pythonの比率は上位10学部で80%を占めているのに対し、
>上位39学部では69%となっていることもあり
上位にランキングされる学部ほど、初めから高度な講義を行うはずですが、その結果
ライブラリやドキュメントの充実した言語を使う事になるという事でしょうか。
Pythonはドキュメント整備を重視する文化で知られていますし、
科学技術計算でMATLABの代わりに使う人が増えているので
他のスクリプト言語に対して優位にあります。
それにしても、分かりやすい統計結果が出ると感心してしまいますね。
Re:仕方がない (スコア:2)
Pythonがメジャーな言語なのは残念な事なん?