パスワードを忘れた? アカウント作成
10107845 story
プログラミング

科学計算向きのプログラミング言語は? 84

ストーリー by headless
計算 部門より
本家/.「Ask Slashdot: Best Language To Learn For Scientific Computing?」より

私は大学院で2年目に入ったところだが、大量の計算を必要とするデータマイニングに関連する研究をやっている。当初はそこにあったからというだけの理由で、すべての処理をVBAで書いていた。しかし動作はするものの非常に遅い。そのため、もっと高速なプログラミング言語に移行する必要がある。また、古いXeonベースのサーバーを入手したので、4コアすべてを使えるほうがいいと思う。このマシンではWindows XPとLinuxの両方が使え、個人的にはどちらでも問題ない。大学生の時にはCとOctaveでのプログラミングをかなりの量こなしており、Fortran77やBASIC系のプログラミング言語もいくつか使ったことがある。しかし、およそ12年というもの一切のプログラミングをしてこなかったため、実質的には一から始めることになるだろう。数週間のうちにプログラミング言語を選び、研究に戻る必要がある。私はコンピューターサイエンス専攻ではないので、コード自体よりも計算結果のほうが重要だ。おすすめのプログラミング言語や、ヒントがあればお教えいただきたい。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • Mathematica, R, S (スコア:5, おもしろおかしい)

    by esuta (40045) on 2013年10月19日 17時31分 (#2480068)

    投稿フィルタに引っかかりました!
    理由: 一文字しかないね。うーむ、小人さんの仕業

  • by Anonymous Coward on 2013年10月19日 18時30分 (#2480097)

    VBAで問題ない範囲の精度なら、大抵の言語のどれ使っても同じじゃないですか…
    それ以前に、言語仕様ぐらい自分で確認しないと、後で「精度が足りない!」とかなるだけですよ

  • by SteppingWind (2654) on 2013年10月19日 21時19分 (#2480181)

    プログラミング言語を変える前に, なぜ遅いのかをはっきりさせないと駄目なんじゃないでしょうか.

    データマイニングだと多量のデータを取り扱うことになるでしょうから, アルゴリズムの問題で計算量が増えている可能性もあります. また on memoryで取り扱えない規模のデータ量であれば, IOがネックになっていてCPUが遊んでいるとか, あるいはIOに伴うシステムコール/バックエンドプロセスでCPU時間が消費されている可能性もあります.

    ですから手順としては

    1. 処理速度の問題となっている原因を探す
    2. その原因を解決する手段が存在するのであれば, その手段を利用できる言語を選択する
    3. 既存の解決手段が存在しないのであれば, 解決手法を記述するのに便利・高効率な言語を選択する

    ということになると思います.

    場合によっては, 言語としてはVBAのままで, 何か適当なpluginと組み合わせたら所要の性能が得られちゃったなんてこともあり得るかも.

    • > 処理速度の問題となっている原因を探す

      原因を探すために役立つツールってExcel VBAだと何があるんでしょう
      プロファイラとかあったりするのかしら?

      原因を探すのも手間だと思うので、「良く使われている言語」をとりあえず使えば良いと思うのだけれど
      親コメント
      • "VBA profiler" で検索すればフリーも含めていくつもプロファイラアドオンが見つかりますが、なんだかこの人の場合は要所に

        Debug.Print "hoge: " & Time

        をはさんでログを見るだけでも十分そうな気がします("hoge"は実際には場所によって"データ準備"とか"並べ替え開始"とかで)。

        親コメント
  • by saitoh (10803) on 2013年10月20日 9時37分 (#2480291)
    「コード自体よりも計算結果のほうが重要だ」ってのなら、既存のデータマイニングツールでデータマイニングするのが最適でしょう。

    データマイニングの研究ってのが、既存のデータマイニングツールではできない新しい解析アルゴリズムを開発することを意味するのなら、RとかMATLABとかmathematicaあたりの柔軟な対話型ツールでアルゴリズムを開発して、実際に大量のデータを処理する本実装はFORTRANとか?

  • 過去の実績からだとFORTRANだし、
    技術者がちょっとかじるならMATLABかMATHCAD。
    覚えると楽なのはMathematica

  • by duenmynoth (34577) on 2013年10月19日 20時08分 (#2480151) 日記
    昔の制限ありまくりな状況と違って、もう言語を目的で選ぶ理由なんて無いでしょ
    とりあえずC++で書いとけば大丈夫

    #楽したいならJAVAで
  • by minemo (41273) on 2013年10月19日 22時31分 (#2480209) 日記
    なんで速度が必要かが分からないです。
    お国は何処?もしヨーロッパであればPascal。
    余計な事を心配しなくて良いから手っ取り早い。
    飽きたら他に移行する。

    #まづは非常に遅い原因を調べるのが先かと
  • by kentok (41940) on 2013年10月20日 11時37分 (#2480309)

    計算ならフォートラン。
    高速なライブラリがあるからね。

    最近の言語を使いたいならHaskellかな。

    --
    -- 風は東京に吹いているか
  • by sasuga (33103) on 2013年10月20日 13時31分 (#2480338)

    Octaveの経験があると言ってるし、OctaveよりMATLABの方が相当(ものによっては数十倍、数百倍とか)速い。
    研究用途だったら、生産性を犠牲にしてC言語とか低レベルにする手はないと思うなあ。

  • by titoshi (46388) on 2013年10月20日 17時25分 (#2480416)
    JVMで動くClojureがおすすめ 統計ライブラリのIncanterがあるしJVMだからHadoopまで動く
    あとPython使うClojure-pyとかつかえばnumpyまで動く
  • by Anonymous Coward on 2013年10月19日 17時39分 (#2480069)

    Excel vba

  • by Anonymous Coward on 2013年10月19日 17時50分 (#2480073)

    ほんとは、もう使いたい言語は決まってるんだろ?
    それを使い給えよ。

  • by Anonymous Coward on 2013年10月19日 17時52分 (#2480074)

    任意精度演算 [wikipedia.org]ができるライブラリを見るとだいたいCぽいけど。どこまで自作する気かってとこも重要か

    • by Anonymous Coward

      そりゃ他の言語では言語機能に含まれてたりするから。それが(本来)高級言語ってもんだ。

  • by Anonymous Coward on 2013年10月19日 17時53分 (#2480075)

    まっとうに答えるならFortranと言いたいところだが、それだとあまりにつまらないしわざわざ/.で聞く意味がない。
    データの出力まで行うんだったらR言語だとか、今の時代JavaScriptだよねーとか、そういうのを期待したいところ。

    #Rはまともすぎるので、どなたかもっとアレゲだけど使い物になる言語知ってたらお願いします

  • by Anonymous Coward on 2013年10月19日 18時24分 (#2480094)

    教授や周囲の人に相談せず(おそらくExcelの)VBAを使っていた事の
    方を気にした方がいいような。
    大学院で2年目になるまで「そんな装備で大丈夫か?」と
    誰にも指摘されなかったのいうのは結構マズいのでは。

  • by Anonymous Coward on 2013年10月19日 18時38分 (#2480101)

    numpyでまたーりまたーり

  • by Anonymous Coward on 2013年10月19日 19時54分 (#2480144)

    は、言語じゃないか
    でも画像認識系だと外せない

typodupeerror

「毎々お世話になっております。仕様書を頂きたく。」「拝承」 -- ある会社の日常

読み込み中...