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

2013/03/20(水) 13:07:40.60
任天堂のゲームはこれまで,CやC++といったプログラミング言語で開発されており,
そのため高いパフォーマンスを発揮していたが,反面,開発に時間がかかっていたという。
このセッションではそれ以外の方法,つまりHTMLやJavaScriptを使ってWii Uの全機能にアクセスしつつ,
より手軽にゲーム開発を行う方法が説明されるようだ。
http://www.4gamer.net/games/999/G999905/20130316001/
129デフォルトの名無しさん
垢版 |
2013/03/21(木) 23:36:37.73
企業のお荷物
130デフォルトの名無しさん
垢版 |
2013/03/21(木) 23:37:08.22
>>128
ねぇねぇ、辞表書く準備できた?
2013/03/21(木) 23:38:06.72
>>130
なんだ。やっぱりただのかまってちゃんだったかw
2013/03/21(木) 23:39:21.59
        , -=-‐〜--へ__,,- 、
      <        ヽ   ゝ
       ノ    二、___ゝ,/_/ヘ  |
      |    ヲ          | |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      |    ┤  ===、 , ==|  | <  切り捨てられる覚悟を
     ノ   彳  ―ェ 〈‐ェ〈  ゝ  \     しなきゃいけない
    ゝ、  イ6|ゝ    / \ |‐"     \_________
      く   .^|        - ゝ
       ヒi_,| \l  [ ――.|
        ,,, -/\  \____,|
     ―'|  \  \    |\_
       |   \  \.  / 〉 \ ̄
        |__,\  / ̄〕/ 、/
2013/03/21(木) 23:40:01.74
パソナルームw
134デフォルトの名無しさん
垢版 |
2013/03/21(木) 23:57:05.60
>>131
どうして手先が震えてるの?
135デフォルトの名無しさん
垢版 |
2013/03/21(木) 23:58:07.39
Cプログラマーを声高らかに切り捨てる
136デフォルトの名無しさん
垢版 |
2013/03/22(金) 00:02:41.00
  ミミ彡ミミミ彡彡ミミミミ
,,彡彡彡ミミミ彡彡彡彡彡彡
ミミ彡彡゙゙゙゙゙""""""""ヾ彡彡彡
ミミ彡゙         ミミ彡彡
ミミ彡゙ _    _   ミミミ彡
ミミ彡 '´ ̄ヽ  '´ ̄` ,|ミミ彡
ミミ彡  ゚̄ ̄' 〈 ゚̄ ̄ .|ミミ彡
 彡|     |       |ミ彡
 彡|   ´-し`)  /|ミ|ミ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ゞ|     、,!     |ソ  <  改革をあきらめるな!
   ヽ '´ ̄ ̄ ̄`ノ /     \________
    ,.|\、    ' /|、
 ̄ ̄| `\.`──'´/ | ̄ ̄`
    \ ~\,,/~  /
     \/▽\/
137デフォルトの名無しさん
垢版 |
2013/03/22(金) 00:03:25.35
任天堂を切り捨てろ!
2013/03/22(金) 00:08:56.68
>>134
お前は超能力者かまってちゃんかw
だが、透視できてないぞ。ただのかまってちゃんだw
139デフォルトの名無しさん
垢版 |
2013/03/22(金) 00:13:16.05
    彡ミミミミ))彡彡)))彡)
   彡彡゙゙゙゙゙"゙゙""""""ヾ彡彡)
   ミ彡゙ .._    _   ミミミ彡
  ((ミ彡 '´ ̄ヽ '´/ ̄ ` ,|ミミ))
  ミ彡  ' ̄ ̄'  〈 ̄ ̄ .|ミミ彡
  ミ彡|  ) ) | | `( ( |ミ彡
  ((ミ彡|  ( ( -し`) ) )|ミミミ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ゞ|  ) )  、,! 」( ( |ソ   < 感動した!
     ヽ( ( ̄ ̄ ̄' ) )/      \_______________
     ,.|\、)    ' ( /|、
   ̄ ̄| `\.`──'´/ | ̄ ̄`
      \ ~\,,/~  /
2013/03/22(金) 00:14:22.37
左翼はCでいい思いをしている
2013/03/22(金) 00:15:25.02
サヨ認定キター
142デフォルトの名無しさん
垢版 |
2013/03/22(金) 00:17:21.20
ひっくり返せ
2013/03/22(金) 02:08:23.95
>>116
まさかとは思うが、>>111のコードで問題が解決したとか思ってないだろうな?
思ってたとしたら、プログラミングセンスなさすぎなんだけど。
解決したと思わないなら、お前自身のコード書いてみ?
2013/03/22(金) 02:13:12.87
文句言う前に先にお前が書けよ(笑)
2013/03/22(金) 02:19:00.97
は?
俺は、seal()では問題は解決しないという意見なんですけど。
解決すると思うんなら、コードで示してねってことで。
2013/03/22(金) 02:20:47.12
>>49のなんとなく動いちゃう問題は>>111で解消するな
2013/03/22(金) 02:21:50.29
>>145
問題が解決するってひとが>>111を書いてくれたんだから、
問題が解決しないって思ってるおまえが具体的なコード例を示せよw
2013/03/22(金) 02:23:15.62
>>147
めんどくさいなぁ。
君も>>111のコードで良いわけ?
だったらプログラミングセンスなさすぎだわ。
2013/03/22(金) 02:24:25.58
>>148
早く書け
2013/03/22(金) 02:26:13.63
>>149
何を書けって言ってるのかな?
分かるように言ってくれよ。
2013/03/22(金) 02:27:14.09
5分程度で書けない奴はプログラミングのセンス無い
2013/03/22(金) 02:27:52.27
>>150
>>49のなんとなく動いちゃう問題が>>111で解決しない理由
2013/03/22(金) 02:36:41.68
>>152
seal()書き忘れるか、seal()が必要だって知らない人がメンテとかしたりしたらアウトだから。
書き忘れなきゃOKとか言う?それってtypoしなきゃOKと言うのと変わらないよ。
C++でnew禁止にできるみたいな、絶対に間違いが起こらない方法は無いと思うんだ。
あるなら教えてほしい。
あと、seal()しまくりなのは汚いし見づらいしエレガントじゃないよね。
2013/03/22(金) 02:41:19.71
C++知らない人がメンテとかしたらアウトだか。

>>153への皮肉はこんなもんでいいだろ?w
2013/03/22(金) 02:48:54.79
>>154
C++のnew禁止テクニックとseal()の違いがわからないなら、プログラミングセンスなさすぎだよ。
2013/03/22(金) 02:54:05.41
new禁止テクニックの話は一言もしてないw
2013/03/22(金) 02:57:17.19
new禁止テクニックのような根本的対策じゃなきゃ意味ないよって言ってるのが
理解できないのか、new禁止テクニックを知らないのか。どっち?
2013/03/22(金) 03:00:41.45
>>153
Object.seal()を直接書いて回るとか何の冗談だよ
いまどきJavascriptでそれなりのプロダクトを作るなら
クラス継承の手順なんかも隠蔽したオブジェクト生成関数を用意してそれを使う
センスとか以前の問題じゃね?
2013/03/22(金) 03:03:03.19
書き忘れたら書き間違えで新たなプロパティ扱いになるって言っても
C++はC++で書き忘れたら色んなものが解放されないという言語なのだけれど…
2013/03/22(金) 03:06:23.82
>>158
残念ながらそれでも駄目なんだ。
なぜなら、JavaScriptでは実引数の型を強制できないから、hoge({maxLength:10})とかできちゃうし。
2013/03/22(金) 03:08:39.66
>>159
念のため説明すると、new禁止にすると、hoge = new Hoge();でコンパイルエラーになるから
これが根本対策になり得る。
2013/03/22(金) 03:13:08.67
>>160
それはオブジェクトというより今時の大抵の言語にあるハッシュとしての使いかただね
Javascriptは両方とも同じものだけど
ハッシュのキーワードミスって別のプロパティ弄っちゃうとか
Javascript固有の問題じゃないだろう
オブジェクトの生成はプロジェクトで決めた生成方式で統一すればいい
2013/03/22(金) 03:23:05.56
オブジェクトの生成ルール決めてるプロジェクトでhoge({maxLength:10})とかやって自爆するのは
C言語で型とか適当でキャストしまくって自爆するのと同じようなものだろw
2013/03/22(金) 03:39:01.27
>>162
ルールを決めても、それを言語仕様的に強制できなければ、誰かが間違える可能性が残る。
誰かというのは、将来のメンテナも含めてね。
それと、xの仕様を変えることによって問題を解決するのなら、maxLengthを
プライベート変数にして、setter,getterにした方がいいと思うんだけど、どう?
2013/03/22(金) 03:41:01.60
>>163
自爆するのが悪いというのは、typoするのが悪いというのと変わらないよ。
2013/03/22(金) 03:44:19.64
>>164
>>49を見直してこいよ
maxLengthをset/getにしてもmaxlengthを作れちゃうから問題だと言ってるのに
2013/03/22(金) 03:47:42.26
>>165
どんな言語でも、言語仕様で強制される以外のルールも守らなければ自爆するって言ってるんだよ?w
2013/03/22(金) 04:22:59.02
JavaScriptでnew禁止するのは簡単。
2013/03/22(金) 05:15:32.20
>>161
ではC++で解放忘れをコンパイルエラーにする方法は?
2013/03/22(金) 06:18:05.68
どんなに優れた言語でもウンコードは書ける
2013/03/22(金) 06:44:15.35
TSRが書けなくなるの?
2013/03/22(金) 06:48:12.33
>>166
setterにすれば、>>49はsetMaxLength()とsetMaxlength()のtypoの問題にかわる。
2013/03/22(金) 06:50:37.63
typoうんぬんが開発の生産性と関係あると思ってるヤツは素人
2013/03/22(金) 06:50:47.43
>>167
そんなの当たり前だが、今回の問題と何の関係があるのかな?
2013/03/22(金) 06:52:03.00
>>169
ない。
2013/03/22(金) 06:52:37.46
>>172
setterにすると>>49のコードが具体的にどう変わるか書いてみてくれない?
2013/03/22(金) 06:54:19.46
>>176
書いたじゃん。
理解できないのか?
2013/03/22(金) 07:01:29.20
>>177
function hoge(x) { x.setMaxLength() = 100; } // 正
function hoge(x) { x.setMaxlength() = 100; } // 誤
ってこと?
2013/03/22(金) 07:06:04.93
178
悪いが、JavaScriptを知らない奴にまで説明する優しさは持ってない。
2013/03/22(金) 07:08:00.09
>>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に間違ったら意味無いよね?
2013/03/22(金) 07:13:44.71
ああ、xを実引数にしてhoge()を呼び出すと思ってくれ
2013/03/22(金) 07:16:02.22
>>180
俺の話からそんなコードを想像したのなら、そりゃ話は噛み合わないな。
2013/03/22(金) 07:18:24.28
念のため言っとくが(めんどくさいから、これが最後だよ)、その「正」は
正しくないよ。
2013/03/22(金) 07:18:56.96
コード書けないアホが無理するから...
2013/03/22(金) 07:19:44.91
>>179
>>178はこうか、>>180を意識してたんでちょっと間違った
function hoge(x) { x.setMaxLength(100) } // 正
function hoge(x) { x.setMaxlength(100) } // 誤
2013/03/22(金) 07:25:16.82
>>180-181は実際に動作することを確認済み
いまどきjavascriptのsetter/getterって言ったら>>180だろ
2013/03/22(金) 07:29:28.53
実際にコード例を示さない奴が偉そうだなw
2013/03/22(金) 07:39:45.43
>>186
俺のレスをちゃんと読んでるか?
maxLengthをプライベート変数にし、と俺は言ったぞ?
2013/03/22(金) 07:55:08.80
>>188
>>180はmaxLengthをプライベート変数(=val)にしてるだろ?
少し日本語不自由じゃないの?具体的なコード書けば勘違いされないのに
2013/03/22(金) 07:56:57.88
さすがに今時全部x.setMaxLength(100)みたいにしろとかありえないんでseal()が導入された
2013/03/22(金) 08:04:07.38
>>189
x = {var maxLength;}

>>190
俺の感覚だと、sealしたインスタンスを戻すFactoryメソッドを定義して、それを使うのを
ルール化するというほうがもっとあり得ないんだけど、最近じゃseal使うのが流行ってたりするの?
2013/03/22(金) 08:05:45.83
>>191
>x = {var maxLength;}
文法エラーです
2013/03/22(金) 08:19:38.94
>>192
それは悪かった。今スマホなんで完全なコードを書くのが難しい。
var x = (function() {var maxLength;})();が完全なコードかな。
2013/03/22(金) 08:29:00.54
あと、seal()方式には重大な欠点がもうひとつある。
それは、x内部のtypoを防げないってこと。
2013/03/22(金) 08:30:30.90
>>191
インスタンス生成はフレームワークが提供するのを使うことも多いかな
seal自体は流行ってはいないんじゃないの?ES5サポートしてないブラウザもあるし
でもここは任天堂がこれから提供する独自環境の話をするスレだから、
strict mode前提でsealなんかのES5の機能を積極的に使っていけるんじゃないかなと思ってる
2013/03/22(金) 08:40:49.75
>>193
>var x = (function() {var maxLength;})();
意味がわからない。このコードじゃxに入るのはundefined

あんたがやりたいのはこんな感じのことじゃないのか?
var x={maxLength:0,
setMaxLength:function(v){this.maxLength=v},
getMaxLength:function(){return this.maxLength}};
2013/03/22(金) 08:41:57.22
>>195
なるほど、そういうことか。了解。
2013/03/22(金) 08:42:48.67
>>196
悪いけど、昼休みまで待ってくれ。
2013/03/22(金) 08:44:05.27
>>194
seal()方式だとx内部にどんなやばいtypoが発生するの?
2013/03/22(金) 10:23:09.92
なんか基礎的な知識がなくて回り道しそうだから
お前らに最低限の知識を与えておこう

var hoge = (function() {
 var private_variable;

 function private_function() {
 }

 return {
  public_function: private_function, // プライベート関数をパブリック関数として公開
 }
}());

hoge.public_function();
201デフォルトの名無しさん
垢版 |
2013/03/22(金) 11:03:48.66
今やJavaScriptはここまで来た
http://gigazine.net/news/20130322-firefox-asmjs/
2013/03/22(金) 11:10:02.18
OdinMonkeyっておぢんモンキーでいいの?
2013/03/22(金) 11:37:19.10
>>200
ありがと。

>>196
それだと、maxLengthを隠蔽できてない。

newを使う場合はこう。
var Foo = function() {var maxLength;};
Foo.prototype.setMaxLength = function(val) {maxLength = val;}
Foo.prototype.getMaxLength = function() {return maxLength;};

var x = new Foo();
console.log(x.maxLength);    // => undefined
x.setMaxLength(100);
console.log(x.getMaxLength()); // => 100
console.log(x.maxLength);    // => undefined
x.maxLength = 200;        // => can't change Foo's property
console.log(x.getMaxLength()); // => 100
try {
  console.log(x.getMaxlength());
} catch (e) {
  console.log(e.message);
}
2013/03/22(金) 11:38:26.18
newを使わない場合はこう。

var x = {};
(function(obj) {
  var maxLength;
  function getMaxLength() { return maxLength; }
  function setMaxLength(val) { maxLength = val; }
  obj.getMaxLength = getMaxLength;
  obj.setMaxLength = setMaxLength;
})(x);

console.log(x.maxLength);    // => undefined
x.setMaxLength(100);
console.log(x.getMaxLength()); // => 100
console.log(x.maxLength);    // => undefined
x.maxLength = 200;        // => can't change Foo's property
console.log(x.getMaxLength()); // => 100
try {
  console.log(x.getMaxlength());
} catch (e) {
  console.log(e.message);
}
2013/03/22(金) 11:54:34.47
それでは、
obj.setMaxLength(1) を
obj.MaxLength = 1 と
間違えてしまうことを防げない。
2013/03/22(金) 11:55:25.08
>>203
グローバル変数に隠蔽とは斬新だなw
2013/03/22(金) 11:59:36.73
JavaScriptにグローバル変数は存在しない。
2013/03/22(金) 12:03:10.04
>>206
実際のプロダクトコードでは、複数階層の名前空間に入れるけどね。
2013/03/22(金) 12:08:07.49
>>208
ためしに
var y = new Foo();
y.setMaxLength(200);
x.getMaxLength();
ってやってみたら?
2013/03/22(金) 12:21:19.07
>>209
どうなった?
2013/03/22(金) 12:40:55.14
>>210
あぁ、203に合わせると最後は
console.log(x.getMaxLength());


とりあえずやってみてよ?
2013/03/22(金) 13:16:53.40
基本的にJavaScriptでは「プライベート変数」はあきらめたほうがいいよ。
newも使わない方がいい。
男なら、publicなプロパティだね。
で、結局typoの問題は解決できないけど、それがJavaScriptってもんだ。
嫌ならTypeScriptがいいんじゃね(使ったことないから知らんけど)。
2013/03/22(金) 13:25:00.70
そもそもタイポと戦えないような奴はプログラマになっちゃいかん
2013/03/22(金) 13:26:27.37
そう、それがたとえ他人の書いたタイポであってもね
2013/03/22(金) 13:30:07.16
タイポは神様からの贈り物なんだよ
2013/03/22(金) 13:46:05.31
Javaをやってると奴隷とかドカタとか煽れるけど、スペルミスなんて、JavaやC#なら入力した
瞬間にエディタが教えてくれるに、それを人間が目で探すとか、動的型の言語のプログラマは
マシーンですか。
2013/03/22(金) 13:59:19.86
JSに限った話じゃないけどテストを書けば問題ないってのは机上の空論だな
>>203もテスト(らしきもの)を書いているけど、結局のところなんのチェックも出来てない訳だし
(203はそろそろ自分の間違いに気がついただろうか?)
2013/03/22(金) 14:25:59.22
>>216
チェックツールあるだろw
2013/03/22(金) 15:53:13.12
JSか
2013/03/22(金) 15:54:14.44
>>203
だからこれは何なんだよw
>var Foo = function() {var maxLength;};
>Foo.prototype.setMaxLength = function(val) {maxLength = val;}
>Foo.prototype.getMaxLength = function() {return maxLength;};
意味がわからんぞw
偉そうなこというまえに基礎からやりなおしてこいよw
2013/03/22(金) 15:57:38.83
>>216
打ってる最中に画面見てないのか?
大文字小文字も規約決めてるだろうし…
2013/03/22(金) 16:02:52.03
l-1とか0-Oとか他人が打ち間違ったのを尻拭いする任務を与えよう
2013/03/22(金) 16:05:52.53
真に恐ろしいのは目の前で裸で立ちすくむソイツではなく
どこに潜んでいるかわからない見えないアイツ
2年前に学ばなかったのか
2013/03/22(金) 16:09:28.79
>>204とか
x.getMaxLength()をx.getMaxLengthってミスしてもとりあえず動いてしまうように見えるし最悪w
2013/03/22(金) 16:24:36.78
JavaScriptが開発効率高いなんてド素人の妄想
2013/03/22(金) 16:27:52.82
>>221
やっぱりスペルミスは目を皿のようにして確認してるのか。
2013/03/22(金) 16:29:34.79
安い底辺プログラマが使えるから開発コスト下げられるとか妄想してるんだろうけど
2013/03/22(金) 16:30:04.30
上のほうが他人のタイポがどうこう言ってる人がいるけど、
自分ならスペルミスしないってのもそうとう凄いと思う。
レスを投稿する

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

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