任天堂「今後C++は捨てJavaScriptで開発していく」
任天堂のゲームはこれまで,CやC++といったプログラミング言語で開発されており,
そのため高いパフォーマンスを発揮していたが,反面,開発に時間がかかっていたという。
このセッションではそれ以外の方法,つまりHTMLやJavaScriptを使ってWii Uの全機能にアクセスしつつ,
より手軽にゲーム開発を行う方法が説明されるようだ。
http://www.4gamer.net/games/999/G999905/20130316001/ 知ってると書く奴の100%は何も知らないと言う法則 というか書ける奴は外部仕様を見れば書ける気がするし
書けない奴はソースコードなんか見ても書けない気がする じゃー、しーらない。
まぁ、確かに、OSのソースよんだけど全然理解できなかったのはそうだな。
グラディウスのソースはあれだ文学として興味あるね。
どういう文体で書かれてるとか、どうやって動いてるだとか。 >>77
だからObject.seal()の機能書いてみ。
何をしてくれるのかわかってないだろw まあコード書けない低能は
この板ではゴミ
存在する価値すら無い >>105
var a = {maxLength:0};
var b = Object.seal({maxLength:0});
var hoge0 = function hoge(x) {"use strict"; x.maxLength = 100; return x.maxLength};
var hoge1 = function hoge(x) {"use strict"; x.maxlength = 100; return x.maxlength};
hoge0(a) // => 100
hoge1(a) // => 100
hoge0(b) // => 100
hoge1(b) // TypeError: Can't add property maxlength, object is not extensible >>111
こりゃ面白い。
Lispじゃなくて、JSがキビキビ動くようになったらまたAI戦争になるんかね。 >>114
そりゃ大変だ。
JSがキビキビ動くようになったらソース互換でかなりすごいことになるな。今更だけどな。 やっとObject.seal()の機能を理解したかw 書けると言う奴の100%は何も書けないと言う事実w 俺はかけないと思うんだが、
他人がかけるというんだ。 >>112
これには同意だなー。プロパティを後付け追加で拡張されまくりで
ろくにデバッグされなくて、ゲーム開発環境がますます修羅場になる。 BASICってたしか関数やスコープもなかったと思うけど? C++の開発環境が肥大化のせいでゲームの本質的な面白さの追求に至れてないなら
富豪プログラミング的発想でカジュアルなゲームでHTML5でもいい 枯れた技術の〜っていう発想に近いわけだし
ただなんでもHTML5でできるわけじゃないし、パフォーマンスチューニングは同じぐらいバッドノウハウある
全然質が違うチューニングだけどもね。モジラの次世代エンジンOdinMonkeyとか気が狂ってる
っていうか単にデベロッパーが減ってWeb屋吸収したいだけとも言える >>123
関数も文字列操作も強力だよw
何も知らない癖に偉そうに書くと恥をかくよw >>125
他の言語と比べて
どんなことが優れてる?
無いと思ったけど。 >>130
なんだ。やっぱりただのかまってちゃんだったかw , -=-‐〜--へ__,,- 、
< ヽ ゝ
ノ 二、___ゝ,/_/ヘ |
| ヲ | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ┤ ===、 , ==| | < 切り捨てられる覚悟を
ノ 彳 ―ェ 〈‐ェ〈 ゝ \ しなきゃいけない
ゝ、 イ6|ゝ / \ |‐" \_________
く .^| - ゝ
ヒi_,| \l [ ――.|
,,, -/\ \____,|
―'| \ \ |\_
| \ \. / 〉 \ ̄
|__,\ / ̄〕/ 、/ ミミ彡ミミミ彡彡ミミミミ
,,彡彡彡ミミミ彡彡彡彡彡彡
ミミ彡彡゙゙゙゙゙""""""""ヾ彡彡彡
ミミ彡゙ ミミ彡彡
ミミ彡゙ _ _ ミミミ彡
ミミ彡 '´ ̄ヽ '´ ̄` ,|ミミ彡
ミミ彡  ゚̄ ̄' 〈 ゚̄ ̄ .|ミミ彡
彡| | |ミ彡
彡| ´-し`) /|ミ|ミ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ゞ| 、,! |ソ < 改革をあきらめるな!
ヽ '´ ̄ ̄ ̄`ノ / \________
,.|\、 ' /|、
 ̄ ̄| `\.`──'´/ | ̄ ̄`
\ ~\,,/~ /
\/▽\/ >>134
お前は超能力者かまってちゃんかw
だが、透視できてないぞ。ただのかまってちゃんだw 彡ミミミミ))彡彡)))彡)
彡彡゙゙゙゙゙"゙゙""""""ヾ彡彡)
ミ彡゙ .._ _ ミミミ彡
((ミ彡 '´ ̄ヽ '´/ ̄ ` ,|ミミ))
ミ彡 ' ̄ ̄' 〈 ̄ ̄ .|ミミ彡
ミ彡| ) ) | | `( ( |ミ彡
((ミ彡| ( ( -し`) ) )|ミミミ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ゞ| ) ) 、,! 」( ( |ソ < 感動した!
ヽ( ( ̄ ̄ ̄' ) )/ \_______________
,.|\、) ' ( /|、
 ̄ ̄| `\.`──'´/ | ̄ ̄`
\ ~\,,/~ / >>116
まさかとは思うが、>>111のコードで問題が解決したとか思ってないだろうな?
思ってたとしたら、プログラミングセンスなさすぎなんだけど。
解決したと思わないなら、お前自身のコード書いてみ? は?
俺は、seal()では問題は解決しないという意見なんですけど。
解決すると思うんなら、コードで示してねってことで。 >>49のなんとなく動いちゃう問題は>>111で解消するな >>145
問題が解決するってひとが>>111を書いてくれたんだから、
問題が解決しないって思ってるおまえが具体的なコード例を示せよw >>147
めんどくさいなぁ。
君も>>111のコードで良いわけ?
だったらプログラミングセンスなさすぎだわ。 >>149
何を書けって言ってるのかな?
分かるように言ってくれよ。 >>150
>>49のなんとなく動いちゃう問題が>>111で解決しない理由 >>152
seal()書き忘れるか、seal()が必要だって知らない人がメンテとかしたりしたらアウトだから。
書き忘れなきゃOKとか言う?それってtypoしなきゃOKと言うのと変わらないよ。
C++でnew禁止にできるみたいな、絶対に間違いが起こらない方法は無いと思うんだ。
あるなら教えてほしい。
あと、seal()しまくりなのは汚いし見づらいしエレガントじゃないよね。 C++知らない人がメンテとかしたらアウトだか。
>>153への皮肉はこんなもんでいいだろ?w >>154
C++のnew禁止テクニックとseal()の違いがわからないなら、プログラミングセンスなさすぎだよ。 new禁止テクニックのような根本的対策じゃなきゃ意味ないよって言ってるのが
理解できないのか、new禁止テクニックを知らないのか。どっち? >>153
Object.seal()を直接書いて回るとか何の冗談だよ
いまどきJavascriptでそれなりのプロダクトを作るなら
クラス継承の手順なんかも隠蔽したオブジェクト生成関数を用意してそれを使う
センスとか以前の問題じゃね? 書き忘れたら書き間違えで新たなプロパティ扱いになるって言っても
C++はC++で書き忘れたら色んなものが解放されないという言語なのだけれど… >>158
残念ながらそれでも駄目なんだ。
なぜなら、JavaScriptでは実引数の型を強制できないから、hoge({maxLength:10})とかできちゃうし。 >>159
念のため説明すると、new禁止にすると、hoge = new Hoge();でコンパイルエラーになるから
これが根本対策になり得る。 >>160
それはオブジェクトというより今時の大抵の言語にあるハッシュとしての使いかただね
Javascriptは両方とも同じものだけど
ハッシュのキーワードミスって別のプロパティ弄っちゃうとか
Javascript固有の問題じゃないだろう
オブジェクトの生成はプロジェクトで決めた生成方式で統一すればいい オブジェクトの生成ルール決めてるプロジェクトでhoge({maxLength:10})とかやって自爆するのは
C言語で型とか適当でキャストしまくって自爆するのと同じようなものだろw >>162
ルールを決めても、それを言語仕様的に強制できなければ、誰かが間違える可能性が残る。
誰かというのは、将来のメンテナも含めてね。
それと、xの仕様を変えることによって問題を解決するのなら、maxLengthを
プライベート変数にして、setter,getterにした方がいいと思うんだけど、どう? >>163
自爆するのが悪いというのは、typoするのが悪いというのと変わらないよ。 >>164
>>49を見直してこいよ
maxLengthをset/getにしてもmaxlengthを作れちゃうから問題だと言ってるのに >>165
どんな言語でも、言語仕様で強制される以外のルールも守らなければ自爆するって言ってるんだよ?w >>161
ではC++で解放忘れをコンパイルエラーにする方法は? >>166
setterにすれば、>>49はsetMaxLength()とsetMaxlength()のtypoの問題にかわる。 typoうんぬんが開発の生産性と関係あると思ってるヤツは素人 >>167
そんなの当たり前だが、今回の問題と何の関係があるのかな? >>172
setterにすると>>49のコードが具体的にどう変わるか書いてみてくれない? >>177
function hoge(x) { x.setMaxLength() = 100; } // 正
function hoge(x) { x.setMaxlength() = 100; } // 誤
ってこと? 178
悪いが、JavaScriptを知らない奴にまで説明する優しさは持ってない。 >>179
いやおれは普通にこういうことだとおもったんだが
x = { val:0, get maxLength() {return this.val}, set maxLength(v) {this.val = v}}
function hoge(x) { x.maxLength = 100; } // 正
function hoge(x) { x.maxlength = 100; } // 誤
x.maxlengthに間違ったら意味無いよね? ああ、xを実引数にしてhoge()を呼び出すと思ってくれ >>180
俺の話からそんなコードを想像したのなら、そりゃ話は噛み合わないな。 念のため言っとくが(めんどくさいから、これが最後だよ)、その「正」は
正しくないよ。 >>179
>>178はこうか、>>180を意識してたんでちょっと間違った
function hoge(x) { x.setMaxLength(100) } // 正
function hoge(x) { x.setMaxlength(100) } // 誤 >>180-181は実際に動作することを確認済み
いまどきjavascriptのsetter/getterって言ったら>>180だろ >>186
俺のレスをちゃんと読んでるか?
maxLengthをプライベート変数にし、と俺は言ったぞ? >>188
>>180はmaxLengthをプライベート変数(=val)にしてるだろ?
少し日本語不自由じゃないの?具体的なコード書けば勘違いされないのに さすがに今時全部x.setMaxLength(100)みたいにしろとかありえないんでseal()が導入された >>189
x = {var maxLength;}
>>190
俺の感覚だと、sealしたインスタンスを戻すFactoryメソッドを定義して、それを使うのを
ルール化するというほうがもっとあり得ないんだけど、最近じゃseal使うのが流行ってたりするの? >>191
>x = {var maxLength;}
文法エラーです >>192
それは悪かった。今スマホなんで完全なコードを書くのが難しい。
var x = (function() {var maxLength;})();が完全なコードかな。 あと、seal()方式には重大な欠点がもうひとつある。
それは、x内部のtypoを防げないってこと。 >>191
インスタンス生成はフレームワークが提供するのを使うことも多いかな
seal自体は流行ってはいないんじゃないの?ES5サポートしてないブラウザもあるし
でもここは任天堂がこれから提供する独自環境の話をするスレだから、
strict mode前提でsealなんかのES5の機能を積極的に使っていけるんじゃないかなと思ってる >>193
>var x = (function() {var maxLength;})();
意味がわからない。このコードじゃxに入るのはundefined
あんたがやりたいのはこんな感じのことじゃないのか?
var x={maxLength:0,
setMaxLength:function(v){this.maxLength=v},
getMaxLength:function(){return this.maxLength}}; >>194
seal()方式だとx内部にどんなやばいtypoが発生するの? なんか基礎的な知識がなくて回り道しそうだから
お前らに最低限の知識を与えておこう
var hoge = (function() {
var private_variable;
function private_function() {
}
return {
public_function: private_function, // プライベート関数をパブリック関数として公開
}
}());
hoge.public_function();