科学計算向きのプログラミング言語は? 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, おもしろおかしい)
投稿フィルタに引っかかりました!
理由: 一文字しかないね。うーむ、小人さんの仕業
Re:Mathematica, R, S (スコア:5, 参考になる)
やりたい事・目的によりますね
数値計算
- お金があるなら MATLAB
- お金が無いなら octave
数式処理
- お金があるなら Mathematica
- お金がないなら maxima
統計処理
- R
Rが判れば,Sも使えるようになります
それ以外
- C言語
Cが判れば,Fortranも読めるようになる.またFortranのコードはf2cコマンドで簡単にC言語へ変換可能
がオススメです.
Re:Mathematica, R, S (スコア:3, おもしろおかしい)
「究極言語あ~る」とでも書いておけば良いのでは。
Re:Mathematica, R, S (スコア:2)
新人。プログラマレベルをポケモンで言うと、コラッタぐらい
Re:Mathematica, R, S (スコア:2)
ACさんも言っていますが、データマイニング処理と言うのであれば、Rとかが捗るかもしれません。
もっともオライリーの「バッドデータハンドブック」 [oreilly.co.jp]によるとどんな言語でも構わないそうですが。
#本書はおすすめです。
Re:Mathematica, R, S (スコア:1)
データマイニング系なら、これでFAに近いんじゃないかな。
それにしても、大学卒業後12年経って院に入り直してやり直せるのは
本家の国の強みだね。
その分、歪みも大きいけど。
MATLAB (スコア:1)
文面だけで読むとMathematicaより、MATLABなんじゃね?
Re: (スコア:0)
すまん。俺の知識はmuSIMPあたりで止まっているんだ。
精度は何桁まで必要なのさ? (スコア:5, すばらしい洞察)
VBAで問題ない範囲の精度なら、大抵の言語のどれ使っても同じじゃないですか…
それ以前に、言語仕様ぐらい自分で確認しないと、後で「精度が足りない!」とかなるだけですよ
Re:精度は何桁まで必要なのさ? (スコア:2)
時には「計算誤差が同じであること」が重要な場合も。
Re: (スコア:0)
COBOLのおばちゃまはきっと「オーバーフローも忘れないでね」と言うでしょう
まず最初にやること (スコア:2)
プログラミング言語を変える前に, なぜ遅いのかをはっきりさせないと駄目なんじゃないでしょうか.
データマイニングだと多量のデータを取り扱うことになるでしょうから, アルゴリズムの問題で計算量が増えている可能性もあります. また on memoryで取り扱えない規模のデータ量であれば, IOがネックになっていてCPUが遊んでいるとか, あるいはIOに伴うシステムコール/バックエンドプロセスでCPU時間が消費されている可能性もあります.
ですから手順としては
ということになると思います.
場合によっては, 言語としてはVBAのままで, 何か適当なpluginと組み合わせたら所要の性能が得られちゃったなんてこともあり得るかも.
Re:まず最初にやること (スコア:1)
原因を探すために役立つツールってExcel VBAだと何があるんでしょう
プロファイラとかあったりするのかしら?
原因を探すのも手間だと思うので、「良く使われている言語」をとりあえず使えば良いと思うのだけれど
Re:まず最初にやること (スコア:2)
"VBA profiler" で検索すればフリーも含めていくつもプロファイラアドオンが見つかりますが、なんだかこの人の場合は要所に
Debug.Print "hoge: " & Time
をはさんでログを見るだけでも十分そうな気がします("hoge"は実際には場所によって"データ準備"とか"並べ替え開始"とかで)。
言語は使わないのがFA (スコア:2)
データマイニングの研究ってのが、既存のデータマイニングツールではできない新しい解析アルゴリズムを開発することを意味するのなら、RとかMATLABとかmathematicaあたりの柔軟な対話型ツールでアルゴリズムを開発して、実際に大量のデータを処理する本実装はFORTRANとか?
ツールとしてのプログラミングなら (スコア:1)
過去の実績からだとFORTRANだし、
技術者がちょっとかじるならMATLABかMATHCAD。
覚えると楽なのはMathematica
C++ (スコア:1)
とりあえずC++で書いとけば大丈夫
#楽したいならJAVAで
学術系なら (スコア:1)
お国は何処?もしヨーロッパであればPascal。
余計な事を心配しなくて良いから手っ取り早い。
飽きたら他に移行する。
#まづは非常に遅い原因を調べるのが先かと
Re:学術系なら (スコア:1)
この感覚が分からないです。まあ、人それぞれなんですが。
元記事が12年の歳月で消失した訳ですから、その様な重要度と思われます。
であれば窮屈な言語であれば印象に残るかと。別に一生使わなくともいい訳ですし。
それにコードより計算結果が重要らしいですから、無理に自分で書かなくてもなっと。
#自分の嫁さん誰が良い?と聞かれてるみたいで…
フォートランでしょ (スコア:1)
計算ならフォートラン。
高速なライブラリがあるからね。
最近の言語を使いたいならHaskellかな。
-- 風は東京に吹いているか
MATLAB Student Version (99ドル) (スコア:1)
Octaveの経験があると言ってるし、OctaveよりMATLABの方が相当(ものによっては数十倍、数百倍とか)速い。
研究用途だったら、生産性を犠牲にしてC言語とか低レベルにする手はないと思うなあ。
Lispに限る (スコア:1)
あとPython使うClojure-pyとかつかえばnumpyまで動く
Fortranと言いたいが (スコア:0)
Excel vba
Re:Fortranと言いたいが (スコア:2)
Re:Fortranと言いたいが (スコア:2, すばらしい洞察)
Windows HPC Server 2008 R2(HPC Services for Excel 2010)を使うのはずるいです。販促技です。
Re: (スコア:0)
FORTRANでいいのでは?
まともなコンパイラなら、DOループを並列化してくれるんじゃなかったっけ?
背中を押して欲しいのか? (スコア:0)
ほんとは、もう使いたい言語は決まってるんだろ?
それを使い給えよ。
高速かつ並列かつ高精度 (スコア:0)
任意精度演算 [wikipedia.org]ができるライブラリを見るとだいたいCぽいけど。どこまで自作する気かってとこも重要か
Re: (スコア:0)
そりゃ他の言語では言語機能に含まれてたりするから。それが(本来)高級言語ってもんだ。
変な/珍しい言語で書いてこそアレゲ (スコア:0)
まっとうに答えるならFortranと言いたいところだが、それだとあまりにつまらないしわざわざ/.で聞く意味がない。
データの出力まで行うんだったらR言語だとか、今の時代JavaScriptだよねーとか、そういうのを期待したいところ。
#Rはまともすぎるので、どなたかもっとアレゲだけど使い物になる言語知ってたらお願いします
Re:変な/珍しい言語で書いてこそアレゲ (スコア:4, 参考になる)
使い物になるかどうかはわかりませんが Julia はいかがでしょうか。
The Julia Language
http://julialang.org/ [julialang.org]
なぜ僕らはJuliaを作ったか
http://d.hatena.ne.jp/amarui/20120221/1329823079 [hatena.ne.jp]
Julia : スクリプト言語最速? 手軽さと速さを求めた科学技術計算向け言語
http://yohshiy.blog.fc2.com/blog-entry-246.html [fc2.com]
Re: (スコア:0)
やっぱりFortranだよね~
だけじゃ情報量が足りないので、言語系以外で頑張ってみるって手もあるかも。DBぐるぐる回して計算させるのもいいわね。
このDBには円周率が全部つまっていますとか。
Re:変な/珍しい言語で書いてこそアレゲ (スコア:1)
流体シミュレーションとかのゴリゴリの科学計算ならFortran一択だが、データマイニングとか言ってるからなぁ
データの扱いが楽な言語がいいと思うし、案外DB系使うってのはいいのかもね
Re:変な/珍しい言語で書いてこそアレゲ (スコア:1)
言語仕様だけじゃなくライブラリやデータも含めて目的に合うかだね。
the.ACount
Re: (スコア:0)
じゃあAPL
Re:変な/珍しい言語で書いてこそアレゲ (スコア:2)
がーん。業務で現在使ってます;変ですか。やっぱり変ですか?? orz
#そもそもC#で雇われたのに、なんで毎日ベクタとかマトリックスとかローとかドメインエラーとか(涙)
##Altキーがすり減るのー
Re: (スコア:0)
ちょっと、おれキーボード買ってくる。
Re: (スコア:0)
Clojureですかね。Incanterを使えばR風の統計解析ができる。
それならR使えばいいじゃん、みんな使ってるしとも考えられるが、
顧客の依頼を自分で分析するのではなく、顧客が自ら使えるように
カスタマイズしたアプリを開発する事ができるのがキモらしいですよ。
Javaで動くのでGUIその他の資産をそのまま使えるのが強み。
スーパーハッカー御用達のLispなのでコミュニティもかなり濃そう。
最近新しい邦訳本が出たみたいだ。
「そんな装備で大丈夫か?」 (スコア:0)
教授や周囲の人に相談せず(おそらくExcelの)VBAを使っていた事の
方を気にした方がいいような。
大学院で2年目になるまで「そんな装備で大丈夫か?」と
誰にも指摘されなかったのいうのは結構マズいのでは。
Re:「そんな装備で大丈夫か?」 (スコア:1)
確かに。
研究テーマがよくわからないけど、そもそも、SASとかSPSSの使い手のいるような研究室を選ぶべきでは? いまなら Sとか Rなのかもしれないけれど。
Re: (スコア:0)
Fortran77なんて言ってる時点でたぶん自爆している。小文字が使えるようになったのはFortran90から。
Re: (スコア:0)
12年ぶりの大学なら、2年目で本気に取り組めるようになったというのは
はやいほうじゃないか。
ストレートで上がってきても、2年目までぐだぐだなやつ、多いんだけど。
VBAでもなんでもやってあるだけまし。
Re:「そんな装備で大丈夫か?」 (スコア:1)
日本はよく言われるけど米国もそうなんですか?
LIVE-GON(リベゴン)
pythonでいいんじゃね? (スコア:0)
numpyでまたーりまたーり
Re:pythonでいいんじゃね? (スコア:2)
演算部分はCで書いてDLL化して、それをPythonから呼び出せば早いらしいよ!
と言ってみるけど、私自身、そうしようとは思いつつそうしていない……。Numpy便利ですよね。
640GBはすべての人にとって未来永劫充分なメモリだ。
Re:pythonでいいんじゃね? (スコア:1)
Re:pythonでいいんじゃね? (スコア:2)
GPGPUを使えるライブラリも結構あるし、畑がわれそうだけれど
Deep Learning やるなら Pythonかな。
Re: (スコア:0)
自分もこの手の計算はPythonでやっちゃってます
手軽でいいね!
OpenCV (スコア:0)
は、言語じゃないか
でも画像認識系だと外せない
Re:OpenCV (スコア:2)