任天堂「今後C++は捨てJavaScriptで開発していく」

2013/03/20(水) 13:07:40.60
任天堂のゲームはこれまで,CやC++といったプログラミング言語で開発されており,
そのため高いパフォーマンスを発揮していたが,反面,開発に時間がかかっていたという。
このセッションではそれ以外の方法,つまりHTMLやJavaScriptを使ってWii Uの全機能にアクセスしつつ,
より手軽にゲーム開発を行う方法が説明されるようだ。
http://www.4gamer.net/games/999/G999905/20130316001/
2013/03/29(金) 01:17:57.96
JSのコンパイルってそのままやるんだったらLispとほぼおんなじ方法になるよね。
だったら、C++あたりにトランスコードしてコンパイルする羽目になるんじゃないか??
2013/03/29(金) 01:25:32.37
C++一本で食ってるやつなんていないんだろうから気にするこたぁねえよ
2013/03/29(金) 01:36:15.99
C++が消えるというか完全に裏方になるのはいいのだが、
JavaScriptメインで開発とか正気かよ
もうちょっとマシなスクリプト言語いくらでもあるだろ
2013/03/29(金) 01:39:27.33
普通はそう思っちゃうよね
だけどGoogleとかの勢いが何かを思わせるんだよね〜
というより、スクリプトメインにするほうが儲かるのは間違いない
2013/03/29(金) 01:46:38.91
>>309
さてはお前JVMって何かわかってないな
2013/03/29(金) 01:51:55.93
C++はJVMに残るのみというまさに屈辱の形になりそうだねww
2013/03/29(金) 02:21:40.26
JavaじゃなくてJavaScriptの話なのに何でJVMが出てくるんだ?
2013/03/29(金) 02:25:16.36
エンジンがRhinoだとおもってるのかな?
2013/03/29(金) 10:17:20.50
>>302
COBOLと同じ運命を辿ります
2013/03/29(金) 15:43:37.96
以上、JavaScript大好きだけどゲーム開発には何の興味もないワナビーの皆様の声をお届けいたしました
2013/03/29(金) 15:45:54.55
ワナビーの意味、間違って覚えてないか?
2013/03/29(金) 19:04:23.23
んふーふっふふっふふう♪
JavaScript たのっすぃー
2013/03/29(金) 20:14:53.48
>>313
Googleのコードで圧倒的に多いのはC++らしいぞ
大部分はChromeのコードらしいけど
2013/03/30(土) 16:45:34.87
JavaScriptエンジンだってC++だろ
結局、基盤的なところは今までもこれからもC/C++だよ
C++敵視するアホの期待とはうらはらに
2013/03/30(土) 19:33:27.61
昔のJava厨はまだ良かった
C・C++を知ってたから
「JavaとC/C++は普通に書けば同じくらいの性能
徹底的にチューニングしたらさすがにC/C++には勝てないけどね」
ぐらいの主張だったけど

JavaScript厨はコンピュータに関する知識が少ないから
「今のVMはすごい。昔とは違う。
Javascriptは最強最速だから」
とか言ってくるんだからな
2013/03/30(土) 22:46:50.00
jsのコンパイラ次第だな
性的片付けがないから厳しそうだが
2013/03/30(土) 22:49:49.18
>性的片付け

おそうじフェラかと
2013/03/30(土) 22:51:08.37
最適化のための構文とかキーワードとかバシバシ追加されたら
そういう寝言にも付き合ってやろう
2013/03/30(土) 23:28:18.98
寝言言ってんのはお前だw
2013/03/31(日) 04:31:44.72
>>325
型推論備えたJSとか無理なのかなと思ったが…クラスベースならともかく、プロトタイプベースとは相性悪そうだな
2013/03/31(日) 04:48:56.63
型情報もってない動的型付け言語の型推論を事前に行うなんて無理っぽい
そういうわけで、Google V8のように実際の実行時に型情報を統計的に推測して
マシンコードに変換する手法が現状最速になってるわけよ
2013/03/31(日) 04:58:41.93
まあそれでもブラウザ用と違ってゲーム端末用途なら
事前コンパイルでバイトコードみたいなものに変換しておくのはいいかもね
最適化とマシンコードへの変換は実行時に行う必要があるだろうけど
2013/03/31(日) 07:30:00.50
>>330
今はそもそもコンパイルが辛いからJITしてるって段階だけど、速度を追い求めてた結果としてもJITが要求されたりする
C/C++みたいな言語でもコンパイラで最適化するだけじゃなく実行時にも最適化掛けたほうが早くなる見込みはあるからな

Ruby処理系Topazとか、PyPyの構造で高速化されるあたりJITによる動的な最適化ってなかなかバカにできん
PyPyってのは「JIT付きPythonインタプリタ上で動くPythonで書かれたPythonインタプリタ上でPythonコードを実行したら、JIT付きPythonインタプリタ上でPythonコードを実行するより早くなる」っていうPythonインタプリタな
2013/03/31(日) 08:49:20.44
UnityのJavascript(もどきw)は型情報を付与してAOTしてるが、そういうアプローチで最適化とかはできんのか?
2013/03/31(日) 09:28:08.38
Unityみたいなアプローチじゃ、
Web技術のHTML5+javascriptでそのままプログラミングできるって用途には使えん
任天堂はUnityとHTML5+javascriptの両方用意するんだから、Unityの方を使えばいい

任天堂限定の話じゃなくてWeb技術の方でそういうアプローチが普及しないのは
各ブラウザの足並みが揃わなきゃ誰も使ってくれないからかな
2013/03/31(日) 12:11:29.65
OS統一すればよくね?
2013/03/31(日) 14:42:35.12
ttp://www.4gamer.net/games/032/G003263/20130328081/
実質Windows&FFOXだけでいいっちゅうか・・・
2013/03/31(日) 15:09:03.63
>>336
これはasm.jsをサポートするブラウザが増えなきゃ技術の無駄使いだね
現時点ではFirefoxOS上で動かすためぐらいしか意味が無い
Firefoxだけでしか動かんなら、Cからjavascriptにわざわざ変換せんでも、
Windowsでネィティブに動かせばいいわけで
2013/03/31(日) 15:15:03.57
ああでも、Firefoxが動いていればMacでもLinuxでも動作可能なゲームが作れる?ことになるのか
それはひとつの利点かもな
339デフォルトの名無しさん
垢版 |
2013/03/31(日) 15:17:44.71
Javascriptは統一言語になっていない。
javaやC#のほうが互換性が高い。
Javascriptは非常に処理系(ブラウザ)に影響される。
2013/03/31(日) 15:21:45.36
c#とか実質的にプラットフォーム依存じゃないかw
2013/03/31(日) 15:39:31.39
>>340
2005年ぐらいからタイムスリップしてきたのか?
2013/03/31(日) 16:10:57.97
>>341
Windows上で動くC#で作ったプログラムがほぼMono環境で実用になると思っていいの?w
2013/03/31(日) 16:19:10.23
おうよ
ゲーム用にキワどいところまで攻めたチューニングでもばりばりうごくぜ
2013/03/31(日) 16:22:55.52
Wineでもういいじゃない
2013/03/31(日) 16:23:40.56
ついにWPFとかもサポートされたのか
2013/03/31(日) 16:25:35.89
言語とライブラリの区別はつけようね。
2013/03/31(日) 16:27:44.24
そういうレベルの互換性でいいならJavascriptだってほとんど問題無いだろ
2013/03/31(日) 17:20:12.76
>>346
そういう言いぐさしたらC最強じゃねぇかw
2013/03/31(日) 17:21:45.29
オレ「今後JCは捨ててJSを開発していく」
2013/03/31(日) 17:26:07.72
>>349
JK「きも…」
2013/04/01(月) 01:53:21.21
asm.jsは歓迎だけどな。数値計算分野でのJavascript整備を進めてほしいところ。
FORTRANとか時代錯誤なんで物理シミュも余裕でJavascriptにしてほしい。
352デフォルトの名無しさん
垢版 |
2013/04/01(月) 02:02:42.20
そんなにやるならCかFORTRANかアセンブラへのコンバータの方がいい。
asm.jsは速いとしても限界がある。
2013/04/01(月) 07:48:02.22
同じ様に書いた(物凄い非効率で遅い)ネイティブコードの
二倍程度で済むって話でしょ。

ネイティブコードで書く必要があるような場面って
結局そこからの最適化が勝負だから、
ネイティブを置き換えるのはさすがに無理だろうな。
2013/04/01(月) 08:21:36.72
asm.jsっていうのは、CとかFORTRAN(フロントエンドあるのかな?)で書いたコードを
バイナリへコンパイルする代わりに特殊な中間言語に変換するものだよ?
CとかFORTRANを置き換えるとかっていうのは使用方法を勘違いしてる
2013/04/01(月) 17:17:13.41
C++とアセンブラとjavaしかできない俺は取り残されていくんだろうか‥
356デフォルトの名無しさん
垢版 |
2013/04/01(月) 17:22:13.67
取り残されていく
2013/04/01(月) 18:35:44.97
変化に対応できない人間は弱いな
2013/04/01(月) 22:19:51.77
C++・アセンブラ・Javaできれば他の言語なんてあっというまに覚えられるだろ?
2013/04/01(月) 22:21:57.57
アセンブラ、C、Java、JavaScriptができれば
大体のところは網羅してると思うな。
360デフォルトの名無しさん
垢版 |
2013/04/01(月) 22:25:07.14
覚えられても、あえて覚えない拘りをもつんだろ。
ダーウィンだったかが、必ずしも強者が生き残るのでなく環境に適応したものが残るとかいってた。
2013/04/01(月) 22:43:04.18
正直、言語一つ極めれば大抵の他言語は余裕で覚えられる
2013/04/01(月) 23:16:07.87
手続き型から関数型はちとつらい
2013/04/02(火) 03:07:18.48
俺が生きてる間には関数型が覇権握ることはなさそうだし
とりあえず無視しとく
2013/04/02(火) 03:08:26.67
SQLを使ってる人は、関数型もすんなり使えると思う。
SQLと関数型言語は考え方が違い。

このことに気づいている人も結構いる。

https://www.google.co.jp/search?q=SQL+関数型言語
2013/04/02(火) 06:12:02.51
node.jsとか時代はJavaScriptなん?
2013/04/02(火) 06:28:39.86
>>358>>359>>361
それだけでは、とてもじゃないけど関数型言語を使いこなせる気がしない

極めるのうちに自前で他パラダイムの要素混ぜ始めるのまで含めなければ、だけど

>>365
JavaScriptの応用がホットなのは確かだけど、最終的には適材適所じゃね?
2013/04/02(火) 12:11:06.35
>>365
flashが倒れた以上後釜を狙う立場にいるのは確か
2013/04/02(火) 12:37:02.55
>>366
ループの処理を再帰に変換するのが脳内で一瞬でできるようになれば
そんなに難しくはないような気がしてる。
2013/04/02(火) 12:38:21.20
>>368
最終的には再起を先に考えてしまって後でループに直したりし始めるけどなw
2013/04/02(火) 12:40:51.36
関数は第一級オブジェクト
2013/04/02(火) 12:42:12.08
jQueryとHTML5で既にFlashの後釜
node.jsはローカル鯖テストに使ってる。便利な気がする。同一言語で扱えるので。
コンパイラが絶滅する時代が来るのかな。
(C++は進化してきているのがわかる。JavaScriptに近い部分もあり。)
2013/04/02(火) 12:53:34.06
生のJavaScriptを書くやり方の方が絶滅すると思う
JavaScript(or そのサブセット)を出力するコンパイラが主流になる
2013/04/02(火) 14:56:20.30
変換無しで実行できるっていうのもひとつのメリットだからね
主要ブラウザで直接実行可能なのがJavascriptだけな状態が続くなら
絶滅させるのは難しい
374デフォルトの名無しさん
垢版 |
2013/04/02(火) 16:06:59.30
将来のプログラマはCもjavaも両方出来ないとダメになったぞ
まぁ、移植の手間が省けるぶんゆとり化が進むだろうけど
2013/04/02(火) 18:24:13.21
JavaScriptとJavaが同じだと思ってる人が何人かこのスレに居るな
2013/04/02(火) 20:54:54.84
任天堂のハードの機能に依存したソーシャルゲーとかが作りやすくなるってことか
それこそ個人のサイトでも任天堂ハードを利用したアプリが公開できる
2013/04/02(火) 21:20:51.76
>>376
それできるの?
セキュリティとかロイヤルティとか難しい気がするが
2013/04/02(火) 21:23:39.32
そもそもソースの隠蔽が無理
2013/04/03(水) 00:09:38.97
「JavaScriptは遅い」って言う人はプログラミングについて完全に誤解してる
「JavaScript(を機械語に変換する特定の処理系)は遅い」なら正しいが
「JavaScript(というプログラミング言語)は遅い」という発言はおかしい
プログラムの処理速度を決めるのは言語処理系であって、言語そのものではない
2013/04/03(水) 00:11:10.52
またバカが来た
2013/04/03(水) 00:49:11.92
処理系ががんばればいくらでも速く出来るとか思ってるやつのほうが完全に誤解してるだろ。
2013/04/03(水) 00:57:13.59
まあjs厨はバカしかいないってことで
383デフォルトの名無しさん
垢版 |
2013/04/03(水) 01:01:02.84
>>373
googleがDartを本気でjsと置き換えようとしてるらしいが、どうなることやら
2013/04/03(水) 01:20:33.24
>>378
それいうとあらゆるクライアントサイドプログラムもソース隠蔽は無理じゃね?
ネイティブコードからの逆コンパイル可読性に負けるとはいえ、変数名全部圧縮したJSってMSILからC#に復元したコードと大差ないレベルじゃね?
2013/04/03(水) 01:57:13.31
JavaScriptは、いずれどこかの時点でオブジェクト指向機能を
取り入れた別の物に進化してHTML6の一部になると思う
いまのJavaScriptの環境はC言語で関数ポインター駆使して
一生懸命オブジェクト指向設計してた時と同じように
無理が来てると思う
2013/04/03(水) 02:01:29.30
お前らasm.jsの記事すらまともに理解できないのか
2013/04/03(水) 02:15:15.27
asやってたからjsに変えるのは楽だけど何となく型宣言がないのは気持ち悪い
2013/04/03(水) 02:19:10.19
>>381
何言ってんだ?
原理的にCで吐ける機械語はJSでも吐けるんだが
チューリング完全て知ってるか?
2013/04/03(水) 02:28:20.77
マジバカわろた
390デフォルトの名無しさん
垢版 |
2013/04/03(水) 02:29:33.48
機械語を書き出せるのはチューリング完全と関係ない。
言語がチューリング完全でなくとも出来る。
2013/04/03(水) 02:31:09.29
>>390
チューリング完全な機械語を吐くにはチューリング完全な言語を処理系に食わせなきゃ無理
機械語を吐くこと≠チューリング完全な機械語を吐くこと
2013/04/03(水) 02:31:33.24
ではバッファオーバーフローするjsとその処理系がどのようなものになるか説明してみてください
393デフォルトの名無しさん
垢版 |
2013/04/03(水) 02:36:12.10
>>391
CコンパイラのバイナリをBASE64などでコピペして
チューリング完全でない言語でデコードして書き出す。
394デフォルトの名無しさん
垢版 |
2013/04/03(水) 02:46:14.34
(Cコンパイラの)バイナリデータを吐き出す機能しか持っていない言語は
チューリング完全でないが、チューリング完全の処理系を出力できる。
2013/04/03(水) 02:52:58.75
>>385
JavaScriptはプロトタイプ指向と言うオブジェクト指向と類似するパラダイムを既に獲得しているので、今更オブジェクト指向を取り込む必要は特に無い

>>388
×Cで吐ける機械語はJSでも吐ける
○Cで書ける処理はJSでも書ける

わかり易い例を出すと、Cと同じ機械語を吐くためにはメモリ破壊出来ないとダメだけどJSでは無理だ
処理速度の面で言うにしてもCと同等の速度が出る「可能性は否定出来ない」程度で現状は未だ無理
最適化に必要な型情報などのヒントを埋め込みまくってようやくCには一歩及ばない上に、そのコードは既に人が書くには辛い領域になっている
動的最適化の果てに静的最適化のみのCを超える可能性とかはあるが、現状ではそれも未達成だ・・・発展著しいし希望は有ると思うけど
2013/04/03(水) 02:54:11.35
>>395
メモリ破壊する処理を書けばいい。
2013/04/03(水) 02:56:25.62
>>396
破壊できたら只のセキュリティホールでんがな
398デフォルトの名無しさん
垢版 |
2013/04/03(水) 02:56:41.64
C言語が出力するバイナリと同様のものはJavascriptで吐ける。
C言語の出力をバイナリ文字列としてコピペして書き出すだけ。
2013/04/03(水) 02:56:50.05
>>397
> Cで書ける処理はJSでも書ける

って書いてある。メモリ破壊する処理を書けばいい。
2013/04/03(水) 02:57:50.43
バイナリファイルはきだせるならなんでも作れるだろ。
401デフォルトの名無しさん
垢版 |
2013/04/03(水) 02:59:26.13
より一般にほとんど言語で、C/C++で書かれたC/C++コンパイラと同等の速度が出る、C/C++コンパイラを書くことは可能。
これはチューリング完全なんかと関係する。
2013/04/03(水) 03:00:19.75
Cで書けるということはクライアントの環境を決め打ちできるということだ(キリッ
2013/04/03(水) 04:13:43.77
>>399
メモリ破壊のロジックを再現しても実際のメモリ破壊できないだろ・・・レイヤ違うんだし
2013/04/03(水) 04:56:44.83
メモリ破壊の意味分かってないバカがいるな
さすが低級言語のC/C++厨だな
2013/04/03(水) 05:02:35.17
具体的に説明できない知ったかぶりが煙に巻くときに使う常套句:レイヤ
2013/04/03(水) 05:42:55.70
相手の発言を曲解して馬鹿にした気になれるってある種の才能だよな・・・
395が言ってる処理ってアルゴリズムの事だと理解できないのか、理解したくないのかどっちなんだろ?
説明されても理解できないの方だとしたら、病院行って診断もらってきたほうがいい。特権手帳もらえるよ。

>>405
煙に巻くもへったくれも、JS上に作った仮想メモリはOSが管理する仮想メモリやCPU見てる実メモリとはレイヤ違うからそのまんまだろ
2013/04/03(水) 07:22:06.91
Cすら使いこなせない低能でも
JSでゲーム開発出来ると聞いてアホが喜んでるんだから
水を差すなよ...
2013/04/03(水) 08:11:05.05
ゲーム作ったことある奴ならわかるけど
言語なんか関係ないからな
それ以外のことが難しすぎるし
2013/04/03(水) 09:03:38.63
>>388
それじゃ現状でJavaScriptが遅いのはどういう理由なの?
実装してる連中がバカだから?
(実際的にはムリだけど)原理的には可能っていう屁理屈?
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況