パスワードを忘れた? アカウント作成
11262787 story
Python

米大学のコンピューターサイエンス学部上位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位以下を含めると順位が変わる可能性もありそうだ。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 日本では? (スコア:5, すばらしい洞察)

    by bghtyu67 (46369) on 2014年07月12日 20時01分 (#2638197) 日記
    コンピュータサイエンス系ではないですが,Pythonでサイエンティフィックなプログラミングを3年ほどやっています.
    この3年でPythonは科学分野に大きく普及していて,Pythonによる科学計算プログラミングの開発環境におけるデファクトスタンダードとなりつつあるIPythonのユーザー数も,ここ数年で大きく増加しています.
    しかし,IPython User Survey 2013 [ipython.org]によると,日本ではほとんど流行っていないようです.
    原因は私には分からないですが,一つには日本語の情報が不足していることがあるように思います.

    恐らくIPythonユーザーは,プログラミングにストレスをかけずに計算したい人がほとんどで,コンピュータサイエンス分野とは姿勢が異なると思いますが,日本のコンピュータサイエンス分野にははたしてPythonは浸透しているのでしょうか?
    特に学部生には,英語が大きな壁となっていないでしょうか?
    • by Anonymous Coward

      東大の教養ではrubyだそうですよ

      • by Anonymous Coward

        国産で信者が多いからあんまりこういう事言いたくないけど、
        Pythonを採用している製品の数と比較にならないよね。Ruby覚えるだけ無駄っつーか。
        Luaのほうがマシだわ。

        • by USH (8040) on 2014年07月12日 23時09分 (#2638275) 日記

          往々にして、このように自分の使ってない言語をくさす人間にかぎって、プログラム言語の本質も、教えた経験もない。

          親コメント
        • by yohshiy (44859) on 2014年07月14日 12時58分 (#2638827)

          言語はシェアも大事だけど、それだけで良し悪しをいうのは権威主義というか、ミーハーというか。

          教育という意味では、Ruby のオブジェクト指向言語としての完成度の高さを考えるといい選択だと思う。

          親コメント
        • by Anonymous Coward

          同意です。ruby自体は好きですが、ライブラリが少ないですし、使えるソフトウェアも少ないです。
          使えるのはWeb系ぐらい? あとは、SketchUpとかかな。

          数値計算には、Python+Numpyが定番と聞きます。
          映像系ソフトウェアだと、3DCG含むワークフローにはPythonが標準となっていますし、あとはECMAScript派生言語の組み込まれてるのがAdobeを中心にちょこちょこあるぐらいですね。
          # まぁPythonはsandboxにできないという致命的な問題があるんですが

          ゲームだと、C++、C# (Unity等)、Objective-C (iOS)、Java (Android)あたりになるんでしょうねぇ。
          # 言語の数がちょっと多すぎる感。

        • by Anonymous Coward

          なんだか、日本発の優秀なスクリプト言語という興奮も過ぎ去って、Railsというブームも終わって、
          自称言語通ぐらいの人間にとっては何もかも終わったような感じがする今になって、
          Rubyがいまさら広く浸透し始めているような感触があるんだよな…人の動きはままならない。

          #「信者」はやめよう

          • by Anonymous Coward on 2014年07月13日 11時11分 (#2638413)

            mrubyが出てからは、これまでの「RailsのためのRuby」ではない流れが始まっているように見えます。

            親コメント
          • by Anonymous Coward on 2014年07月13日 16時50分 (#2638508)

            アプリ屋さんからは見えないかもしれないけど
            サーバインフラ方面だとpuppetとかchefとかで、何故かRubyでの実装が人気。
            Perl の代わりに Python じゃなくて Ruby 使う人が増えてるのかな?

            #日本で Python がイマイチなのは PyPy などの名称が悪いのでは(半分本気)

            親コメント
  • by Anonymous Coward on 2014年07月12日 18時58分 (#2638178)

    Matlabのように便利な言語をはじめに学ぶと他の言語何も触らなくなる人が大量に出てくるから

    PHPerみたいにMatlabしかできないゴミが出来上がる

    • by Anonymous Coward on 2014年07月12日 19時55分 (#2638194)

      MATLABしか使えないPHPerって、
      存在しなくね?

      親コメント
    • by Anonymous Coward

      工学部ならMATLABは妥当な選択肢だが、コンピューターサイエンス学部でMATLABというのは首を傾げるしかない
      #配列のインデックスが1から始まるのはどうにかならんか? 数式で表されたアルゴリズムをコードに落とすのにとにかく不便

      • by Anonymous Coward

        フーリエ変換の直流成分の添字が1でしたっけ?
        私もあれはないわーと思いました。0だよねやっぱ。
        せめてFORTRANみたいに指定できればいいのに。

        #MATLABはほとんど知らないので的外れなこと言ってたらごめんなさい。

        • by Anonymous Coward

          フーリエ変換に限らず、例えば時系列のデータを扱う時に(離散化した)時刻は0から始まるのが常識でしょう
          (サンプリングしたデータに常に遅延がついて、遅延0を表現できないのはおかしい)
          だから工学の分野のアルゴリズムは0から始まるのが一般的なわけで……
          影響が大きすぎて今更仕様を変えられないのだろうけど、BASICだって0/1のモード切替があるくらいだからねえ

      • by Anonymous Coward

        MATLABでコンピュータサイエンスというのは確かに疑問
        だけど配列のインデクスが1からというのは、MATLABの根本に行列があって数学ベースで考えるものだから
        0番目というのはコンピュータサイエンスベースでの考え方

  • by Anonymous Coward on 2014年07月12日 19時03分 (#2638180)

    コンピュータサイエンスの初級コースってのが
    どんな教育をする場かは知りませんが、
    アルゴリズムのお勉強とかは、C/C++ がベストと思うんですよね。
    使える機能がもっとも原始的という意味で。
    ま、最低、Java でもいいとは思うけど。

    • ちなみにKnuth先生の本では, 仮想機械の機械語を使って記述されてますね.

      高級言語では, アルゴリズムを評価する基準の一つである計算量について評価が出来ないので, 機械語を使うべきなのだとか.

      親コメント
    • by Anonymous Coward

      そこはPascalだろ。
      コンパイラがやってはいけないことをやってはいけないと言ってくれない言語を初心者に書かせるのはちょっと。

      • by Anonymous Coward

        同意。アルゴリズム+データ構造=プログラムを体得するのに,
        Pascalは良い選択の一つだと思ふ。Cを学ぶのは,それからでも
        遅くないです。

        • by Anonymous Coward

          わたしは独学でBASICで,大学に入ったらPascalでした.
          私が卒業後,すぐC派閥に押されてCに変わり私の教授は嘆いてましたが.

      • by Anonymous Coward

        いいかも。オブジェクト指向周りの機能は、最初は不要だから、最近の言語はどれも機能が多すぎるし。

      • by Anonymous Coward

        言語に依存しない「アルゴリズム+データ構造」を学ぶには、やはりSICPでSchemeだと思ってたのに
        今はもう違うのね。本家もPythonを使ってるみたいだし。
        オブジェクト指向も3章読んで理解したのだが。

    • by Anonymous Coward

      数あるプログラミング言語でも飛び抜けて多機能なC++を、「使える機能がもっとも原始的」とは恐れいった

      • by Anonymous Coward

        そうかもしれない。私がイメージしたのはGCとかに邪魔されず。
        基本的なデータ構造を自作しても効率が悪くないくらいに原始的という感じ。
        確かにSTLとか使っちゃったらアルゴリズムのお勉強にならないね(^^;

        • by Anonymous Coward

          STLの存在がデータ構造のアルゴリズムの学習を妨げるとしたら、qsortがあるCだってソートの学習に向いていないことになってしまう
          ある機能が学習の妨げになるというのなら、それを使わないようにすればいいだけ
          それに、より原始的なほうが適しているというのなら、マシン語やアセンブリ言語から学ぶべきだし、
          GCがアルゴリズムの学習を阻害するというのも意味がわからないな

          • by Anonymous Coward on 2014年07月12日 21時59分 (#2638247)

            > GCがアルゴリズムの学習を阻害するというのも意味がわからないな

            ここだけ説明、GC のある言語でマージソートのようなメモリを
            確保するアルゴリズムを実装すると、実装に仕方にもよるけど、
            正体不明の速度低下を引き起こすことがあったりするんですよ。
            私自身の体験ですけどね。
            で、アルゴリズムの素の性能を見極めるときの邪魔にならないかなぁと思ったと。

            親コメント
    • by Anonymous Coward

      pythonなどではCやpascalなどに比べて考えなしにコードを書き始めても何とかなることが多いですが
      教育の場においては良かれ悪しかれですね
      ま、入門コースならpythonでいいんじゃないですか
      素振りだけやって終わる野球入門なんてイヤでしょう

    • by Anonymous Coward

      入門は弱い型付けな言語の方がいい。

      int x;
      x = 0.5;
      が、エラーになるのは、スクリプト言語という選択肢がある昨今では、プログラムを学ぶ上では本質的ではない。
      コンパイラの都合、最適化、高速化の都合、書き間違いの検出、などなどの意味はあるけど、
      最初期にそこで引っかかって時間を無駄にする理由は特にない。

      int a[10];
      float x;
      x = 0.5;
      a[x] = 0;
      一方、これがエラーになるのは、「配列の性質」だから、理解する必要がある。
      と言うように、弱い型付けの方が理に叶っている面が大きい。

      あまり本質的ではないことには時間をかけずに、そこそこのものが作れるようになってから

      • by annoymouse coward (11178) on 2014年07月13日 0時42分 (#2638308) 日記

        勘違いしている人が多いですが、C言語では

        int x;
        x = 0.5;

        は、エラーになりません。Cの規格上、これは"合法"です

        正しい記述なので、処理系は警告を出す必要がありません。例えば、最近のGCCではエラーも警告も出ません。
        しかし処理系によっては未だに警告を出す場合があります。その余計な警告が勘違いを引き起こしている様です。

        親コメント
      • by Anonymous Coward

        > int x;
        > x = 0.5;
        > が、エラーになるのは、スクリプト言語という選択肢がある昨今では、プログラムを学ぶ上では本質的ではない。

        うーん、整数を宣言する意図があるのに、その直後浮動小数点数を代入というのは
        思考が整理されていない証拠のように思うのです。
        数学でも、まずは自然数、次に整数、次に有理数、でもって実数と段階を踏みますよね。
        整数と浮動小数点数が区別できることは重要ではないかと。

        まあ、これ以上は、動的型の言語か静的型の言語かの果てしない論争になるんでしょうけど。

        • by Anonymous Coward

          >動的型の言語か静的型の言語かの果てしない論争

          俺の中では、「型推論ありの静的型付け言語が最良」ととっくに結論が出てるな
          C++/Java/C#だって型推論を取り入れ始めたし、
          動的型付けの言語だって、実は最適化のために内部で型推論してる処理系は多い
          型推論ありの静的型付け言語を否定する意見があったら聞いてみたい

          • by Anonymous Coward

            型付き論理は一般的ではないので論理型言語では動的型のほうがよい

      • by Anonymous Coward

        で、結局型を意識しないと実行時エラーになるのが弱い型付け言語ですよね。

    • by Anonymous Coward

      初級ならお約束は少ない方がいいんじゃないでしょうか

      Cだといきなり
      #include <stdio.h>
      とか(当初は)意味不明なお約束が出てきて
      「へ~、スタジオをインクルードっと。あれ、エラー? stANDARd iNPUT/oUTPUT? 騙された!」
      となるわけでそれだけで嫌いになる要素充分ですわ

      • by Anonymous Coward

        どうせ意味不明なお約束はどの言語でもあるし、
        プログラムをしていれば何度でも出くわすんだから、
        そういうもんだと認識させるのは非常に重要ですよ。

        全部分かってからじゃないと書けない、なんて言ってる人は
        新しい物事なんか永遠に始められません。

      • by Anonymous Coward

        あとvoid main~も。

  • by Anonymous Coward on 2014年07月12日 20時35分 (#2638216)

    Cに似たJavaが作られ、CやJavaに似たPythonが作られ、・・・だから10年後はCやJavaやPythonに似た言語に変わってるでしょう

  • by Anonymous Coward on 2014年07月12日 20時59分 (#2638226)

    >Pythonの比率は上位10学部で80%を占めているのに対し、
    >上位39学部では69%となっていることもあり

    上位にランキングされる学部ほど、初めから高度な講義を行うはずですが、その結果
    ライブラリやドキュメントの充実した言語を使う事になるという事でしょうか。

    Pythonはドキュメント整備を重視する文化で知られていますし、
    科学技術計算でMATLABの代わりに使う人が増えているので
    他のスクリプト言語に対して優位にあります。

    それにしても、分かりやすい統計結果が出ると感心してしまいますね。

typodupeerror

コンピュータは旧約聖書の神に似ている、規則は多く、慈悲は無い -- Joseph Campbell

読み込み中...