勉強の為の引用しました。
http://m.chiebukuro.yahoo.co.jp/detail/q10137184455
Pythonだと、さすがNASAとか研究機関とかが使ってただけあって、
① 数式の記号計算とかも簡単にやってくれるし(積分の例)
>>integrate(sin(x)*cos(x)*log(x), x)
-1/2*cos(x)^2*log(x) + 1/8*Ei(2*I*x) + 1/8*Ei(-2*I*x) + 1/4*log(x)
② 他の言語、たとえばRのライブラリーとかも簡単に呼び出せるして使えるし
# Rで輸送問題を解くライブラリlpSolveをインポート
robjects.r['library']('lpSolve')
transport = robjects.r['lp.transport']
③ sageを経由させれば各種数学ソフトも簡単に呼び出して使えるし
計算機代数 GAP, Maxima, SINGULAR
代数幾何学 SINGULAR
多倍長計算 MPIR, MPFR, MPFI, NTL, mpmath
数論幾何学 PARI/GP, NTL, mwrank, ecm
数式処理 Maxima, SymPy, GiNaC
組み合わせ Symmetrica, Sage-Combinat
線形代数 ATLAS, BLAS, LAPACK, NumPy, LinBox, IML, GSL
グラフ理論 NetworkX
群論 GAP
数値計算 GSL, SciPy, NumPy, ATLAS
数論 PARI/GP, FLINT, NTL
統計処理 R, SciPy
④ 複数のHTTPリクエストを並行して実行したい場合、OSのプロセスやスレッドを 使ったり、イベントドリブンで書いたり、言語内で用意されている軽量スレッドを 利用したり
⑤ さっき、作ってみたのですが、↓こんなマップも簡単に作れるし。
Rubyだと、どうなのでしょうか?
dtdtuydさん
プログラミング言語は、目的毎に得意分野が違うし、
「夫々の得意分野で」という前提であれば、
Rubyも十分実用的に熟成されていると思います。
また、かつて数値計算分野ではlinpak等の著名なライブラリがFortranでしか実装されておらず、そのライブラリをベースにした膨大なアプリケーションもFortranだったが為に、「Fortranを知らずば数値計算できない」位の勢いがあった言語も、今は下火になっている様子から、「数十年のオーダでは、一時的なライブラリ多さは、プログラミング言語の素養で駆逐されうる」と言えると思います。
では、”プログラミング言語の素養”で、RubyとPythonで比べれば同程度、適用分野によってはRubyが勝ると言って良いでしょう。
(1) 文法の複雑さ:Rubyが若干 簡単
Rubyの文法をBNFで記述すると約300行、Pythonは約400行で、若干Rubyの方が簡単。
Pythonは「コードを書く人の頭の中の思考からコードを紡ぎ出すために,若干の労力がいるが、他人の書いたコードが読みやすい」ということに趣を置いているらしい。 それは、プロジェクト要員の入れ替わりが激しい文化の国には重要な特性だし、ソースコード・ライブラリの流通を促進できるでしょう。
かたや、Rubyは「直感的なプログラミング言語」を指向していて、高校までの数学程度の抽象概念は標準装備だし、DSLの作成まで容易になっているので「書きやすさ」に趣が置かれていると観て良いでしょう。
「一旦書き上げたコードの普及しやすさの追及」と「ソモソモ、最初にコードを書き上げるまでの簡単さの追求」の何れが普及するかは、もう少し時間を置かないと解らないと思います。
http://coreblog.org/ats/the-best-reason-why-python-is-good-for-lern...
(2) 基本性能:Rubyがリードできている
下記に「ダック・タイピング機能」が無いとコード量が増えるような課題で、走行時間を比較した例があります。
・Java7でコードが70行、走行時間は0.5秒。
://ideone.com/i4y4HW ://codepad.org/MYh6cUk2
・haskelでコードが26行、走行時間は0.5秒。
://ideone.com/OYJ49u
・Rubyでコードが25行、走行時間は7.07秒
・Pythonでコードが30行、走行時間は13.33秒
://ideone.com/SBLqWP
・R言語でコードが34行、17秒(参考値)
://ideone.com/le4e8M
「中学生にも解けるパズルを解くのに向いたプログラミング言語は?」
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1113650350...
(3) 文字コードの取り扱い:Rubyがリードできている
Javaやpython、あるは.Net FrameworkベースのC#も、文字列の内部処理ではunicodeを使っているが、それは旧来のエンコーディングと相互変換できない文字があることも知られていて、「文字化け」を覚悟しなければならない。
Phthon 3.0でヨウヤクunicode対応が始まって、まだ 浸透には時間がかかるでしょう。
一方、Rubyは、「移植された環境のネイティブなエンコードを、あるがままに保持する」という方式なので、文字化けを避けることができるようにデザインしています。
(4)頑健性:まだRubyもPythonもJavaにオヨバズ
RubyもPythonも構造化例外機構を備えているので、「予期しない異常中断」が発生しそうになった時の”障害復旧処理”を記述できて、”頑健性”を確保できそうな気がするでしょう。
でも、下記のようなパターンで、DBのclose漏れを検出したり、DBのclose漏れの回復処置として強制的にcloseしようにも、DB接続をつかさどるハンドラが無いので、障害復旧できるような汎用的なメインルーチンを記述できないのです。
さらに、DBのlose漏れが蓄積されたDBサーバは、いずれ使い物になら無くなって、再起動が必要になったりします。
コレに対して、Javaではガベッジコレクション時に発動されるファイナライザをフックして自動closeする方式等が試されたりしましたが、apatch DBCPやtomcat-DBCPな等での何種類かの失敗の後、J2EEサーバのコネクション・プーリング機構でリソースを集中管理した環境での実装のみが有効な方式として生残っています。
「
try {
DBのopen;
何か異常中断するかもしれない処理;
DBのclose;
}
catch(){ 障害復旧処理}
}
」
ナイス
1
2014/10/21 22:02
違反報告
0 件のコメント:
コメントを投稿