1 名前:デフォルトの名無しさん mailto:sage [2013/05/03(金) 13:55:49.86 ] JavaScript, Perl, PHP, Python, … スクリプト言語をすべて扱うスレッドです。 最強のスクリプト言語は、どれよ? さあ、死ぬまで語りやがれ!!! ■ スクリプト言語の用途 簡易Webアプリ、シェルスクリプト ■ スクリプト言語の特徴 1レスで書ける程度の使い捨ての短いコードなら作成が容易だが 実行速度は劣っており、2人以上の開発、1000行を超えるソースコード、 10ファイル以上からなるソースコード、大規模になればなるほど 修正時の影響範囲の把握が困難で簡単なスペルミスが 発見しづらいバグを生み、IDEなどの静的解析ツールの適用が難しく 何から何まで人手でやらなければならずプログラマの負担が大きい。 ・インタプリタ ・動的型 ・正規表現 ・クロージャ などを利用できるものがある。 1レスには収まらないが100行程度の短いコードはここで ttp://play.island.ac/codepaste/ toro.2ch.net/test/read.cgi/tech/1365250318/
475 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:11:24.93 ] >>472 叩くのが好きで、叩かれるのは嫌いだからに決まってるだろw ほら俺の言語を叩いてみろ。何の言語かは教えないけどな!
476 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:12:01.08 ] >>468 asm.jsはライブラリなんかじゃないよ? asm.jsという名前がちょっとまぎらわしいかね 言語仕様をきっちり決めた新しい言語で、JSとも互換性があるっていうだけ
477 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:12:54.41 ] Cソースをemscriptenでasm.js変換したものならかなり有意な効果がある V8のasm.js対応はわりと簡単そう これが普及してしまいそうだとAppleとMSはけっこう焦るだろうなあ
478 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:13:15.67 ] asm.jsはマジキチだが 逆にそれがいいw ただし現状では、100行を超えるコードのasm化は人間には無理 今はIDEもデバッガも皆無 早急に整備すべし
479 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:13:59.86 ] >>472 誇らしげに嘘八百を並べる方が理解不能 >>475 さっさとpython叩けよ あ、関数内関数のスコープがおかしい、でしたっけ? JSがおかしいだけだったwww
480 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:15:16.88 ] >>477 > これが普及してしまいそうだとAppleとMSはけっこう焦るだろうなあ Appleはハード売れなくなるから焦るってのはわかるが、 MSはなんで焦るの?
481 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:15:43.78 ] asm.jsはできるだけ機械変換するものと思っていたほうがいい asm.jsを手で書くのはCでasmを書くのと近い
482 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:16:55.81 ] >>477 簡単そうって何?また希望的妄想ですかw それしかないな、本当にそれだけ。自分でもそう思うでしょ? 自分の馬鹿さ加減が嫌にならない?
483 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:18:27.03 ] 出たよ。トランスレータがあるからOK デジャブ感が半端ない
484 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:18:37.80 ] Pythonは良い言語だから叩かないわ ブラウザでインタラクティブなことが出来たら良いんだけどね ちなみにJavascriptの最近のベンチマークな d.hatena.ne.jp/satosystems/20121228/1356655565
485 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:19:31.05 ] >>473 マイクロベンチではFFの方が早い V8はアプリ単位になると早くなる kripken.github.io/mloc_emscripten_talk/#/27 kripken.github.io/mloc_emscripten_talk/#/28
486 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:20:02.69 ] >>483 トランスレータがあるからOKなんじゃなくて、 そもそも最初からトランスレーターで変換することを想定してるの それがasmという名前がついてる理由
487 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:22:39.48 ] >>484 すごいな d.hatena.ne.jp/satosystems/20121228/1356655565 さて、ぶっちぎりで速いのが Scheme48 のコンパイルバージョン。 なんと 0.004sec。ただこれはタネがあって、コンパイル時に関数を評価して フィボナッチ数を算出しているためです。したがって、コンパイルがインタプリタで 実行するのと同程度の時間がかかります。ただ、コンパイル時に評価できる 関数は評価してしまうというアプローチは関数型言語の特性をうまく生かした良い方法だと思います。 Scheme48 を除いたら、Java がトップでした(追記:[2012/12/30] Haskell の 型宣言を指定したら、Jhc に抜かれてしまいました)。JIT が効いているのは当然として、 Java VM の動作や実装を熟知している身としては、よくこんな短時間で ブートストラップクラスを初期化できるものだと感心してしまいま Oracle の最新の Java VM を使えば、速くなるんじゃないでしょうか。いやはや。
488 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:23:09.04 ] メンヘラの妄想に付き合うの疲れるなあ 脱洗脳のカウンセラーとかの辛さがわかる 現実に生きてない。都合の悪い話が聞こえてない さっさとCのコードをこの場で変換してみせろ!
489 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:23:51.79 ] C (gcc -O2) 1.18 JavaScript (node.js) 2.62 速いwww もう下手な静的言語並みになってるw
490 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:24:53.21 ] たしかV8のグループでは Node.jsとかが挙がってた ブラウザの中だけで考えると押しが弱いけど これからJSは広がっていくし 例えば昨今ではモバイルOSの「ネイティブ」として使われ始めたところを見ると V8も気にはなると思う あと、asm.js部分は基本的に特定のエンジンに依存しない形になってるらしい というか既存のコンパイラの上にasm.jsコンパイラが乗る形 だから多分V8での実装は困難ではないはず
491 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:26:40.56 ] もう希望的観測はいいから… お願いだから確認した事実を喋ってくれ、お願いだから…
492 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:27:54.77 ] 確認した事実・・・。 JavaScriptはここまで広く使われている。
493 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:27:55.09 ] >>489 単純な四則演算はもう十分に早いよ でも実物になるとまだCの10倍遅い JITの限界とか、GCとか、メモリアクセスとかがネックになってるらしい もうここいらで限界みたい そこを改善して実物でもCの2倍の実行時間で済ませようとするのが asm.jsサブセット
494 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:29:12.50 ] 長文で妄想垂れ流したいだけならブログでいいと思うよ デタラメで本人すら確認のしようもない、再現性もないことで議論とか無理だし だからこそいくらでも大きなことが言える。ログが誇大妄想で埋まってる
495 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:29:12.84 ] >>44 f(i % 2) {
496 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:30:58.35 ] 嘘をついているという自覚がないっぽいのが本当に怖い
497 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:31:10.91 ] 確認した事実 ↓ Python (CPython) 53.651
498 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:32:07.97 ] C言語というJavaScriptとは全く違った文法から asm.jsの力を借りてブラウザで実行するコードを生成できる ということは、JavaScriptを改良した言語から asm.jsの力を借りてブラウザで実行するコードを生成できるということでもある。 JavaScriptを進化させるのにブラウザのバージョンアップを またなくて良くなる世界ができつつある。
499 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:33:27.08 ] でもこれだけJSの高速化が盛んになってくると気軽に書けなくなる if(i % 2) と if(i % 2 == 1) ってどのくらい違うのか でも将来の賢いコンパイラにとってはどちらも同じ意味にとられるかもと考えてしまう これは大げさな例だけど本当に難しい
500 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:36:29.15 ] 昔はVBが一世を風靡していたとき、 GUIは作るのが簡単なVBで 速度が必要な場合はC++でDLLを作る。 という手法が使われていた。 それと同じ構図がブラウザの世界にもできつつある。 JavaScriptはブラウザで動くGUIを作るのが簡単である。 だからJavaScriptでの開発というのはこれからもメインになるだろう。 そして速度が必要な場合のみ、他の言語で開発することもある。
501 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:38:33.70 ] >>493 単純な四則演算ではない実物ってのがよくわからない 再帰のフィボナッチはスタック使いまくりだよね スタック領域のアクセスは良いけどヒープが駄目ってこと?
502 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:39:23.21 ] V8の登場以降からブラックボックス度は高まりつつあるよね 今では内部的にintを使うとか当たり前だし それを考えると for(i=2^31-1; i>=0; ++i) //iはfloat型と推論される と for(i=2^31; i>=0; ++i) //iはint型と推論される の違いとかきになる あとなんかfor文は結構書き方によって最適化されてるらしい iが0からじゃなくて10からとかだと特別な意味があるのではと思われるという「噂」もあるくらい
503 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:40:28.29 ] まーた始まった。無知が自分に酔いしれて一人妄想を語る テキトー言うだけならブログでやれよキチガイ
504 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:41:51.85 ] もうスレ半分使っちまったのかw
505 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:42:16.55 ] >>500 には言葉が通じず対話が不可能で一切の意味のあるレスをしないから害悪でしかない
506 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:44:57.13 ] >>501 すまん、正直にいうと詳細はわからん でもこの手のマイクロベンチだといつも2,3倍だが 大きなベンチになるとCの十数倍になるのを多く見てきた kripken.github.io/mloc_emscripten_talk/#/27 kripken.github.io/mloc_emscripten_talk/#/28 asm.jsの説明によると 型チェックやGCが遅くしてる原因らしい それでたしかasmはMath関数にも手を入れたり追加してるんだっけか そのあたりがネックなんだと思う あとasmでは型付配列をよく使う そこもいくらか最適化されてるらしい
507 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:45:55.49 ] もう嘘しか言わないキチガイJS厨の相手をするのはよそう。時間の無駄だ 中身は空っぽの荒らしスクリプトなんだから。もちろんJSで記述されててバグがてんこ盛り
508 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:48:02.13 ] @A = 1..10; @x = map {$_ * 2} grep{$_ % 2 == 0} @A;
509 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:49:07.77 ] 確かに>>500 はちょっと間違ってるな VBは遅かったが、Javascriptは十分に速い 速度が必要な場合にもJavascriptを使うことが多くなる 他の言語で書くようになるとか妄想はブログでやって欲しい
510 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:49:18.23 ] JSの話をやめた所で他の言語の話をする奴がいなさそうなんだが……
511 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:51:50.40 ] >>507 > もう嘘しか言わないキチガイJS厨の相手をするのはよそう。時間の無駄だ 消える宣言した以上、ちゃんと消えろよな。 レスなんかしたら見苦しいぞ。 よし、キチガイが消えたw
512 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:51:58.75 ] JavaScriptはあとはメモリアクセスだよなあ せめてピットボードを用意して欲しい その辺が自由になれば巨大数の問題とか解決できるのに あとは演算子オーバーロードだな
513 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:53:38.99 ] >>510 別に無理に伸ばす必要ない JS厨が荒らすだけのスレならJSスレに行ってくれ。邪魔 特にブラウザの話しかできないやつ見ると明らかに他のスクリプト言語から浮いてる というかWebは板違いじゃね。日常で使うスクリプトという話は皆無 もういいよJSの話は。次スレから外して問題ない イキイキと荒らす馬鹿が目障り
514 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:54:47.54 ] ピットボード? さっきのボードゲーム作ってる奴でビットボードと間違えたとか?
515 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:55:07.15 ] スクリプト言語からWebやWebサーバーを取ったら……
516 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:55:14.34 ] >>508 @A=1..10; @x=map{$_ %2 ? () : $_*2} @A; 再帰や遅延評価を使うまでもないリスト処理は面白くないんだよね…
517 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:55:57.32 ] Webはちゃんと板があるし ブラウザは共通の話題ないし比較もできない
518 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:56:16.36 ] >>513 > JS厨が荒らすだけのスレならJSスレに行ってくれ。邪魔 毎回思うんだけど、そんなこと言っても いうこと聞くわけ無いだろう?
519 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:57:08.98 ] >>513 を苦しませるには JSの話題をどんどんやったほうがよさそうだw 自分からやられて嫌なことを語るなんて 馬鹿だなぁ。
520 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:57:27.51 ] >>518 そうだよ。JS厨は死ぬまで己の馬鹿を晒し続ける
521 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:57:35.07 ] すまんww ビットボードと入力してもピットボードになってしまう GoogleIME
522 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:57:58.03 ] >>513 普通に言語の速度とか、node.jsとか、科学計算とか、クロージャとか 内包表記とか、Javaの話とかPythonの話とか ブラウザ以外の話も豊富じゃん
523 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:59:45.56 ] >>522 奴には見えてないのですよ。 標的意外なにもね。
524 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 02:59:51.38 ] >>519 論破されたから悪意を持って荒らすだけのゴミになったんだよね ゴミすぎる自分をどう評価してる?いきる価値ないと思うよね。死んで良いよ
525 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 03:01:02.15 ] というか他の言語って何が原因で遅くなってるの? ただ高速化の需要が少ないだけ? JSでエンジン作った方が早そうな勢いなんだけど
526 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 03:01:08.04 ] >>524 死んでいいよと言われても死ぬわけないしw お前の願い、死んでほしい? 残念、お前の願いは棄却されましたぁぁぁw
527 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 03:01:51.39 ] >>523 本当に妄想以外で議論が出来るなら、JS厨はなんで嘘で荒らし続けるわけ? どうせJSのことも何も知らないんだろ。幻想を語るだけなら黙ってろ
528 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 03:02:16.46 ] >>524 端から見てるとお前も悪意持ってて怖いわw 今までJS厨は人の中傷はあまりしてなかったが、519の人が やり始めたな
529 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 03:02:28.00 ] お前が嘘だというのが 間違いなだけだろ。 冷静になれよ。
530 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 03:04:04.81 ] d.hatena.ne.jp/satosystems/20121228/1356655565 とかみるとPerlがこんなに、PHPよりも遅いのが意外 Perlと言えば歴史ある言語だし その正規表現は今なお他の言語(JSも)に影響を与えている 素晴らしい言語なのになぜ計算は遅いのか?
531 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 03:05:24.12 ] >>530 だって開発者がPerl6なんてやってて Perl5は放置状態だもの。
532 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 03:06:00.32 ] >>529 そうだな、嘘でも本当でもない、不確定のゴミ情報 というかお前の存在自体がゴミ。1つもまともな情報を出さずにオナニーしてるだけ 醜すぎるわ。反論できる?
533 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 03:06:22.45 ] >>530 何かどうでもいい話 性能なら別の手段つかうさ
534 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 03:07:28.74 ] >>532 面倒くさいやつだなw お前はキチガイ。反論できる?
535 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 03:07:44.25 ] >>525 他の言語も頑張ってる V8作ったGoogleが天才すぎるだけ
536 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 03:10:20.95 ] >>534 できないね。お前みたいなゴミカス荒らしに唯一構ってるんだからな 普通の人間はヤバいキチガイを見たら邪魔だなあ、早くどっか行けと思いつつ関わらない お前はそう思われてるんだよ。分かるか?なんで荒らすんだ。妄想なら他所でやればいいじゃないか
537 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 03:11:18.10 ] Googleが頑張ってほかの言語エンジンも改良すれば世界が良くなるな
538 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 03:11:53.35 ] >>536 残念、またしても お前の願いは叶えられなかったw
539 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 03:12:10.97 ] V8の開発してるのは以前はSunでJavaのJITのVMの開発で活躍してた人だと思った JIT関連のノウハウで圧倒的に先行してるんだろう
540 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 03:12:54.30 ] >>536 ならスルーしろよ というか、Google天才とか言ってるのはそいつじゃねーからw お前が誰彼構わずアタックするからこうなっちゃんたんだぞ
541 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 03:13:46.51 ] >>536 北風と太陽 よそにいけといえば言うほど このスレにいることになる。 逆にここにいろと言ったほうがいいよ。 そう言ったとしてもここにいるわけだけどなwww
542 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 03:14:51.46 ] >>538 俺の願いじゃなくて、みんなの願いね 心配しなくても、お前の願いであるみんなの迷惑になる行為を続けることは毎日叶えられる 良かったな。もう誰もお前がまともなんて思わない JS厨の詐欺にはかからない
543 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 03:15:46.09 ] アンチJS厨が一番うざい。 だからみんな誰もお前にレスしてないんだぞ?
544 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 03:15:54.79 ] Goの開発もベル研にいた有名な人たちが参加してるね
545 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 03:16:24.75 ] まとも面したJS厨がいかにキチガイか周知できれば十分
546 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 03:16:30.42 ] さて、またJavaScriptの話でもしますか。
547 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 03:19:07.64 ] 最近どんなプラットフォームでも HTML+CSS+JavaScriptを使うことが標準的になっている。 これらは一例。 Google Chrome add-ons Mozilla XUL apps and Firefox extensions Firefox OS apps Chrome OS apps Windows 8 Store (“Modern/Metro UI”) apps BlackBerry 10 WebWorks apps PhoneGap/Cordova apps Apple UIWebView class Microsoft WebBrowser control node.js (combined with jsdom or similar)
548 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 03:20:29.60 ] >>544 各会社から、有名な天才達がGoogleに集まってきているってことだな Pythonの作者もちょっと前までGoogleだったらしい 今は脱退したようだが
549 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 03:23:46.29 ] 現在広く普及している、スマホ、タブレットはもちろんのこと テレビでもJavaScriptが動く時代だからな。
550 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 04:19:23.91 ] 例のアンチが消えた途端静かになったなw
551 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 04:25:52.97 ] なんか寂しいな 俺も寝るか
552 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 04:42:23.52 ] どんな言語を使おうと避けられないウェブ化によってHTMLが ユーザーインターフェースになるのは避けられなかったわけで。 jQueryが一番うまくHTMLを扱えたことが JavaScriptの大ヒットに繋がったんだろうな。
553 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 05:16:59.66 ] 多分Googleのお陰が50%だと思う やっぱり再注目のきっかけになったのは 検索とかマップのAjaxだし
554 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 07:19:47.60 ] >>539 そんな奴があんな中二っぽいコード書くのか?
555 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 07:27:41.67 ] >>554 どんなコード?って聞かれて 答えられないなら、そんなこと言い出すなよ
556 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 09:13:59.47 ] >>530 PythonでCython使って書いたら相当速くなった(53.98 -> 2.63) こんな感じに、Perlにも高速化の手段があるんだろう ソースコードはこれ cimport cython cdef fib(int n): if n < 2: return n return fib(n - 2) + fib(n - 1) print(fib(38)) 実行結果はこれ(CPython版との比較) $ time python fib.py 39088169 python fib.py 53.82s user 0.04s system 99% cpu 53.983 total $ time python fibc.py 39088169 python fibc.py 2.61s user 0.02s system 99% cpu 2.635 total
557 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 09:16:22.92 ] さすがに悔しいからってPythonじゃない言語を持ち出されても 「int n」でバレるぞw
558 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 09:17:55.49 ] せめてCythonでググれよ……
559 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 09:22:18.87 ] wikipediaより >Cython は、C言語によるPythonの拡張モジュールの作成の労力を軽減することを >目的として開発されたプログラミング言語である。 >その言語仕様はほとんど Python のものと同じ (上位互換) だが、Cの関数を直接呼び出したり、 >C言語の変数の型やクラスを宣言できるなどの拡張が行われている。 Pythonじゃない別言語じゃん TypeScriptを持ち出してJavaScriptはええって言ってるようなもん
560 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 09:22:49.55 ] CythonはPythonに型注釈を追加したような言語で、 コンパイルしてPythonのC言語拡張を作る事が出来る Cythonで書かれた関数やクラスはPythonから呼び出す事ができるし Pythonで書かれた関数やクラスをCythonから呼び出す事もできるよ
561 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 09:25:31.15 ] >>559 Pythonの上位互換って書いてあるだろ ここ遅いから速くしたいなーってなったら型を書けば良い感じ で、C言語拡張にコンパイルするから、普通のCPython処理系で動く
562 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 09:48:47.64 ] >>556 で関数の戻り値の型を書くのを忘れてたので、 cdef int fib(int n): に変えて実行してみたら、もっと速くなった $ time python fibc2.py 39088169 python fibc2.py 0.08s user 0.01s system 95% cpu 0.098 total
563 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 09:54:22.94 ] C のコードはどこまで減らせるんだろうね Python 界隈はそこらへんの問題に極めて意識的だけど >>559 自分も別言語だと思う。Python のサブセットである RPython ならともかく
564 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 10:12:13.17 ] >>560-561 つまりCに変換できるようにしたTypeScriptみたいなもんじゃん TypeScriptをCやasm.jsに変換したらそりゃ速いよ >>562 これ最適化でコンパイル時に値を計算したっぽいな
565 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 10:15:36.41 ] >>564 > これ最適化でコンパイル時に値を計算したっぽい print(fib(38))をコンパイルに含めずに 実行時にPython側からfib(38)を呼び出しても同じ
566 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 10:19:10.38 ] >>565 良く分からないんだけど、コンパイル時に計算していないのに、 Cの数十倍速いってこと? ちょっと良く分からない現象だね 何かタネがあるんだろうけど
567 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 10:26:25.09 ] >>566 こちらの環境でC(gcc47 -O2)を実行した場合 $ time ./a.out 39088169 ./a.out 0.25s user 0.00s system 99% cpu 0.257 total
568 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 10:27:02.43 ] >>566 こちらの環境でC(gcc47 -O2)を実行した場合 $ time ./a.out 39088169 ./a.out 0.25s user 0.00s system 99% cpu 0.257 total
569 名前:567 mailto:sage [2013/05/04(土) 10:34:54.74 ] 連投すまん 実行環境が違うのか、Cの速度も>>530 と全然違うね 同じソースコードを使ったんだが つまり、CPythonの速度がむちゃくちゃ遅い……?Python3.2なんだけど
570 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 10:51:19.53 ] 最後に、比較用にnode.js(v0.10.4) $ time node fib.js 39088169 node fib.js 1.06s user 0.03s system 100% cpu 1.080 total
571 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 11:06:43.12 ] なんだろう Cの計算自体がすぐ終わりすぎて計測誤差が大きいのかな 何度もループさせないと駄目か
572 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 11:19:59.98 ] node.jsはCの4倍程度か たいしてPythonは200倍か 遅すぎワロス
573 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 12:01:45.29 ] うちでもやってみた。Cython の使い方間違ってたら指摘してくれると助かる % cat fib_c.c #include <stdio.h> int fib(int n) { if (n < 2) return n; return fib(n - 1) + fib(n - 2); } int main(void) { printf("%d\n", fib(38)); return 0; } % gcc -o fib_c fib_c.c % time ./fib_c 39088169 ./fib_c 1.12s user 0.00s system 99% cpu 1.125 total つづく
574 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 12:03:22.85 ] つづき % cat fib_py.pyx cimport cython cdef fib(int n): if n < 2: return n return fib(n - 2) + fib(n - 1) print(fib(38)) % cat setup.py from distutils.core import setup from distutils.extension import Extension from Cython.Distutils import build_ext setup( cmdclass = {'build_ext': build_ext}, ext_modules = [Extension("fib_py", ["fib_py.pyx"])] ) % python setup.py build_ext --inplace [...] % time python -c "import fib_py" 39088169 python -c "import fib_py" 3.87s user 0.01s system 99% cpu 3.894 total
575 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 12:12:14.16 ] >>562 みたいに、戻り値の型を書くともっと速くなる?
576 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 12:22:55.70 ] pythonが200倍遅いからって、他の言語に頼るとは、、、 python厨には失望した
577 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 12:25:49.15 ] >>575 うっかりしてた。戻り値記述して再トライ % cat fib2_py.pyx cimport cython cdef int fib(int n): if n < 2: return n return fib(n - 2) + fib(n - 1) print(fib(38)) % cat setup2.py from distutils.core import setup from distutils.extension import Extension from Cython.Distutils import build_ext setup( cmdclass = {'build_ext': build_ext}, ext_modules = [Extension("fib2_py", ["fib2_py.pyx"])] ) % python setup2.py build_ext --inplace cythoning fib2_py.pyx to fib2_py.c [...] % time python -c 'import fib2_py' 39088169 python -c 'import fib2_py' 0.56s user 0.02s system 99% cpu 0.577 total % cat fib2_py.c [...] __pyx_r = (__pyx_f_7fib2_py_fib((__pyx_v_n - 2)) + __pyx_f_7fib2_py_fib((__pyx_v_n - 1)));
578 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 12:57:07.99 ] 常識レベルの話として長いコードをここに貼るな それがある外部リンクだけで良いから
579 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 13:01:53.10 ] node.jsより速いという結果は貼るな 遅かった場合だけ貼れ
580 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 13:13:35.96 ] cythonってpythonの拡張モジュール書いたりできるんだろ? あれ、これってasm.jsという糞言語で高速化したいところを局所的に書けばいい と言ってたのと同じじゃね。遅れてね?ただの後追いじゃね で、asm.jsのコードと実行時間は? なんかこのスレ見ても「できるらしい」とか「できるはず」とかいう胡散臭いレスが目立つけど 実際どうなの?
581 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 13:24:30.70 ] >>580 Pyrex が 2002 年でそこからフォークした Cython が 2007 年 後追いではないと思われ
582 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 13:34:55.32 ] 「今JSが熱い!みんなが熱狂している!薔薇色の未来!」 って、他の言語が数年前に通った道なんだね… Cに変換するか、Cから変換されるかって違いか。さて、どっちが速いかね
583 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 13:37:47.14 ] >>582 JSが熱いってそんなCに変換するだのなんだののくだらない狭い世界の話じゃないんだが asm.jsを熱弁してる奴がいただけで、JS熱は別次元だよ node.jsやweb用ライブラリ界隈で起こってる熱狂
584 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 13:37:56.28 ] >>582 > 「今JSが熱い!みんなが熱狂している!薔薇色の未来!」 > って、他の言語が数年前に通った道なんだね… いや、その道は他の言語は通っていない(苦笑) 今の話の流れからは「型つけて速くしましょう」という 道しか通ってないだろう?
585 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 13:40:09.50 ] デスクトップアプリがWEB用アプリに置き換わりはじめてるから、 この流れは相当続くね 下手したらスマフォのネイティブアプリの領域も浸食しそうだし(ここはまだ不確定)
586 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 13:40:31.51 ] ああ、asm.jsの奴はJS的にもアレなので あそこまで言うのならコードと実行時間くらい示してほしいが
587 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 13:44:24.21 ] ん?ちょっとまて この流れはひょっとしてCythonが最強という事でよろしいか?
588 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 14:00:56.34 ] Cythonって静的型付け言語ってことでいいの?
589 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 14:02:44.37 ] ハイブリッド
590 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 14:33:20.50 ] node.jsって実行速度を自慢する割には、 静的に型付けした場合と比較するとゴミだな…… 所詮は、他言語がepollやkqueueを使わない場合という ハンデをつけた状況に限れば非同期処理が速いってだけのウンコか……
591 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 14:35:16.37 ] > node.jsって実行速度を自慢する割には、 またいつもの勘違いさんかw
592 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 14:45:32.92 ] 静的型付け言語の下位と同じくらいだな 動的型付け言語としては十分自慢できるぐらい速い
593 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 14:56:24.24 ] 要するに静的型付け言語が優れてるってことだよ。 スクリプト言語で気軽にかけるといっても 大規模になって、多く使われるようになってくると 結局その複雑度や速度に対応するために 静的型付け言語の機能が取り入れられていく。 JavaScript、Python、Basic(VB)、PHP www.publickey1.jp/blog/11/phpjithiphop_virtual_machinefacebook.html HipHop Virtual Machineは、PHPを高速に実行するためにPHPのコードをC/C++に変換して g++でコンパイルし、バイナリコードにするHiphop compiler(hphpc)と、PHP