任天堂「今後C++は捨てJavaScriptで開発していく」 (887レス)
上下前次1-新
467(3): 2013/04/03(水)13:47 AAS
C言語が機種依存して最適化してる。C言語なみの速度がJavaScriptで実現可能かということは原理的には可能だろ。
C++のテンプレート使うと、必要な型のすべてのバイナリを生成し、バイナリの中身は型付き変数として動作する。
JavaScriptコンパイラを作り最適化したらいいだけ。
468(1): 2013/04/03(水)13:53 AAS
>>467
原理的に可能って、JSでコンパイル時点ですべての型を予測して
あらかじめ生成するなんてムリだろ。
469(1): 2013/04/03(水)13:55 AAS
>>467
テンプレートの場合に型が変化するのはそのテンプレート引数の組み合わせだけだけど、
Javascriptの関数の場合に型が変化する組み合わせはそれこそ莫大な数になる可能性が考えられるわけよw
しかも実行と同等なことをしてみないと必要な組み合わせが判明しない
なので無理
470: 2013/04/03(水)13:56 AAS
C言語自体は機種依存してないよな
言語とライブラリを分離してるだけで
#ifdef使えば
UNIXとWindowsですらソースコードレベルのポータビリティが有る訳で
API部分を抽象化しても結局うまくいかないのはJavaが証明したし
JavaScriptもそれを繰り返すことになるだろう
471(3): 2013/04/03(水)15:51 AAS
>>468>>469
あまりに実行中に新型の型を生成するようではエラー出してコンパイルを停止させる。
どこで新型が生成されるか事前に判別できるから、無限ならず有限で済むケースでのみコンパイルを成功させる。
472: 2013/04/03(水)16:46 AAS
>>471
ちょっと複雑なコードを書いたらすぐエラーになるか、コンパイルが終わらなくなりそう。
473: 2013/04/03(水)17:06 AAS
>>471
ごまかすな
お前が言ってたのはJavascriptのコードをCのコードと同等な速度に変換できるってことだろ?
変換可能な部分のみ変換するのでは
JavascriptのコードをCのコードと同等な速度に変換できるとは言えない
その程度だったら事前に変換してコンパイルじゃなくて、JITコンパイルで十分なのよ
474: 2013/04/03(水)17:10 AAS
GCありきで書かれたクソコードを静的解析してスタックに割り付ける作業に戻れ
475(2): 2013/04/03(水)19:12 AAS
JavaScriptでC言語に並べるのは事実。
CソースをJavaScriptソース内にStringとしてコピペして
JavaScript製Cコンパイラに通したら、C製Cコンパイラと同じ実行ファルを生成でき
速度はC製Cコンパイラと一緒。
477: 2013/04/03(水)19:35 AAS
>>475
つまりCで書かないとはやくならないのか。
478(1): 2013/04/03(水)20:04 AAS
最適化トランスコーダを書いてさらにCコンパイラで最適化だ!!!
聞きかじりだが、PyPyみたいになるかもしれんぞ。
479(1): 2013/04/03(水)20:05 AAS
っていうか、LLVMのフロントエンド書くんだ!!
480: 2013/04/03(水)21:40 AAS
LLVMはバックのほうが windows でまともにうごくかな!
481: 2013/04/03(水)21:57 AAS
twitter.com/shelarcy/status/319102598693138433
GHCのSIMD命令対応
がんばるHaskeller...
482: 2013/04/03(水)22:13 AAS
まあ、関数型は並列性抽出しやすいからな。
483: 2013/04/04(木)03:26 AAS
>>467
全てではなく呼び出し関係を追いかけて出現した型だけだし、一度確定した型はC++では変化しない
JavaScriptの場合型が変化するどころか型の定義そのものが後から変化してしまうから手に負えない
>>471
「どこで新型が生成されるか事前に判別でき」「ない」
君の大好きチューリングマシンの停止性問題と同じ理屈で、ある条件である部分(ある内容の型生成)が実行されるかは判別できない
結果、実行中に実際生成された型でその都度ネイティブコードを生成するJIT実行か、連想配列を使ったインタプリタに毛が生えたような実装になる
省3
484: 2013/04/04(木)03:42 AAS
>>478-479
素のJavaScriptで型特定は無理ゲーだし諦めて、もうJScript.net(≠JScript)でよくね?
型ヒントとか色々付けないとコンパイル通らないけど、一応IL吐けるからC++/CLRといい勝負できるかもしれん
もっとゴリゴリやりたい部分はMSILからFunction生成で誤魔化すw
485: 2013/04/04(木)21:25 AAS
なんでMS前提なんだよ
486(1): 2013/04/05(金)10:08 AAS
JavaScriptと実用レベルで互換が有ってネイティブコードまでまともに変換できる製品がJScript.netくらいしか思いつかなかったんだ
吐けるバイナリはMSILだけどMSILのJITコンパイルは起動時/インストール時にほとんど終わるからJSのコンパイル基盤って意味では一番まともかと
JScript.netが吐き出すILやそのアセンブリを見たこと無いからなんとも言えんけど、
ILの品質次第ではJavaScriptで書いたコードが等価なC/C++で書いたコードとタメ張るかもしれん
487: 2013/04/05(金)23:13 AAS
>>486
たぶんないなw
488(1): 2013/04/05(金)23:51 AAS
まぁ最近の家庭用据置ならちょっとしたアプリやホビープログラムならスクリプトでお手軽に
ってのはありじゃね
商用のフルパッケージでそんな事してたらアホだけど
489: 2013/04/06(土)04:44 AAS
いいからファミリーべーしっくやってろw
490: 2013/04/06(土)09:12 AAS
>>488
FPSのなかのLuaさん「・・・」
491: 2013/04/06(土)10:25 AAS
いまや商用のフルパッケージなゲームでこそ、
DSLとしてスクリプト言語的なものを使うのは普通だね
492: 2013/04/06(土)10:35 AAS
大きなゲームでスクリプト使うのは
・リロードで差し替えられることによるトライ&エラーしやすさ
・ビルド環境不要
という面が大きい。
Lua好きなんだけど、
PCアプリではBlender-Pythonみたいなあまり有名なのが無いのはなぜなんだろう。
493: 2013/04/06(土)12:51 AAS
Moai SDKでググれ
494: 2013/04/06(土)21:04 AAS
AGK / DarkBASIC / Basic4GL / 99BASIC 2013 Part.1
2chスレ:pcnews
世界中でダントツの人気!各BASICの特徴
・ AGK App Game Kit(外部リンク:www.appgamekit.com)
海外で主流のマルチプラットフォームの開発環境。
C言語風味の記述が特徴で、中身はDarkBASIC。
Ver1.088で3Dインターフェイス対応。
省12
495: 2013/04/07(日)09:54 AAS
[参考] ベンチマーク - FOR-NEXT10億回ループ
(表1)ベンチマークテスト結果(数字が小さいほど速い)
MASM32 JavaScript DarkBASIC AGK 99BASIC
---------------------------------------------------------------------------------
PC(CeleronD2.66GHz)[sec] 0.7828 7.772 20.853 65.423 1532.0
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MASM32を1とする相対倍率 1.0 9.928 26.638 83.575 1957.0
省10
496: 2013/04/07(日)10:36 AAS
そういうアプリ内の処理時間の割合が20%未満のグループに入るものの比較をしてもほとんど意味ないよ。
80%に含まれるものの比較をしなきゃ。
497: 2013/04/07(日)10:40 AAS
それと、例えば1秒とかの単位時間あたりの処理回数も考慮しないとね。
1秒あたりたかだか100回程度しか行わないのに、10億回の処理時間を比べても意味ないし。
498(1): 2013/04/07(日)10:47 AAS
ループ速度の測り方は難しいけど
ループが一番処理として多いのは間違いないだろ
批判が適当すぎ
499: 2013/04/07(日)10:57 AAS
そもそもBASICと比較してどうすんだ
500: 2013/04/07(日)11:07 AAS
つまんね
501: 2013/04/07(日)11:13 AAS
[参考] ベンチマーク - FOR-NEXT10億回ループ
(表2)ランキング表
開発環境 タイム[sec] MASM32を1とする相対倍率
------------------------------------------------------------------------------------
PC(CeleronD2.66GHz). MASM32. 0.7828 1.0
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PC(CeleronD2.66GHz). JavaScript 7.772 9.928
省13
502: 2013/04/07(日)11:26 AAS
「開発環境:JavaScipt」から滲み出る頭の悪さ
503: 2013/04/07(日)11:27 AAS
>>498
重要なのは、ループ内の処理速度であってループそのものの処理速度ではない。
まあループそのものの処理速度が致命的に遅いのなら問題だが。1回1msかかるとか。
504(1): 2013/04/07(日)11:44 AAS
ループそのものから重ければ推して知るべし
恥かいちゃったね
505: 2013/04/07(日)12:10 AAS
>>504
推して知れないからいろんなahootoutのページでは様々な切り口でベンチしてるんだよ。
それと、今回任天堂がやろうとしているドメインの機能やAPIを考慮したベンチじゃないと意味ないね。
506: 2013/04/07(日)12:12 AAS
まあただのループ比較したって意味ないよね
LINPACKみたいに演算やデータアクセスのあるのを比較すればいいのに
507(1): 2013/04/07(日)12:15 AAS
結構バカが吊れたなw
508: 2013/04/07(日)12:26 AAS
今どき釣り宣言とか・・・
509: 2013/04/07(日)12:31 AAS
>>507
顔真っ青だぞお前
510: 2013/04/07(日)12:43 AAS
本日のロバ=任天堂w
511: 2013/04/07(日)12:47 AAS
わからないとわめくバカw
512: 2013/04/07(日)12:52 AAS
つか、masmの10倍くらいしか時間がかからないんだったら問題ないよね
513: 2013/04/07(日)13:03 AAS
ねんまつ
514(1): 2013/04/07(日)13:26 AAS
インクリメントと条件分岐だけで10倍って
普通の処理なら10倍どころじゃすまないってことだぞ
515(1): 2013/04/07(日)13:41 AAS
FOR-NEXT10億回ループはJITコンパイラ実装のJavascriptにかなり有利な条件だよね
516: 2013/04/07(日)16:35 AAS
[参考] ベンチマーク - FOR-NEXT10億回ループ ver1.02 page 1/2
(表1)ベンチマークテスト結果(数字が小さいほど速い)
MASM32 Visual C++ JavaScript DarkBASIC AGK Basic4GL 99BASIC
-------------------------------------------------------------------------------------------------------
PC(CeleronD2.66GHz)[sec] 0.7828 2.821 7.772 20.853 65.423 285.703 1532.0
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MASM32を1とする相対倍率 1.0 3.604 9.928 26.638 83.575 364.975 1957.0
省10
517(1): 2013/04/07(日)16:35 AAS
AA省
518(1): 2013/04/07(日)16:37 AAS
まだやってんのかよもういいから
519: 2013/04/07(日)16:58 AAS
>>517-518
この先も続けるつもりならコテつけてやってくれんかね
520: 2013/04/07(日)17:11 AAS
[参考] ベンチマーク - FOR-NEXT10億回ループ ver1.03 page 1/2
(表1)ベンチマークテスト結果(数字が小さいほど速い)
MASM32 Visual Basic Visual C++ JavaScript DarkBASIC AGK Basic4GL 99BASIC
----------------------------------------------------------------------------------------------------------
PC(CeleronD2.66GHz)[sec] 0.7828 2.445 2.821 7.772 20.853 65.423 285.703 1532.0
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MASM32を1とする相対倍率 1.0 3.123 3.604 9.928 26.638 83.575 364.975 1957.0
省10
521: 2013/04/07(日)17:12 AAS
AA省
522(1): 2013/04/07(日)17:22 AAS
チューリング完全がなんとか言ってた頭のおかしい人か
しょうがねえからワードであぼーんすっかな
523: 2013/04/07(日)17:40 AAS
AA省
524: 2013/04/07(日)17:40 AAS
AA省
525: ─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/07(日)17:50 AAS
んじゃな♪(ペロリ♪”
526: 2013/04/07(日)18:22 AAS
>>514
いや、傾向としては、そういう速い処理は差がつきやすいけど、IOが
絡んだ処理のように明らかに遅い処理はほとんど差がないってのが
一般的な傾向じゃね?
527: 2013/04/07(日)20:57 AAS
どんだけレベル低いんだよ・・・
528: 2013/04/08(月)02:47 AAS
>>17
いわっちだったらあり得る
529: 2013/04/08(月)05:12 AAS
そらバルーンファイトはそうだろうけどよ
530: 2013/04/08(月)06:35 AAS
>>515
っていうか最適化によってはループせず変数に最終値が直接代入されて終わるレベルまで展開されかねない。
JITだと一巡回しきるまでループ結果を展開できないけど、事前コンパイルだとコンパイル時にループ回して結果確定できるからコンパイラ使うほうが強くね?
・・・まぁVCとかが遅く出てるようだから最適化を切った無意味な比較っぽいが。
>>522
実際試してみたら(どのJSエンジンかは知らんけど)JavaScriptの遅さに仰天してアセンブラ信者に転向したんだろうな。
takやtaraiを覚えたら関数型言語に転向しそうだ。
531: 2013/04/08(月)14:40 AAS
JSは変数スコープがキモイ
532(1): 2013/04/08(月)15:02 AAS
JSの変数スコープが理解できないやつはわりと頭悪い
533: 2013/04/08(月)20:40 AAS
typoしても黙ってるとかタチ悪すぎ
VBAですらOption Explicit必須だというのに
534: 2013/04/08(月)20:49 AAS
strictモードにしろよ
535(1): 2013/04/09(火)02:25 AAS
>>532
文ブロックで隠蔽されないとかきもくね?
536(2): 2013/04/09(火)02:43 AAS
>>535
LispとかやってるとJavascriptの方が自然だな
537: 2013/04/09(火)02:56 AAS
>>536
Lispが既に異端
538(1): 2013/04/09(火)03:17 AAS
そもそもレキシカルスコープとかLisp由来なので
539(1): 2013/04/09(火)04:17 AAS
ラムダのみが新しい束縛範囲をつくる
letや文ブロックはただの糖衣構文に過ぎず、そういうのは極力少ないほうがいい
540: 2013/04/09(火)09:03 AAS
関数型はやり過ぎ
541: 2013/04/09(火)10:36 AAS
>>539は別に関数型言語の話ではない
542: 2013/04/09(火)11:03 AAS
>>538
Algolだろう
543(2): ─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/10(水)17:14 AAS
>>1
>任天堂のゲームはこれまで,CやC++といったプログラミング言語で開発されており,
>そのため高いパフォーマンスを発揮していたが,反面,開発に時間がかかっていたという。
>このセッションではそれ以外の方法,つまりHTMLやJavaScriptを使ってWii Uの全機能にアクセスしつつ,
>より手軽にゲーム開発を行う方法が説明されるようだ。
ありえないな…。
どうせフルアセンブラで書いてて後継者がいなくなったってところが正解だろうなw
省6
544: 2013/04/10(水)18:05 AAS
きょうびフルアセンブラで開発してるとこなんてないっつーの
545(1): ─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/10(水)18:08 AAS
んじゃ証拠並べろw
546(2): 2013/04/10(水)19:29 AAS
>>545
1mb位でさえフルアセンブルしてみれば、どれだけ大変かわかるぞ。
んで、このスレにも書かれてたと思うけど、Web屋を取り込みたいんだろう。
あと、コンパイラを真面目に作れば、C++の2倍程度で済むらしいから、
表現力の向上を考えればトレードオフできるレベルじゃないか?
それに、頑張ってCTFEでも実装すればもっと縮まるし。
547(2): ─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/10(水)20:05 AAS
>>546
…「 JavaScriptコンパイラ 」 か?w
” 緩いJava ” みたいになってますます混乱するだろうな(笑)
フツーに中間言語(CLR/MSIL)にしか翻訳しないコンパイラならBASICコンパイラの方がいいだろうな。
既存のOSとかAPIとかのパラメーターの引き渡し方法(スタック渡しとか)をどうやって実現するかは別
にしてな。
ハードウェアを直接操作するってのは時代に沿わないけど、これとは逆行してAndroidとかAppleとか、
省3
上下前次1-新書関写板覧索設栞歴
あと 340 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル アボンOFF
ぬこの手 ぬこTOP 0.033s