実際にJavaScriptを書いている人の情報交換所です。
プログラミング既習者専用です。初心者の方はご遠慮下さい。
玄人の方、歓迎致します。
探検
JavaScript情報交換所(プログラミング既習者専用) [無断転載禁止]©2ch.net
1デフォルトの名無しさん
2015/12/07(月) 07:26:33.87ID:NYLGCW0V182デフォルトの名無しさん
2016/05/16(月) 23:37:53.21ID:oaJCE3x/183デフォルトの名無しさん
2016/05/17(火) 02:50:45.73ID:rVqZFYUE > 弾かれる対象を確認するためには、whileの1行を見れば済む。
一行で書けば同じでしょ?
弾かれる対象を確認するためには、どこかの1行を見れば済む。
一行で書けば同じでしょ?
弾かれる対象を確認するためには、どこかの1行を見れば済む。
184デフォルトの名無しさん
2016/05/17(火) 03:25:50.15ID:rVqZFYUE それに一行に複数の意味を込めたらだめだよw
185デフォルトの名無しさん
2016/05/17(火) 09:05:07.26ID:sIex+koZ >>180
確かに個人的にはそういうコードを毎回書いても楽しいから苦にならないのだが、
何もそうしろと言いたかったわけではなく、一般的に利用するときは
ただそういうフレームワークを読み込んで、各リソースURLに「#priority」を付けるだけ
ってのは十分労力の割に結果がデカイと思うよ。
WebやJSの歴史見ても、「面倒なことは事はやらない」ってより、
「面倒なこと、汚いことは事はライブラリやフレームワークがやる」だった。
確かに個人的にはそういうコードを毎回書いても楽しいから苦にならないのだが、
何もそうしろと言いたかったわけではなく、一般的に利用するときは
ただそういうフレームワークを読み込んで、各リソースURLに「#priority」を付けるだけ
ってのは十分労力の割に結果がデカイと思うよ。
WebやJSの歴史見ても、「面倒なことは事はやらない」ってより、
「面倒なこと、汚いことは事はライブラリやフレームワークがやる」だった。
186デフォルトの名無しさん
2016/05/17(火) 13:34:21.32ID:3yAYzGW4 >>167は null, '' しか考慮していない時点でダメ
"123hoge" を撥ねない時点で期待通りに動かない(自然数以外も代入されうる)
"123hoge" を撥ねない時点で期待通りに動かない(自然数以外も代入されうる)
187デフォルトの名無しさん
2016/05/17(火) 14:54:21.35ID:bcEq7422 一番ヤバイのはnが文字列であることだろう
後々必ず問題を引き起こす
後々必ず問題を引き起こす
188デフォルトの名無しさん
2016/05/17(火) 17:31:09.24ID:ZRrmZHfn >>167は仕様理解者に恨みでもあるのか
「JavaScript知ってる俺カッケー」とか偏見にしても度が過ぎていると思うが
「JavaScript知ってる俺カッケー」とか偏見にしても度が過ぎていると思うが
189デフォルトの名無しさん
2016/05/17(火) 19:36:20.35ID:lpSSxhpK 分からんな
演算子による暗黙の型変換を一通り覚えるのは
中級者への登竜門でそれほどハッキーなこととは思えん
Dateのインスタンスだけはプリミティブ化されるとき、
valueOfよりもtoStringの方が先に呼ばれるみたいなことを
前提なコーディングは流石に万人向けではないと思うが
演算子による暗黙の型変換を一通り覚えるのは
中級者への登竜門でそれほどハッキーなこととは思えん
Dateのインスタンスだけはプリミティブ化されるとき、
valueOfよりもtoStringの方が先に呼ばれるみたいなことを
前提なコーディングは流石に万人向けではないと思うが
190デフォルトの名無しさん
2016/05/17(火) 22:07:15.55ID:XBBLWA5H 暗黙の型変換は標準メソッドでも行われている事だし、それを覚えずしてJavaScriptを使うっていうのはなあ..
>>158の問題点は ToInt32 されるから 9007199254740991"|0 === -1 になる事だが、>>167の問題に比べたら些細な問題だ
これは Math.floor を使えば解決できる
do {
var n = Math.floor(pronpt('自然数'));
} while (n >= 0)
Math.floor() の暗黙の型変換(ToNumber)が「JavaScript特有」な論理をふりまくなら Math.floor(Number(pronpt('自然数'))) としてもいいが、正直冗長だと思う
>>158の問題点は ToInt32 されるから 9007199254740991"|0 === -1 になる事だが、>>167の問題に比べたら些細な問題だ
これは Math.floor を使えば解決できる
do {
var n = Math.floor(pronpt('自然数'));
} while (n >= 0)
Math.floor() の暗黙の型変換(ToNumber)が「JavaScript特有」な論理をふりまくなら Math.floor(Number(pronpt('自然数'))) としてもいいが、正直冗長だと思う
191デフォルトの名無しさん
2016/05/17(火) 23:41:38.85ID:q3gkuA0r >>185
> 「面倒なこと、汚いことは事はライブラリやフレームワークがやる」だった。
正確に言えば、「やるとなると面倒だが、普通はたいていの人が必要とすることは、ライブラリやフレームワークがやる」だ。
これはWebに関わらずプログラミング一般だ。それがライブラリ/フレームワークの存在意義だし。
> 各リソースURLに「#priority」を付けるだけ
になっているライブラリ等が既にあるのかい?それなら確かに導入する意味がある。
それはどれだか教えてくれないか?
(ただ、多分俺の環境では実際に導入することは出来ないが)
いずれにしても、「がんばってまでやりきる」為の言語ではなく、「がんばらずにやれる範囲でサクッとやる」なんだよ。
既にライブラリやフレームワークがあるのなら、「がんばらずにやれる」のでサクッといただきだ。
そういう奴らが多い+プロプライエタリには極度にしにくいから結果的にいろいろ乱立することになるが、
それはある意味正しい姿といえる。
少し無駄や気に入らない部分があっても、自前で作り直すのではなく、面倒だからそのまま使う、だ。
その1メソッドの中での最適化で勝負するのではなく、
もっと大きい範囲での最適化(サクッと結果が出せるか)で勝負するんだよ。
あと追加。
https://developer.mozilla.org/en-US/docs/Web/Events/scroll
scroll の e に delta がない。
だから糞遅い scrollTop の問い合わせがいちいち必要になる。
.NETだと e.delta でどっち向きにどれだけスクロールしたかが取れる。
同様のことはmousemoveにも言えるのだけど、
あっちは clientX とかがあるから、DOMクエリしなくても追跡できる。
scrollはDOMクエリを強要されるのが辛い。
サンプルも window.scrollYを取っているけど、アレは実は結構重い。
そしてそれがサンプルにあるように、大抵の場合はスクロール位置の確認が必要になる。
> 「面倒なこと、汚いことは事はライブラリやフレームワークがやる」だった。
正確に言えば、「やるとなると面倒だが、普通はたいていの人が必要とすることは、ライブラリやフレームワークがやる」だ。
これはWebに関わらずプログラミング一般だ。それがライブラリ/フレームワークの存在意義だし。
> 各リソースURLに「#priority」を付けるだけ
になっているライブラリ等が既にあるのかい?それなら確かに導入する意味がある。
それはどれだか教えてくれないか?
(ただ、多分俺の環境では実際に導入することは出来ないが)
いずれにしても、「がんばってまでやりきる」為の言語ではなく、「がんばらずにやれる範囲でサクッとやる」なんだよ。
既にライブラリやフレームワークがあるのなら、「がんばらずにやれる」のでサクッといただきだ。
そういう奴らが多い+プロプライエタリには極度にしにくいから結果的にいろいろ乱立することになるが、
それはある意味正しい姿といえる。
少し無駄や気に入らない部分があっても、自前で作り直すのではなく、面倒だからそのまま使う、だ。
その1メソッドの中での最適化で勝負するのではなく、
もっと大きい範囲での最適化(サクッと結果が出せるか)で勝負するんだよ。
あと追加。
https://developer.mozilla.org/en-US/docs/Web/Events/scroll
scroll の e に delta がない。
だから糞遅い scrollTop の問い合わせがいちいち必要になる。
.NETだと e.delta でどっち向きにどれだけスクロールしたかが取れる。
同様のことはmousemoveにも言えるのだけど、
あっちは clientX とかがあるから、DOMクエリしなくても追跡できる。
scrollはDOMクエリを強要されるのが辛い。
サンプルも window.scrollYを取っているけど、アレは実は結構重い。
そしてそれがサンプルにあるように、大抵の場合はスクロール位置の確認が必要になる。
192デフォルトの名無しさん
2016/05/17(火) 23:42:45.65ID:3NFQlF5/ Math.floorを使ってもdoubleで扱える範囲でないと仕方ないのは変わりない。
入力が適切に処理できる範囲に収まっているか確認し、大きすぎます等の案内を出す必要がある
入力が適切に処理できる範囲に収まっているか確認し、大きすぎます等の案内を出す必要がある
193デフォルトの名無しさん
2016/05/18(水) 00:08:03.84ID:jjsucSg3 >>185
あと、ついでならMDNもお願いしていい?
1. https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date
内のメソッド parse について、
× > JavaScript で日付を表す文字列を解釈して、地方時で 1970 年 1 月 1 日 00:00:00 から経過したミリ秒を表す数値を返します。
○ UTCで
あと、ついでならMDNもお願いしていい?
1. https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date
内のメソッド parse について、
× > JavaScript で日付を表す文字列を解釈して、地方時で 1970 年 1 月 1 日 00:00:00 から経過したミリ秒を表す数値を返します。
○ UTCで
194デフォルトの名無しさん
2016/05/18(水) 00:09:05.81ID:jjsucSg3 >>185
2. https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test
test がさも search や exec の代りの高速メソッドとして使えるように書いてある。
これは半分事実なのだが、実際はtestはexecを1回やるだけなので、RegExpをバッファするとバグる。
具体的には以下。2回の同じ入力の呼び出しに対し、出力が異なる。
(testinputはそのページの使用例の出力先をconsole.logに書き換えただけの物)
function testinput(re, str) {
var midstring;
if ( re.test(str) ) {
midstring = " contains ";
} else {
midstring = " does not contain ";
}
console.log(str + midstring + re.source);
}
var rexp = /a/g;
var str = 'abc';
testinput(rexp,str); // abc contains a
testinput(rexp,str); // abc does not contain a
これは完全に落とし穴掘っているだけで、MDNだけ読んでいても気づかない。
だから「testは実際はexecを1回起動するだけです。詳細はexecを確認してください。」みたいな誘導が必要。
testに渡す正規表現に g つけんな!ってのはあるけど、
管理上、同じ正規表現を使いまわししたいときがあって、(その正規表現はプログラム内で1箇所にしたい)
そのときに g が付いているやつがあってバグった。
だから、「gつけないでください」という誘導でも実質的にはいいのだけど、多分MDNの雰囲気とは合わない。
2. https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test
test がさも search や exec の代りの高速メソッドとして使えるように書いてある。
これは半分事実なのだが、実際はtestはexecを1回やるだけなので、RegExpをバッファするとバグる。
具体的には以下。2回の同じ入力の呼び出しに対し、出力が異なる。
(testinputはそのページの使用例の出力先をconsole.logに書き換えただけの物)
function testinput(re, str) {
var midstring;
if ( re.test(str) ) {
midstring = " contains ";
} else {
midstring = " does not contain ";
}
console.log(str + midstring + re.source);
}
var rexp = /a/g;
var str = 'abc';
testinput(rexp,str); // abc contains a
testinput(rexp,str); // abc does not contain a
これは完全に落とし穴掘っているだけで、MDNだけ読んでいても気づかない。
だから「testは実際はexecを1回起動するだけです。詳細はexecを確認してください。」みたいな誘導が必要。
testに渡す正規表現に g つけんな!ってのはあるけど、
管理上、同じ正規表現を使いまわししたいときがあって、(その正規表現はプログラム内で1箇所にしたい)
そのときに g が付いているやつがあってバグった。
だから、「gつけないでください」という誘導でも実質的にはいいのだけど、多分MDNの雰囲気とは合わない。
195デフォルトの名無しさん
2016/05/18(水) 00:33:18.17ID:OcMV4DaZ >>192
そりゃそうだが、随分面倒な処理を要求するんだな
Number 型全体が IEEE 754 の制約を受けるわけだが、制約外の数値を正しく検出するようにしろという事か
対処療法的には入力文字列を正しくパースして数値比較する
根本的には ECMAScript のビルトインオブジェクト全体を書き換える必要があるわけだが、そこまでやる必要あるのかね
そりゃそうだが、随分面倒な処理を要求するんだな
Number 型全体が IEEE 754 の制約を受けるわけだが、制約外の数値を正しく検出するようにしろという事か
対処療法的には入力文字列を正しくパースして数値比較する
根本的には ECMAScript のビルトインオブジェクト全体を書き換える必要があるわけだが、そこまでやる必要あるのかね
196デフォルトの名無しさん
2016/05/18(水) 01:11:57.83ID:r9bj4L60 >>195
君の言う問題点とやらを解消するためにはそこまでやる必要があるというお話さ
そしてそんなに難しく考えなくともdoubleとして受け取るのならNumber.MAX_SAFE_INTEGERを超えてないかどうかチェックすればいいだけ
君の言う問題点とやらを解消するためにはそこまでやる必要があるというお話さ
そしてそんなに難しく考えなくともdoubleとして受け取るのならNumber.MAX_SAFE_INTEGERを超えてないかどうかチェックすればいいだけ
197デフォルトの名無しさん
2016/05/18(水) 22:06:18.60ID:Y5c0aQW+ >>196
なるほど、理解した
なるほど、理解した
198デフォルトの名無しさん
2016/05/18(水) 22:43:30.32ID:Y5c0aQW+ 修正版
do {
var n = Math.floor(prompt(Number.MAX_SAFE_INTEGER + '以下の自然数を入力してください'));
if (!n) {
alert('数値となる自然数を入力してください');
} else if (n < 0) {
alert('負の数は指定できません');
} else if (n > Number.MAX_SAFE_INTEGER) {
alert(Number.MAX_SAFE_INTEGER + '以上の数は指定できません');
}
} while (!n || n < 0 || n > Number.MAX_SAFE_INTEGER);
do {
var n = Math.floor(prompt(Number.MAX_SAFE_INTEGER + '以下の自然数を入力してください'));
if (!n) {
alert('数値となる自然数を入力してください');
} else if (n < 0) {
alert('負の数は指定できません');
} else if (n > Number.MAX_SAFE_INTEGER) {
alert(Number.MAX_SAFE_INTEGER + '以上の数は指定できません');
}
} while (!n || n < 0 || n > Number.MAX_SAFE_INTEGER);
199デフォルトの名無しさん
2016/05/18(水) 22:49:59.30ID:JiGf9hjC 誰が完璧な自然数受け付けのロジックを長々と書けといった……
そこまでするなら多長倍数ライブラリ使ったら?
そこまでするなら多長倍数ライブラリ使ったら?
200デフォルトの名無しさん
2016/05/18(水) 23:38:34.48ID:Y5c0aQW+201デフォルトの名無しさん
2016/05/19(木) 03:19:33.36ID:tfaQOE9Q ってか、キャストしてる時点で型がどうのではなく、型変換してるからな。
普通に、/^[1-9][0-9]*$/するのがいいんじゃねーの?入力は文字列なんだから。
どう考えても、Math.floorに文字列を渡す理由にならん。先頭か末尾に空白あるときはどうなるんだっけ?とか悩むじゃん。
integer.Parse通さないと数字にならないどころか、例外すら発生するのがまともな型のある言語。
普通に、/^[1-9][0-9]*$/するのがいいんじゃねーの?入力は文字列なんだから。
どう考えても、Math.floorに文字列を渡す理由にならん。先頭か末尾に空白あるときはどうなるんだっけ?とか悩むじゃん。
integer.Parse通さないと数字にならないどころか、例外すら発生するのがまともな型のある言語。
202デフォルトの名無しさん
2016/05/19(木) 04:45:29.52ID:3i7lekC+ >>201
JavaScriptは型違いをTypeErrorとせず、暗黙の型変換をする言語なんだから型変換で正しいんだよ
JavaScriptは型違いをTypeErrorとせず、暗黙の型変換をする言語なんだから型変換で正しいんだよ
203デフォルトの名無しさん
2016/05/19(木) 05:59:57.75ID:tfaQOE9Q >>202
知ってるよ…だから、型のアノテーションがどうだとか、型を定義すべきだって話が眉唾と言うか、良い所全部殺すなって思うんよね。
知ってるよ…だから、型のアノテーションがどうだとか、型を定義すべきだって話が眉唾と言うか、良い所全部殺すなって思うんよね。
204デフォルトの名無しさん
2016/05/19(木) 07:31:01.14ID:l0qmM6vP205デフォルトの名無しさん
2016/05/19(木) 08:30:40.64ID:F9dbx1t6 JavaScriptは型付き言語でないわけで、そこに型付きな考え方を付加させても、各々のポリシーでいかようにでもスタイルが変化するって事をわかってない感じ
また、型付き言語であっても変数に代入されるまでは型が確定されないわけで経過処理で型変換を挟んではいけないわけではない
また、型付き言語であっても変数に代入されるまでは型が確定されないわけで経過処理で型変換を挟んではいけないわけではない
206デフォルトの名無しさん
2016/05/19(木) 13:24:53.83ID:qyR8CUMd 入力は限られてるし、取り扱いを間違っても原則ブラウザがクラッシュしたりすることはない。
それどころか不意に関数エラーが出ても、こういったイベントドリブンな場合は、何も問題なく復帰できることも多い。
最悪詰まっても、文章は読める。そこが所謂低レベル言語との違い。
それどころか不意に関数エラーが出ても、こういったイベントドリブンな場合は、何も問題なく復帰できることも多い。
最悪詰まっても、文章は読める。そこが所謂低レベル言語との違い。
207デフォルトの名無しさん
2016/05/19(木) 13:36:54.99ID:Gndv5tvj LLマンセー
208デフォルトの名無しさん
2016/05/19(木) 14:55:40.45ID:XceO64sZ 何も自慢できない男の人って可哀想(;;)
209デフォルトの名無しさん
2016/06/09(木) 09:39:33.79ID:FTTkP1ld arrow function の引数の丸括弧を省略する記法嫌いな人って多くないのかな
const fn = arg => { console.log(arg); };
const fn = (arg)=>{ console.log(arg); };
const fn = arg => { console.log(arg); };
const fn = (arg)=>{ console.log(arg); };
210デフォルトの名無しさん
2016/06/09(木) 13:20:53.39ID:bsniAtVU 時と場合によるだろう。
この場合は、あった方が良い
この場合は、あった方が良い
211デフォルトの名無しさん
2016/06/09(木) 13:43:16.42ID:QTm6YzLa212デフォルトの名無しさん
2016/06/09(木) 13:43:46.11ID:QTm6YzLa ただ雑談したかっただけ?
213デフォルトの名無しさん
2016/06/09(木) 14:51:10.11ID:eWu1TzV4214デフォルトの名無しさん
2016/06/09(木) 16:09:58.83ID:bsniAtVU >>213
そういうのは、ミニファイツールでOKでしょう。
コーディング中は、原則省略すべきじゃない。
GitHubで公開するソースも省略するべきじゃない。
可読性を下げてはいけない。
省略した方が読み易いとか云う奴は、独りよがりの変態なだけ
そういうのは、ミニファイツールでOKでしょう。
コーディング中は、原則省略すべきじゃない。
GitHubで公開するソースも省略するべきじゃない。
可読性を下げてはいけない。
省略した方が読み易いとか云う奴は、独りよがりの変態なだけ
215デフォルトの名無しさん
2016/06/09(木) 20:35:01.66ID:ziShIi0x >>213
釣りはウザイから止めろ。
ガチで勘違いしているのなら google のコーディングルール読め。駄目な例まで挙げてある。
http://cou929.nu/data/google_javascript_style_guide/
>>209
一般にどうなのかは分からんな。
しかし所詮は慣れだろうし、世間がそう書くなら慣れるしかないのでは。
なおそのケースなら俺は function と書くが。
sortの引数のような最初から function であることが確定している部分はいいけど、
それ以外の所(何が書かれるか分からないところ)には function と書いた方が見やすいと思うから。
釣りはウザイから止めろ。
ガチで勘違いしているのなら google のコーディングルール読め。駄目な例まで挙げてある。
http://cou929.nu/data/google_javascript_style_guide/
>>209
一般にどうなのかは分からんな。
しかし所詮は慣れだろうし、世間がそう書くなら慣れるしかないのでは。
なおそのケースなら俺は function と書くが。
sortの引数のような最初から function であることが確定している部分はいいけど、
それ以外の所(何が書かれるか分からないところ)には function と書いた方が見やすいと思うから。
216デフォルトの名無しさん
2016/06/11(土) 16:34:28.13ID:tWgkOxEq >>214
いいや、無駄なものが付いてるほうが可読性が落ちる。
特にGitHubではセミコロン省略が推奨されてるでしょ。
https://github.com/feross/standard/blob/master/RULES.md#semicolons
それなのに付けろというのはそれこそ独りよがりだよ。
でも君が独りよがりだから悪いとは言わないよ。
JSは独りよがりで自由であるべきだからね。
いいや、無駄なものが付いてるほうが可読性が落ちる。
特にGitHubではセミコロン省略が推奨されてるでしょ。
https://github.com/feross/standard/blob/master/RULES.md#semicolons
それなのに付けろというのはそれこそ独りよがりだよ。
でも君が独りよがりだから悪いとは言わないよ。
JSは独りよがりで自由であるべきだからね。
217デフォルトの名無しさん
2016/06/11(土) 16:40:46.73ID:tWgkOxEq >>215
釣りではない。
GitHubやnpmなど、セミコロンフリーのスタイルは確立されている。
自分も様々なスタイルを試した結果、今はこれに賛同しているだけ。
ただし、この2つは同じく原則省略でも細部の取り回しが異なる上、自分もそれらとは微妙に異なる。
ルールセットの他の部分は当然違う。結構細かくいろんなスタイルが存在する。
そのどれもが考えられてるのだから悪いとかフザケてるとか思うようなことでないと思う。
それなのに人の信念というか、正義を釣り呼ばわりするのはかなり独りよがりだと思う。
でも落ち込まないで、そんな君も好きだよ。
釣りではない。
GitHubやnpmなど、セミコロンフリーのスタイルは確立されている。
自分も様々なスタイルを試した結果、今はこれに賛同しているだけ。
ただし、この2つは同じく原則省略でも細部の取り回しが異なる上、自分もそれらとは微妙に異なる。
ルールセットの他の部分は当然違う。結構細かくいろんなスタイルが存在する。
そのどれもが考えられてるのだから悪いとかフザケてるとか思うようなことでないと思う。
それなのに人の信念というか、正義を釣り呼ばわりするのはかなり独りよがりだと思う。
でも落ち込まないで、そんな君も好きだよ。
218デフォルトの名無しさん
2016/06/11(土) 17:39:28.29ID:ZhHlBSFM >>217
キモいわ。
個人が作った勝手ルールだろ。それに従いたければ勝手にしろよ。
googleの方は「こういう問題があるから、こういうルールにしました」という、極めて実用的なものだ。
俺がgoogle側のルールを妥当とするのはこの点からだ。
コーディングルールは、見やすさではなく、バグを含まないためにある。
セミコロン程度の見やすさなんて、所詮慣れでしかない。
付いている方が無駄バグが発生しにくいのなら、当然それがルールで、見にくいのなら慣れろ、という立場だ。
お前はこのスレに来るべきではない。テンプレ読めよ。
お前は3,000行のコード、書けないだろ。
キモいわ。
個人が作った勝手ルールだろ。それに従いたければ勝手にしろよ。
googleの方は「こういう問題があるから、こういうルールにしました」という、極めて実用的なものだ。
俺がgoogle側のルールを妥当とするのはこの点からだ。
コーディングルールは、見やすさではなく、バグを含まないためにある。
セミコロン程度の見やすさなんて、所詮慣れでしかない。
付いている方が無駄バグが発生しにくいのなら、当然それがルールで、見にくいのなら慣れろ、という立場だ。
お前はこのスレに来るべきではない。テンプレ読めよ。
お前は3,000行のコード、書けないだろ。
219デフォルトの名無しさん
2016/06/11(土) 19:12:42.34ID:ZhHlBSFM >>217
つうかおめー、マジで頭おかしいぞ。
有名どころは全部「セミコロン付けろ」だぞ。
個人レベルでの勝手ルール持ち出すとか、キチガイだと分からないか?
それともGitHubを勘違いしているか?あれは誰でもアカウントを作れる。もちろん君でも。
> JavaScriptのスタイルガイドまとめ(おすすめ4選)
> google
> jQuery JavaScript Style Guide
> Airbnb JavaScript Style Guide
> > https://github.com/airbnb/javascript (star 36,207、対して feross は 5,886)
> Node
> http://qiita.com/takeharu/items/dee0972e5f39bfd4d7c8
つうかおめー、マジで頭おかしいぞ。
有名どころは全部「セミコロン付けろ」だぞ。
個人レベルでの勝手ルール持ち出すとか、キチガイだと分からないか?
それともGitHubを勘違いしているか?あれは誰でもアカウントを作れる。もちろん君でも。
> JavaScriptのスタイルガイドまとめ(おすすめ4選)
> jQuery JavaScript Style Guide
> Airbnb JavaScript Style Guide
> > https://github.com/airbnb/javascript (star 36,207、対して feross は 5,886)
> Node
> http://qiita.com/takeharu/items/dee0972e5f39bfd4d7c8
220デフォルトの名無しさん
2016/06/11(土) 19:13:01.99ID:ZhHlBSFM > npm
> https://www.npmjs.com/package/standard
npmだけは確かに「省けるセミコロンは省け」と言っている。
ざっくり見た感じは、「JavaScriptについてよく知れば、それが出来る」ということらしい。
つまり、どういうケースでAutomaticSemicolonInsertionが動くか理解して、
常にそれを考えながらコーディングしろ、ということなのだが、
そんなことやってるからJavaScriptの連中は上達してないんだと思うけどね。
本来のプログラミングの「技能」は、言語をまたいで汎用的なものだ。
その言語でしか使えない知識は、「文法」でしかない。
俺たちはJavaScriptのおかしな文法を極めたいわけでもない。JavaScriptを使いたいだけだ。
君の論理なら、使いたいだけのために勉強を強いるのもまた「独りよがり」でしかないだろ。
不思議なのは、JavaScriptの連中にはこの主張をする輩が多い事だ。
npmが震源だったということなのか?
C++で「テンプレートを極めてから来い」
C#やJavaで「クラスライブラリを極めてから来い」
なんていう奴はいない。それはどだい無理だからだ。
だから知っている範囲でコーディングを開始していく。そして「そんな機能あったのか!」ってのも割とよくある。
JavaScriptはギリギリ極められるくらいの軽量言語ではある。
しかしだからといって、それを極めたところで益はない。せいぜいセミコロンが省けるだけだ。
そんなことに時間をかける価値なんてないだろ?
全部セミコロン付けてリントで落とし、さっさと本題に行こうというのが普通だ。
> https://www.npmjs.com/package/standard
npmだけは確かに「省けるセミコロンは省け」と言っている。
ざっくり見た感じは、「JavaScriptについてよく知れば、それが出来る」ということらしい。
つまり、どういうケースでAutomaticSemicolonInsertionが動くか理解して、
常にそれを考えながらコーディングしろ、ということなのだが、
そんなことやってるからJavaScriptの連中は上達してないんだと思うけどね。
本来のプログラミングの「技能」は、言語をまたいで汎用的なものだ。
その言語でしか使えない知識は、「文法」でしかない。
俺たちはJavaScriptのおかしな文法を極めたいわけでもない。JavaScriptを使いたいだけだ。
君の論理なら、使いたいだけのために勉強を強いるのもまた「独りよがり」でしかないだろ。
不思議なのは、JavaScriptの連中にはこの主張をする輩が多い事だ。
npmが震源だったということなのか?
C++で「テンプレートを極めてから来い」
C#やJavaで「クラスライブラリを極めてから来い」
なんていう奴はいない。それはどだい無理だからだ。
だから知っている範囲でコーディングを開始していく。そして「そんな機能あったのか!」ってのも割とよくある。
JavaScriptはギリギリ極められるくらいの軽量言語ではある。
しかしだからといって、それを極めたところで益はない。せいぜいセミコロンが省けるだけだ。
そんなことに時間をかける価値なんてないだろ?
全部セミコロン付けてリントで落とし、さっさと本題に行こうというのが普通だ。
221デフォルトの名無しさん
2016/06/12(日) 00:32:26.03ID:npk74fIw 詳細確認したが、
> セミコロンフリー (>>217)
ではないぞ。
> // ok
> ;(function () {
> window.alert('ok')
> }())
>
> // avoid
> (function () {
> window.alert('ok')
> }())
> https://github.com/feross/standard/blob/master/RULES.md#semicolons
必要な時には行頭に付けろという、一周回った発想だ。
> セミコロンフリー (>>217)
ではないぞ。
> // ok
> ;(function () {
> window.alert('ok')
> }())
>
> // avoid
> (function () {
> window.alert('ok')
> }())
> https://github.com/feross/standard/blob/master/RULES.md#semicolons
必要な時には行頭に付けろという、一周回った発想だ。
222デフォルトの名無しさん
2016/06/12(日) 00:33:54.14ID:npk74fIw npmの所にある3者のうち、(全部読んではないが、videoは全部見た)
1つ目は教条的な理由、
> “They’re required because ASI is unreliable.” Seriously!?
> These rules date back to the early days of JavaScript, in the late 90s.
> They’re not new, and in my opinion there is no excuse for someone calling themselves a professional JavaScripter and not understanding statement termination.
> It is blatantly irresponsible of the thought leaders in the JavaScript community to continue to spread uncertainty rather than understanding.
> http://blog.izs.me/post/2353458699/an-open-letter-to-javascript-leaders-regarding
2つ目はどのみち必要だという理由、
> Even if you use semicolons at the end of every statement, some constructs parse in non-obvious ways. Regardless of your preferences in semicolon usage, you must know the rules to write JavaScript professionally.
> http://inimino.org/~inimino/blog/javascript_semicolons
3つ目は「関数には要らなくて関数式には付けろとか『初心者には』分かりにくい」ということだった。
> https://www.youtube.com/watch?v=gsfbh17Ax9I
よく見るとなるほどこのnpmのコーディングルールの作者がferossか。
ならばそれは「GitHubで確立されている」とは言わない。それは君がGitHubを勘違いしているだけだ。
GitHubはただの置き場であって、誰でも何でも置けるんだよ。プログラムである必要すらない。
とはいえnpmではある程度の評価を得ていることは事実だな。ただ明らかに主流ではないが。
セミコロン無しの有名言語はRubyとPythonだと思うが、そっち出身でなければ大人しく付けておいて、それに慣れた方がいい。
Ruby/Pythonとの相互運用なら可能性はありだが、
俺はRubyもPythonも知らないのでどちらがマシかの判断は付かない。
1つ目は教条的な理由、
> “They’re required because ASI is unreliable.” Seriously!?
> These rules date back to the early days of JavaScript, in the late 90s.
> They’re not new, and in my opinion there is no excuse for someone calling themselves a professional JavaScripter and not understanding statement termination.
> It is blatantly irresponsible of the thought leaders in the JavaScript community to continue to spread uncertainty rather than understanding.
> http://blog.izs.me/post/2353458699/an-open-letter-to-javascript-leaders-regarding
2つ目はどのみち必要だという理由、
> Even if you use semicolons at the end of every statement, some constructs parse in non-obvious ways. Regardless of your preferences in semicolon usage, you must know the rules to write JavaScript professionally.
> http://inimino.org/~inimino/blog/javascript_semicolons
3つ目は「関数には要らなくて関数式には付けろとか『初心者には』分かりにくい」ということだった。
> https://www.youtube.com/watch?v=gsfbh17Ax9I
よく見るとなるほどこのnpmのコーディングルールの作者がferossか。
ならばそれは「GitHubで確立されている」とは言わない。それは君がGitHubを勘違いしているだけだ。
GitHubはただの置き場であって、誰でも何でも置けるんだよ。プログラムである必要すらない。
とはいえnpmではある程度の評価を得ていることは事実だな。ただ明らかに主流ではないが。
セミコロン無しの有名言語はRubyとPythonだと思うが、そっち出身でなければ大人しく付けておいて、それに慣れた方がいい。
Ruby/Pythonとの相互運用なら可能性はありだが、
俺はRubyもPythonも知らないのでどちらがマシかの判断は付かない。
223デフォルトの名無しさん
2016/06/12(日) 05:22:59.97ID:Q2nOr0zy >>222
大人しく付けておいて慣れたほうがいい。ね。
興味深い考え方だね。
でも自分はどんな作業にしろ常に思考し改善しようと努力する質だから。
大人しく常識に沿って手を動かすだけというのは好きじゃない。
少しでもそういう意識があればむしろ書かれているように、
Note: If you're often writing code like this, you may be trying to be too clever.
Clever short-hands are discouraged, in favor of clear and readable expressions, whenever possible.
というのに「気づく」と思う。
キモい?当たり前。
俺も散々吐き気をこらえていろいろなスタイルや概念を試してきた。
何度も行ったり来たりした。
キモいのは上等!その先に必ず改善があるのだから。
そして多くを見れば本当に「キモい」ものが何かがわかってくる。
class構文やプロトタイプ的継承術に慣れた後では
JSのデフォの継承システムが一番「存在的にキモい」ことに気づくのと同じ。
でも分かった。そういうのを他人に求めるのはエゴなんだと。
すまなかった。。。。。。。
大人しく付けておいて慣れたほうがいい。ね。
興味深い考え方だね。
でも自分はどんな作業にしろ常に思考し改善しようと努力する質だから。
大人しく常識に沿って手を動かすだけというのは好きじゃない。
少しでもそういう意識があればむしろ書かれているように、
Note: If you're often writing code like this, you may be trying to be too clever.
Clever short-hands are discouraged, in favor of clear and readable expressions, whenever possible.
というのに「気づく」と思う。
キモい?当たり前。
俺も散々吐き気をこらえていろいろなスタイルや概念を試してきた。
何度も行ったり来たりした。
キモいのは上等!その先に必ず改善があるのだから。
そして多くを見れば本当に「キモい」ものが何かがわかってくる。
class構文やプロトタイプ的継承術に慣れた後では
JSのデフォの継承システムが一番「存在的にキモい」ことに気づくのと同じ。
でも分かった。そういうのを他人に求めるのはエゴなんだと。
すまなかった。。。。。。。
224デフォルトの名無しさん
2016/06/12(日) 05:36:18.79ID:Q2nOr0zy >>220
極める必要なんてない。
例えば暗黙の型変換周りと比べると非常に明快。
ただ、「括弧で始まる前に付ける」。
これさえ守ればいい。
細かいこと言えば『接続させたくない』接続可能な他の演算子の前にも付ける必要などあるが、
まずそうであることはありえない。
そして「括弧で始まる」ようなものを書くようになるのは入門終了後だから、
その程度の「決め事」と一緒にそれらの書き方を学ぶのが特に負荷になるとは思わない。
極める必要なんてない。
例えば暗黙の型変換周りと比べると非常に明快。
ただ、「括弧で始まる前に付ける」。
これさえ守ればいい。
細かいこと言えば『接続させたくない』接続可能な他の演算子の前にも付ける必要などあるが、
まずそうであることはありえない。
そして「括弧で始まる」ようなものを書くようになるのは入門終了後だから、
その程度の「決め事」と一緒にそれらの書き方を学ぶのが特に負荷になるとは思わない。
225デフォルトの名無しさん
2016/06/12(日) 05:49:08.10ID:GMtpRE4O >他人に求めるのはエゴ
はいこれで決着ね
はいこれで決着ね
226デフォルトの名無しさん
2016/06/12(日) 11:40:13.85ID:npk74fIw >>223
いや悪いが「キモイ」ってのは君の投稿内容のことであって、JavaScriptの記法の事ではなかった。
ここは馴れ合う場所ではない。
ただやはりそれは努力の方向を間違っていると思うよ。
先に書いたように、「文法」を覚える努力をいくらやったところでプログラミングの「技能」は上達しない。
勉強する前に鉛筆の削り方に異常にこだわるようなものだ。さっさと勉強を始めた方がいい。
> class構文やプロトタイプ的継承術に慣れた後では
> JSのデフォの継承システムが一番「存在的にキモい」ことに気づくのと同じ。
釣りか?JSのデフォの継承システム=プロトタイプ的継承だが。
> その程度の「決め事」と一緒にそれらの書き方を学ぶのが特に負荷になるとは思わない。
「とりあえず全部セミコロンつけとけ」の方が楽だ。何も学ぶ必要はない。(JSなら余分も問題にならない)
なお、JSの場合はセミコロンは「必要な場所に無ければ挿入される」であって、「不必要」ではない。
そして return の場合は改行でいきなり終端されるとか、動作に一貫性がない点もある。
たぶんRubyやPythonは最初から「不必要」で設計されている。この点が違う。
いや悪いが「キモイ」ってのは君の投稿内容のことであって、JavaScriptの記法の事ではなかった。
ここは馴れ合う場所ではない。
ただやはりそれは努力の方向を間違っていると思うよ。
先に書いたように、「文法」を覚える努力をいくらやったところでプログラミングの「技能」は上達しない。
勉強する前に鉛筆の削り方に異常にこだわるようなものだ。さっさと勉強を始めた方がいい。
> class構文やプロトタイプ的継承術に慣れた後では
> JSのデフォの継承システムが一番「存在的にキモい」ことに気づくのと同じ。
釣りか?JSのデフォの継承システム=プロトタイプ的継承だが。
> その程度の「決め事」と一緒にそれらの書き方を学ぶのが特に負荷になるとは思わない。
「とりあえず全部セミコロンつけとけ」の方が楽だ。何も学ぶ必要はない。(JSなら余分も問題にならない)
なお、JSの場合はセミコロンは「必要な場所に無ければ挿入される」であって、「不必要」ではない。
そして return の場合は改行でいきなり終端されるとか、動作に一貫性がない点もある。
たぶんRubyやPythonは最初から「不必要」で設計されている。この点が違う。
227デフォルトの名無しさん
2016/06/12(日) 11:40:36.40ID:npk74fIw インターネット上で自分と同じ意見を探すのは、使い方を間違っている。
最近「ブサヨ」「パヨク」とか言われているだろ。あそこまで見事に「裸の王様」になるのかとも呆れるが、
君は彼等と同じインターネットの使い方をしている。
どんなマイナーな意見でも、世界中を探せば同意見の奴は大概見つかる。自分が世界一マイナーな確率なんてほぼゼロだから。
だから、検索でヒットしても安心したら駄目だ。それはどれくらい支持された意見なのか確認する必要がある。
大勢が採用した物には、それなりの理由がある。マイナーならばそれにも理由がある。
君にはJavaScriptの技術力もないし、
マイナーな意見をGitHubの大勢だと勘違いしてしまう程、インターネットのリテラシーもない。
もちろん何故大勢が「セミコロン付けろ」なのかも分からないだろ。
余分な苦労をせずに上達したいのなら、「普通に」色々やった方がいい。もちろんそれも含めて君の自由だが。
そしてやはり君はここに来るべきではない。邪魔でしかない。
この手の「議論以前の常識」についてグダグダ言いたくないから別スレを作ったんだ。
君は「質問スレ」でいいはずだ。彼等はこの題目なら嬉々としてレスしてくるだろうし。
最近「ブサヨ」「パヨク」とか言われているだろ。あそこまで見事に「裸の王様」になるのかとも呆れるが、
君は彼等と同じインターネットの使い方をしている。
どんなマイナーな意見でも、世界中を探せば同意見の奴は大概見つかる。自分が世界一マイナーな確率なんてほぼゼロだから。
だから、検索でヒットしても安心したら駄目だ。それはどれくらい支持された意見なのか確認する必要がある。
大勢が採用した物には、それなりの理由がある。マイナーならばそれにも理由がある。
君にはJavaScriptの技術力もないし、
マイナーな意見をGitHubの大勢だと勘違いしてしまう程、インターネットのリテラシーもない。
もちろん何故大勢が「セミコロン付けろ」なのかも分からないだろ。
余分な苦労をせずに上達したいのなら、「普通に」色々やった方がいい。もちろんそれも含めて君の自由だが。
そしてやはり君はここに来るべきではない。邪魔でしかない。
この手の「議論以前の常識」についてグダグダ言いたくないから別スレを作ったんだ。
君は「質問スレ」でいいはずだ。彼等はこの題目なら嬉々としてレスしてくるだろうし。
228デフォルトの名無しさん
2016/06/12(日) 11:50:23.91ID:k/2WgB7H ここまで静観して見てたけどその例えはどうなのよ
Web板での政治社会的なレッテル貼りや質問スレの〜行以下のコード云々の煽りはともかく
このスレでだけはまともに議論や情報交換をするものだと思っていたのに心底残念だよ
Web板での政治社会的なレッテル貼りや質問スレの〜行以下のコード云々の煽りはともかく
このスレでだけはまともに議論や情報交換をするものだと思っていたのに心底残念だよ
229デフォルトの名無しさん
2016/06/12(日) 12:18:41.79ID:bynAnAmH セミコロンは付けるか付けないかではない。付けさせるか付けさせないかだ。
そう考えれば付けさせるしかないだろ。
そう考えれば付けさせるしかないだろ。
230デフォルトの名無しさん
2016/06/12(日) 12:24:25.95ID:npk74fIw >>228
では出ていくなり、他スレを立てるなり、好きにすればいい。それも自由だ。
ここは言いたいことを言い合う場所であって、言って欲しいことを言ってもらえる場所ではない。
どこについて怒っているのか若干謎だが、
「ブサヨ」「パヨク」については適切な例えだと思うぞ。実際そうだし。
ただ彼等について嘲笑するだけなのは、それもまた駄目なんだよ。
自分もそこに陥ってしまう危険性に気づき、他山の石としなければならない。
実際、彼もその罠に嵌っているわけだし。
マイナーな状態で旗印があれば信者はそこに飛びつく。
そして周りが自分と同じ意見であることに安心してしまうのだが、それでは駄目なんだ。
セミコロン無し派がnpmに集結しているのは正直驚きだった。だから詳細を確認した。
結果、「宗教」だった。対してgoogle/jQuery/Node/Airbnbは「実利」だ。俺はノータイムで「実利」を取る。
とはいえ、いずれにしても「宗教」の時点で議論する意味はない。
どうあがいても平行線だからね。
だから結局好きにするしかないのだが、セミコロン付ける派にも「宗教」の奴はいるはずで、
人口が C/C++/Java >> Ruby/Python な以上、「宗教」としてもひっくり返らない。
だから変にこだわるのではなく、「セミコロンあり」に慣れるしかないだろ、というのが至極妥当な見解だと思うが。
では出ていくなり、他スレを立てるなり、好きにすればいい。それも自由だ。
ここは言いたいことを言い合う場所であって、言って欲しいことを言ってもらえる場所ではない。
どこについて怒っているのか若干謎だが、
「ブサヨ」「パヨク」については適切な例えだと思うぞ。実際そうだし。
ただ彼等について嘲笑するだけなのは、それもまた駄目なんだよ。
自分もそこに陥ってしまう危険性に気づき、他山の石としなければならない。
実際、彼もその罠に嵌っているわけだし。
マイナーな状態で旗印があれば信者はそこに飛びつく。
そして周りが自分と同じ意見であることに安心してしまうのだが、それでは駄目なんだ。
セミコロン無し派がnpmに集結しているのは正直驚きだった。だから詳細を確認した。
結果、「宗教」だった。対してgoogle/jQuery/Node/Airbnbは「実利」だ。俺はノータイムで「実利」を取る。
とはいえ、いずれにしても「宗教」の時点で議論する意味はない。
どうあがいても平行線だからね。
だから結局好きにするしかないのだが、セミコロン付ける派にも「宗教」の奴はいるはずで、
人口が C/C++/Java >> Ruby/Python な以上、「宗教」としてもひっくり返らない。
だから変にこだわるのではなく、「セミコロンあり」に慣れるしかないだろ、というのが至極妥当な見解だと思うが。
231デフォルトの名無しさん
2016/06/12(日) 12:26:16.47ID:3NjnbAB7232デフォルトの名無しさん
2016/06/12(日) 12:33:31.15ID:npk74fIw >>229
そうなんだけど、セミコロン無し派も結構ガチなんだよ。
リンターも整形ツールも既に提供している。
あのferossって奴もGitHubの垢見る限りそこそこ大物だ。
ただ正直、そこまでこだわる理由もよくわからんのだが、、、
そうなんだけど、セミコロン無し派も結構ガチなんだよ。
リンターも整形ツールも既に提供している。
あのferossって奴もGitHubの垢見る限りそこそこ大物だ。
ただ正直、そこまでこだわる理由もよくわからんのだが、、、
233224
2016/06/12(日) 16:06:44.39ID:gONGsgja >>227
俺はここはJSを愛する者達のスレ、と認識していた。
今は亡きECMAスレの面影を重ねているのかもしれない。
要するに、より良いJSを目指す者質の意見だ。
ただの常識とやらにそった意見の飛ばし合いならばそれこそそこらの質問スレですればいい。
こういう議論をするためこそにこのスレが有るのだし、
現にこういう議論が出て初めてスレが伸びたんだからそういうことに違いないだろう。
ともかく、こういう議論をすること自体は良い。としてもらいたい。
>>229
彼に少しでも良いJSを目指したいという精神が感じられなければ、またこういうスレでなければ俺も「あえて」付けるなとは言わない。
この場所、このタイミングで質問した彼には真実に繋がるヒントを伝え、そこへ目指して欲しかった。
>>230
>>「慣れるしかない」
どうして?いや、仮に「セミコロンを原則付けること」に慣れる必要があるとしても、
「セミコロンを原則付けないこと」にも慣れてはいけない理由なんてないし、
そっちを普段自分の中でメインで使って良くない理由なんてないよな。
>>232
俺がこだわっているのは、「セミコロンを付けないほうがいい」ということよりもむしろ、
そういうことを教えたり教わったり考えたり、もっと自由な研究をしようよということだな。
た だ し、『プログラマー』『スクリプター』『JSer』になりたいのならね。
そうでないのならどうでもいいが、俺はそうなってほしい、JSを愛して欲しいと考えるからこうした立場をとっている。
JSを教えるとき、JSって、スクリプト言語って、プログラミングって楽しいんだよ、深いんだよ、広いんだよ
ということを感じてほしくはないかい?俺は欲しい。
一緒にJSを味わい尽くし、発展に協力してもらい、共に夢を見る関係になりたい。
そう思うことはそんなに変かな。
このスレでは許されると思ったんだけどね。寂しい。。
俺はここはJSを愛する者達のスレ、と認識していた。
今は亡きECMAスレの面影を重ねているのかもしれない。
要するに、より良いJSを目指す者質の意見だ。
ただの常識とやらにそった意見の飛ばし合いならばそれこそそこらの質問スレですればいい。
こういう議論をするためこそにこのスレが有るのだし、
現にこういう議論が出て初めてスレが伸びたんだからそういうことに違いないだろう。
ともかく、こういう議論をすること自体は良い。としてもらいたい。
>>229
彼に少しでも良いJSを目指したいという精神が感じられなければ、またこういうスレでなければ俺も「あえて」付けるなとは言わない。
この場所、このタイミングで質問した彼には真実に繋がるヒントを伝え、そこへ目指して欲しかった。
>>230
>>「慣れるしかない」
どうして?いや、仮に「セミコロンを原則付けること」に慣れる必要があるとしても、
「セミコロンを原則付けないこと」にも慣れてはいけない理由なんてないし、
そっちを普段自分の中でメインで使って良くない理由なんてないよな。
>>232
俺がこだわっているのは、「セミコロンを付けないほうがいい」ということよりもむしろ、
そういうことを教えたり教わったり考えたり、もっと自由な研究をしようよということだな。
た だ し、『プログラマー』『スクリプター』『JSer』になりたいのならね。
そうでないのならどうでもいいが、俺はそうなってほしい、JSを愛して欲しいと考えるからこうした立場をとっている。
JSを教えるとき、JSって、スクリプト言語って、プログラミングって楽しいんだよ、深いんだよ、広いんだよ
ということを感じてほしくはないかい?俺は欲しい。
一緒にJSを味わい尽くし、発展に協力してもらい、共に夢を見る関係になりたい。
そう思うことはそんなに変かな。
このスレでは許されると思ったんだけどね。寂しい。。
234224
2016/06/12(日) 19:04:38.68ID:gONGsgja あー、それとここまでの流れをちゃんと見てみたら混乱を招いてるようなので
一つ断っておきたいんだが、俺はバランスタイプなんだ。
俺が「セミコロンを付けないほうがいい」などと言ってるのは、
あくまで彼に対するレスが偏り過ぎないよう、不足分を埋める立場になっただけで、
その瞬間ではあくまで彼のためだけの、彼の方向に向いたレスでしかない。
他のレスとは補完関係であって、互いに影響を及ぼしたり対立したりするつもりはない。
もし他の人が「セミコロンを付けないほうがいい」といったならば、
俺は逆の立場から言っていた。
あくまで俺の目的は、広く深い心と知見と情熱を持った『JSer』育成にあるからだ。
何か1つのそれっぽい答えを貰うだけで満足してほしくはない。
いろんな案を受け入れ、自ら試行錯誤してより良いJSを追求していって欲しい。
一つ断っておきたいんだが、俺はバランスタイプなんだ。
俺が「セミコロンを付けないほうがいい」などと言ってるのは、
あくまで彼に対するレスが偏り過ぎないよう、不足分を埋める立場になっただけで、
その瞬間ではあくまで彼のためだけの、彼の方向に向いたレスでしかない。
他のレスとは補完関係であって、互いに影響を及ぼしたり対立したりするつもりはない。
もし他の人が「セミコロンを付けないほうがいい」といったならば、
俺は逆の立場から言っていた。
あくまで俺の目的は、広く深い心と知見と情熱を持った『JSer』育成にあるからだ。
何か1つのそれっぽい答えを貰うだけで満足してほしくはない。
いろんな案を受け入れ、自ら試行錯誤してより良いJSを追求していって欲しい。
235デフォルトの名無しさん
2016/06/12(日) 23:59:15.39ID:NYt/6ntu 自転車置き場の議論てやつだな
あほだな
あほだな
236デフォルトの名無しさん
2016/06/13(月) 00:25:03.07ID:AxmCg6hy >>235
ほう、名詞があるんだね。
色々考えたんだけど、JavaScriptの連中が上達してない原因は多分そこだと思うんだよ。
C初心者「for文、while文、if文…」
JavaScript初心者「for文、while文、if文…」
C初心者「ポインタ…」
JavaScript初心者「セミコロンはどこに打つべきか議論しよう(キリッ」
C初心者「ポインタ…ポインタ…構造体…」
JavaScript初心者「暗黙変換の活用について(キリッ」
多分、本質的でないところにトラップされてるんだ。
Cはこの点、寄り道無しで初ボスかつラスボスのポインタがいきなり出てきて勇者は死ぬ。
そして何度も復活の呪文を唱えつつ、そこを抜ければいきなり中級者になってる。
JavaScriptの連中は完全にここで空回りしてしまってる。
セミコロンを打つ場所なんてマジでどうでもいいのに、さも重要なことのように言うのは詐欺だよな。
ほう、名詞があるんだね。
色々考えたんだけど、JavaScriptの連中が上達してない原因は多分そこだと思うんだよ。
C初心者「for文、while文、if文…」
JavaScript初心者「for文、while文、if文…」
C初心者「ポインタ…」
JavaScript初心者「セミコロンはどこに打つべきか議論しよう(キリッ」
C初心者「ポインタ…ポインタ…構造体…」
JavaScript初心者「暗黙変換の活用について(キリッ」
多分、本質的でないところにトラップされてるんだ。
Cはこの点、寄り道無しで初ボスかつラスボスのポインタがいきなり出てきて勇者は死ぬ。
そして何度も復活の呪文を唱えつつ、そこを抜ければいきなり中級者になってる。
JavaScriptの連中は完全にここで空回りしてしまってる。
セミコロンを打つ場所なんてマジでどうでもいいのに、さも重要なことのように言うのは詐欺だよな。
237デフォルトの名無しさん
2016/06/13(月) 06:36:45.25ID:o3uO7eJP >>236
実際には、セミコロンを打つ位置ではなくて、なぜセミコロンが省略でき、その場所では省略してはいけないのかが問題なんだけど、題目的にしか議論してないからな。
ポインタだって、参照と実体とかにフォーカスした方がいいんだろうけど、その辺スルーだし。
実際には、セミコロンを打つ位置ではなくて、なぜセミコロンが省略でき、その場所では省略してはいけないのかが問題なんだけど、題目的にしか議論してないからな。
ポインタだって、参照と実体とかにフォーカスした方がいいんだろうけど、その辺スルーだし。
238デフォルトの名無しさん
2016/06/14(火) 10:56:42.92ID:ScASA3Ww >>236
一番重要で本質的なことは、
長く複雑なコードをいかにスマートに書けるか、
いかに問題を短く簡潔なコードで早く書けるか、
ってことだと思うよ。
各機能がどうのこうのは、それこそどうでも良いというか、
基礎という意味では重大だけれど、レベルが低いことだと思う。
セミコロンを打つ場所なんてマジでどうでもいいというのは、
それは初心者にとってそれよりも先にやるべきことがあるからその通り。
しかし中級者以降生産性やコードの質を上げていこうと思えば
この手の物事の重要性は増していき、最後には信念やら宗教やらと言われる問題に行き着くと思うよ。
ここは既習者スレなんだから、そういうことこそを話し合うべきだと思うけどな。
そして空回りしているというのは、ある見方ではそうだと思う。
JSは仕様の内も外も具体的な実装について殆ど意識されていないからね。
でもそれは逆に、具体的な実装に囚われず概念を学べると言えると思う。
その概念を習得すれば、例えば他言語に移ったとしても柔軟に対応できる。
他にもJSはマルチパラダイムと強く意識されて作られたわけではないが、その真似事ができる。
むしろJSこそ最も様々なプログラミングにおける本質的な物事を学べる言語だと思う。
一番重要で本質的なことは、
長く複雑なコードをいかにスマートに書けるか、
いかに問題を短く簡潔なコードで早く書けるか、
ってことだと思うよ。
各機能がどうのこうのは、それこそどうでも良いというか、
基礎という意味では重大だけれど、レベルが低いことだと思う。
セミコロンを打つ場所なんてマジでどうでもいいというのは、
それは初心者にとってそれよりも先にやるべきことがあるからその通り。
しかし中級者以降生産性やコードの質を上げていこうと思えば
この手の物事の重要性は増していき、最後には信念やら宗教やらと言われる問題に行き着くと思うよ。
ここは既習者スレなんだから、そういうことこそを話し合うべきだと思うけどな。
そして空回りしているというのは、ある見方ではそうだと思う。
JSは仕様の内も外も具体的な実装について殆ど意識されていないからね。
でもそれは逆に、具体的な実装に囚われず概念を学べると言えると思う。
その概念を習得すれば、例えば他言語に移ったとしても柔軟に対応できる。
他にもJSはマルチパラダイムと強く意識されて作られたわけではないが、その真似事ができる。
むしろJSこそ最も様々なプログラミングにおける本質的な物事を学べる言語だと思う。
239デフォルトの名無しさん
2016/06/14(火) 18:26:48.94ID:TG3hSyiU 検索用にセミコロンを 2 個3 個続けるのもありかな
240デフォルトの名無しさん
2016/06/15(水) 01:26:31.98ID:Iz/1ukPU 検索用にセミコロンを 2 個3 個続けるのもあり
と君が判断したのなら君の中ではありなんだろう
と君が判断したのなら君の中ではありなんだろう
241デフォルトの名無しさん
2016/06/15(水) 20:32:12.77ID:AdfPujMx マンセーが異様に多いのもJavaScripterのおかしな所だよな
242デフォルトの名無しさん
2016/06/16(木) 07:55:44.05ID:oMjTOMdB そうか?
むしろスクリプト言語の中じゃ代表コミュニティもないし、そういうのは少ないほうだと思うが。
むしろスクリプト言語の中じゃ代表コミュニティもないし、そういうのは少ないほうだと思うが。
243デフォルトの名無しさん
2016/06/16(木) 08:00:04.44ID:88N1/vwg 利用人口ぱねえからな。変なの目にする機会も多かろう。
244デフォルトの名無しさん
2016/06/16(木) 15:16:35.80ID:oMjTOMdB 他人を理解できないってのは悲しいね
245デフォルトの名無しさん
2016/06/18(土) 01:00:30.57ID:HfDVf1Az >>243
人数自体はそんなに大したことはない。
おかしな奴の割合が異常に高いんだよ。
Webがホームということもあり、未熟な奴が平気で情報発信()している感もあるが。
http://www.tiobe.com/tiobe_index
http://spectrum.ieee.org/computing/software/the-2015-top-ten-programming-languages
http://pypl.github.io/PYPL.html
人数自体はそんなに大したことはない。
おかしな奴の割合が異常に高いんだよ。
Webがホームということもあり、未熟な奴が平気で情報発信()している感もあるが。
http://www.tiobe.com/tiobe_index
http://spectrum.ieee.org/computing/software/the-2015-top-ten-programming-languages
http://pypl.github.io/PYPL.html
246デフォルトの名無しさん
2016/06/18(土) 05:23:04.56ID:bYpIs91z マンセーしたら未熟者扱い?
エキスパートな俺様は苦しんでるのに許せない間違っているってことだろうか
それとも辛い経験豊富で批判的な俺様カッケーって勘違いアピール?
傍から見るとひねくれ者の妬みにしか見えないが……
エキスパートな俺様は苦しんでるのに許せない間違っているってことだろうか
それとも辛い経験豊富で批判的な俺様カッケーって勘違いアピール?
傍から見るとひねくれ者の妬みにしか見えないが……
247デフォルトの名無しさん
2016/06/18(土) 14:06:50.57ID:P96CWXJR248デフォルトの名無しさん
2016/06/19(日) 04:58:43.41ID:pwKRdbbJ おかしくない人って何よ
249デフォルトの名無しさん
2016/06/19(日) 10:12:00.06ID:0NV3J/pF >>245
Google で検索されたキーワード辺りで指標作った方が良さげな気がする。
Google で検索されたキーワード辺りで指標作った方が良さげな気がする。
250デフォルトの名無しさん
2016/06/19(日) 12:28:35.73ID:XPavHURr ここは>>1を含めて俺様主義の人が常駐してるのでまともな意見交換は出来んよ
始めは冷静でも、少し意見の食い違う人が現れただけでただの「主張の押しつけ合い」に発展する
意見交換するなら「そんな考え方もあるのか」ぐらいに自分の立場を引いて見つめる客観性が必要だが、彼は否定にかかるだけで相手をやりこめないと満足しないからな
始めは冷静でも、少し意見の食い違う人が現れただけでただの「主張の押しつけ合い」に発展する
意見交換するなら「そんな考え方もあるのか」ぐらいに自分の立場を引いて見つめる客観性が必要だが、彼は否定にかかるだけで相手をやりこめないと満足しないからな
251デフォルトの名無しさん
2016/06/19(日) 15:16:34.64ID:pwKRdbbJ 俺もお前も仙人や神様じゃなく凡人なのだから、性質に割り振れる度合いは限られてる。
結局思考停止の傲慢くんも、視野無限の優柔不断くんも、同じくらい悪い議論しかできない。
その中間であっても、両者の悪いところを半々持つので、同じくらい悪い議論しかできない。
つまり無理難題夢物語ということ。「こんな議論もあるのか」ぐらい許容的になってもよかでは?
結局思考停止の傲慢くんも、視野無限の優柔不断くんも、同じくらい悪い議論しかできない。
その中間であっても、両者の悪いところを半々持つので、同じくらい悪い議論しかできない。
つまり無理難題夢物語ということ。「こんな議論もあるのか」ぐらい許容的になってもよかでは?
252デフォルトの名無しさん
2016/06/19(日) 17:29:39.15ID:+1vne4gn そうやって他人の人格否定する辺りがまともな議論が成立しない理由なんだよな
http://d.hatena.ne.jp/takerunba/touch/20081028/p1
http://d.hatena.ne.jp/takerunba/touch/20081028/p1
253デフォルトの名無しさん
2016/06/19(日) 19:27:30.52ID:fmRoj+h3 そこで言う「まともな議論」とやらをここでする必要が有るのかい?
仕事でもあるまいし、自己主張のたまり場でもええんやないの?
仕事でもあるまいし、自己主張のたまり場でもええんやないの?
254デフォルトの名無しさん
2016/06/19(日) 19:36:59.62ID:J/2rkjpj ここは電波を黙らせる方法がないのだから基本は自己主張のたまり場にしかならんよ
その状態で有益な議論に出来るかは当事者次第でしかない
その状態で有益な議論に出来るかは当事者次第でしかない
255デフォルトの名無しさん
2016/06/19(日) 20:13:29.92ID:fmRoj+h3 まあぶっちゃけ単純に「聞き手」不足なだけなんだけどね
256デフォルトの名無しさん
2016/06/19(日) 20:36:57.86ID:J/2rkjpj そうか?なら語って、どうぞ。
なおセミコロンについて語られても困りますので悪しからず。
なおセミコロンについて語られても困りますので悪しからず。
257デフォルトの名無しさん
2016/06/19(日) 22:34:40.11ID:YTnkZ+TT 自己主張の溜まり場なら「情報交換所」なんてタイトルを付けなければいいのにな
次スレは「JavaScript自己主張の溜まり場」に改名すればいい
次スレは「JavaScript自己主張の溜まり場」に改名すればいい
258デフォルトの名無しさん
2016/06/19(日) 22:50:20.08ID:J/2rkjpj 単発にはキチガイしかいないことの再証明乙
259デフォルトの名無しさん
2016/06/19(日) 22:55:12.64ID:YTnkZ+TT ID:J/2rkjpj
自己主張の溜まり場で有益な議論が出来る訳なかろう
キチガイといっている時点でおまえにはその気が全くないのだろうが
自己主張の溜まり場で有益な議論が出来る訳なかろう
キチガイといっている時点でおまえにはその気が全くないのだろうが
260デフォルトの名無しさん
2016/06/19(日) 23:05:07.79ID:YTnkZ+TT >>251のよつな相手の非を盾に自分の非を正当化する行為も議論には邪魔だな
自己勝手の押しつけが横行するようなら「JavaScript自己主張の溜まり場」がこのスレに相応しい名前だと思うぞ
自己勝手の押しつけが横行するようなら「JavaScript自己主張の溜まり場」がこのスレに相応しい名前だと思うぞ
261デフォルトの名無しさん
2016/06/19(日) 23:09:03.89ID:J/2rkjpj やりたきゃ自分から始めればいいし、それに誰も食いつかなければその程度だったってだけだろ。
誰も池沼を相手にしたくないし、する義務もないんだよ。
何かあるのならさっさと始めろよ。
誰も池沼を相手にしたくないし、する義務もないんだよ。
何かあるのならさっさと始めろよ。
262デフォルトの名無しさん
2016/06/20(月) 12:16:18.08ID:GHIZIB85 スレタイ詐欺だな
263デフォルトの名無しさん
2016/06/20(月) 23:23:32.99ID:ismdVjCJ 基本的にこのスレは>>1しかいないからこうなるわな
賛同者がいないことを盾に本題への言及を避けてるだけ
賛同者がいないことを盾に本題への言及を避けてるだけ
264デフォルトの名無しさん
2016/06/20(月) 23:45:23.34ID:hAl2oYmp 「本題」って何?
265デフォルトの名無しさん
2016/06/21(火) 11:22:12.62ID:papOtBqK266デフォルトの名無しさん
2016/06/21(火) 13:37:07.53ID:NcocGzZA つまりかつてのECMAスレみたいに、いろんな新情報を挙げていけばいいんでしょ?
でもそれから派生した議論は別問題だよ。
匿名掲示板なんだから、自己主張の溜まり場になって当然。
逆にそうでなくすことなんて無理無理。道理に反してる。
俺は質問スレ10くらいの時から100スレ間に渡っていろんな案を出して直そうとしてきたが、
まあ様々なところで一定の収穫はあったが、議論が暴走することだけはどうしようもならなかった。
なら逆に受け取る方が考え方・気持ちを切り替えていくしかないんだよ。
でもそれから派生した議論は別問題だよ。
匿名掲示板なんだから、自己主張の溜まり場になって当然。
逆にそうでなくすことなんて無理無理。道理に反してる。
俺は質問スレ10くらいの時から100スレ間に渡っていろんな案を出して直そうとしてきたが、
まあ様々なところで一定の収穫はあったが、議論が暴走することだけはどうしようもならなかった。
なら逆に受け取る方が考え方・気持ちを切り替えていくしかないんだよ。
267デフォルトの名無しさん
2016/06/21(火) 16:31:29.25ID:wNHblGP/ 新情報っていってもねぇw
268デフォルトの名無しさん
2016/06/27(月) 00:33:14.94ID:n3Kagte5 TypedArrayとasm.jsの状況について詳しい人居る?
現在アプリにもっさり感がある。それであちこち修正したのだが、
ChromeDevTools/Profiles/CPU PROFILESで(program)が70-90%なのでJS側での速度改善はほぼ頭打ちだ。
そこで無理やり使用メモリを減らして速度向上させようとしている。
なお、評価はchromeで行っている。
JSのArrayは例えば [0,0,0] なら 16(header)+8*4(contents) = 48 Bytes になるようだ。
一つ中身が多いのは多分length分だろう。
元々オブジェクトだった物(26+88=116Byte)を強引にArrayに変えてこれを実現した。(項目も減らした)
ただ実際は struct { Int32, Int32, Int64 } なので本当は 16 + 4+4+8 = 32 になって欲しい。
そこで質問なのだが、
・asm.js 的記述(代入時に全部 |0 )したらメモリ確保も32bitになるかどうか
・TypedArrayの状況
を知りたい。
通常asm.jsは速度面ばかり話に出ていて、メモリ面の話が無い。
とはいえJITだと普通は無理だと思ので、
他の含めて何らかの方法でメモリ確保量を減らす方法を知っていればよろしく。
以下を見る限り、そういう用途向けではなさそうだが。
http://www.h2.dion.ne.jp/~defghi/asmjs/asmjs.htm
TypedArrayは使用メモリ自体は確実に減らせるはずだが、速度が異常に遅いのが気になっている。
以下で俺の環境だとざっくり7/7/100+/300+(以降全部)とかだ。
http://jsdo.it/sapphire_al2o3/sPa5
余計もっさりするようでは意味無い。試したことがある人は居るかい?
ググッたが、TypedArrayについては軒並み記事が古く、しかもやはり「遅い」という物が多い。
現在アプリにもっさり感がある。それであちこち修正したのだが、
ChromeDevTools/Profiles/CPU PROFILESで(program)が70-90%なのでJS側での速度改善はほぼ頭打ちだ。
そこで無理やり使用メモリを減らして速度向上させようとしている。
なお、評価はchromeで行っている。
JSのArrayは例えば [0,0,0] なら 16(header)+8*4(contents) = 48 Bytes になるようだ。
一つ中身が多いのは多分length分だろう。
元々オブジェクトだった物(26+88=116Byte)を強引にArrayに変えてこれを実現した。(項目も減らした)
ただ実際は struct { Int32, Int32, Int64 } なので本当は 16 + 4+4+8 = 32 になって欲しい。
そこで質問なのだが、
・asm.js 的記述(代入時に全部 |0 )したらメモリ確保も32bitになるかどうか
・TypedArrayの状況
を知りたい。
通常asm.jsは速度面ばかり話に出ていて、メモリ面の話が無い。
とはいえJITだと普通は無理だと思ので、
他の含めて何らかの方法でメモリ確保量を減らす方法を知っていればよろしく。
以下を見る限り、そういう用途向けではなさそうだが。
http://www.h2.dion.ne.jp/~defghi/asmjs/asmjs.htm
TypedArrayは使用メモリ自体は確実に減らせるはずだが、速度が異常に遅いのが気になっている。
以下で俺の環境だとざっくり7/7/100+/300+(以降全部)とかだ。
http://jsdo.it/sapphire_al2o3/sPa5
余計もっさりするようでは意味無い。試したことがある人は居るかい?
ググッたが、TypedArrayについては軒並み記事が古く、しかもやはり「遅い」という物が多い。
269デフォルトの名無しさん
2016/06/27(月) 00:37:31.51ID:rG4NGWrk 生成が重いだけだろ
使い方を間違えてる
使い方を間違えてる
270デフォルトの名無しさん
2016/06/27(月) 01:40:09.28ID:n3Kagte5 一応全体的に遅いということなのでそうだと勝手に思っていた。古いが以下。
http://blog.livedoor.jp/abars/archives/52103965.html
とりあえず確かめてみた結果、読み書きは1.5倍程度遅い。
許容範囲かといわれれば微妙だな、、、、
なおデータがなかなか安定しなかったので、若干怪しい。
サイズは俺が使う予定の1000にした。
このサイズなら確保との差が見えないが、オリジナルのサイズ(1.6M)だと見えていた。
function testArray(data, n, iter, start) {
var time_enter = Date.now();
for(var j=0;j<iter;j++)
for(var i = 0; i < n; i++) data[i] = i & 0xFFFFFFFF;
var now = Date.now();
return [now-time_enter, now-start];
}
function check(iter){
var start = Date.now()
console.log('array: '+testArray(new Array(count), count, iter, start));
start = Date.now();
console.log('Int32Array: '+testArray(new Int32Array(count), count, iter, start));
}
var count = 1000;
for (var i=100;i<100000000;i*=10) check(i);
http://blog.livedoor.jp/abars/archives/52103965.html
とりあえず確かめてみた結果、読み書きは1.5倍程度遅い。
許容範囲かといわれれば微妙だな、、、、
なおデータがなかなか安定しなかったので、若干怪しい。
サイズは俺が使う予定の1000にした。
このサイズなら確保との差が見えないが、オリジナルのサイズ(1.6M)だと見えていた。
function testArray(data, n, iter, start) {
var time_enter = Date.now();
for(var j=0;j<iter;j++)
for(var i = 0; i < n; i++) data[i] = i & 0xFFFFFFFF;
var now = Date.now();
return [now-time_enter, now-start];
}
function check(iter){
var start = Date.now()
console.log('array: '+testArray(new Array(count), count, iter, start));
start = Date.now();
console.log('Int32Array: '+testArray(new Int32Array(count), count, iter, start));
}
var count = 1000;
for (var i=100;i<100000000;i*=10) check(i);
271デフォルトの名無しさん
2016/06/27(月) 01:40:47.25ID:n3Kagte5 array: 1,2
Int32Array: 2,2
array: 2,2
Int32Array: 4,4
array: 22,22
Int32Array: 35,35
array: 235,235
Int32Array: 369,369
array: 2544,2544
Int32Array: 3665,3665
array: 24831,24831
Int32Array: 36757,36757
Int32Array: 2,2
array: 2,2
Int32Array: 4,4
array: 22,22
Int32Array: 35,35
array: 235,235
Int32Array: 369,369
array: 2544,2544
Int32Array: 3665,3665
array: 24831,24831
Int32Array: 36757,36757
272デフォルトの名無しさん
2016/06/27(月) 02:01:59.30ID:n3Kagte5 しかしどうやっても Int64 を生成できないのが問題だ。
実装としてはInt64を使わずにdouble64なのかな?
だったら変換が毎回発生せずに済むからいいけど。
実装としてはInt64を使わずにdouble64なのかな?
だったら変換が毎回発生せずに済むからいいけど。
273デフォルトの名無しさん
2016/06/27(月) 02:43:48.33ID:Krh8v6Tl > しかしどうやっても Int64 を生成できないのが問題だ。
はぁ?
はぁ?
274デフォルトの名無しさん
2016/06/27(月) 02:59:51.93ID:rG4NGWrk Chromeで試したけどInt32Arrayが全て上回った
275デフォルトの名無しさん
2016/06/27(月) 03:37:44.60ID:1KZKLXAx276デフォルトの名無しさん
2016/06/27(月) 04:57:14.28ID:Hl6kI6LE >>270
古いが、じゃない。あまりにもあまりにも古すぎる。
例えばV8は1年前はasm.js用の特別な最適化はしないと言っていたのが、
今では実装がほぼ完了している。
時代の流れというのはとてつもなく早いのだよ。
半年以内の記事でないと評価に値しない。
>>268
通常配列の最適化はエンジンによりまちまちだが、共通して言える分としては
全要素がSMI(≒Int32)かDouble時の最適化のみ。
SMIの要素にDoubleが交じるとそれはDouble配列として最適化される。
そして確かにasm.jsベースで書けば理論的には最大パフォーマンスに近いものが作れるだろう。
でもそれは例えば変数は同時にレジストリに乗る程度の数個に厳選して、
他は全て型付配列のアクセスに置き換えるテクから始まり、
メモリ上のデータの配置にまで気を使って初めて実現できること。
勿論大本のアルゴリズムは言うまでもなく最適でないといけない。
それが昨日今日asm.js始めたばかりの人間にできるかといえば否。
昔アセンブリで最適化してた経験でもないと人力では限界がある。
>>272
もし本当にInt64を効率よく扱いたいのなら時代が追いついていない。
丁度今議論中。3年後にどうぞ。
古いが、じゃない。あまりにもあまりにも古すぎる。
例えばV8は1年前はasm.js用の特別な最適化はしないと言っていたのが、
今では実装がほぼ完了している。
時代の流れというのはとてつもなく早いのだよ。
半年以内の記事でないと評価に値しない。
>>268
通常配列の最適化はエンジンによりまちまちだが、共通して言える分としては
全要素がSMI(≒Int32)かDouble時の最適化のみ。
SMIの要素にDoubleが交じるとそれはDouble配列として最適化される。
そして確かにasm.jsベースで書けば理論的には最大パフォーマンスに近いものが作れるだろう。
でもそれは例えば変数は同時にレジストリに乗る程度の数個に厳選して、
他は全て型付配列のアクセスに置き換えるテクから始まり、
メモリ上のデータの配置にまで気を使って初めて実現できること。
勿論大本のアルゴリズムは言うまでもなく最適でないといけない。
それが昨日今日asm.js始めたばかりの人間にできるかといえば否。
昔アセンブリで最適化してた経験でもないと人力では限界がある。
>>272
もし本当にInt64を効率よく扱いたいのなら時代が追いついていない。
丁度今議論中。3年後にどうぞ。
277デフォルトの名無しさん
2016/06/27(月) 17:22:50.14ID:PSQIpa+S Int64はなんでないのかねえ
278デフォルトの名無しさん
2016/06/27(月) 18:12:51.74ID:8aVYS4Ar 逆に考えればすぐ答えは出るよ
何故Float64Arrayはあるんだろうと
何故Float64Arrayはあるんだろうと
279デフォルトの名無しさん
2016/06/27(月) 23:12:26.18ID:n3Kagte5 >>275
今回は保存用(内部保持データ)なのでそれは使えない。
>>276
> 半年以内の記事でないと評価に値しない。
それはそうだが実際に遅い。
FF(47.0)でも試したが、上記ほどの差はなく、ほぼ1倍だった。
絶対値としては両方ともchrome(50.0.2630.1 canary SyzyASan)のInt32Arrayとほぼ同じで、
chromeのarrayが速いだけのようだ。
なお古いchrome(49.0.2623.112 beta-m)でも試したが傾向は同じ。(ただし全体的になぜか5倍ほど遅い)
とりあえず環境によるのかもしれないので、>>270の結果(>>271)を環境とともに貼ってくれれば助かる。
コピペすればそのまま実行できる。当たり前だが数字が大きい方が遅い。
なお>>271はchrome(50.0.2630.1 canary SyzyASan) + Vista だ。
> そして確かにasm.jsベースで書けば理論的には最大パフォーマンスに近いものが作れるだろう
いや、だからそれは「局所的」速度の話だろ。
俺は「全体的」速度を上げようとしている。
不要なオブジェクト生成はしていないので、メモリ攪拌はない。
ただし、どうしてもキャッシュミスは多いはずなので、これを改善しようとしている。
アクセスは150個単位で行われるため、TypedArrayにまとめてしまえばキャッシュヒットするようになる。(はず)
https://sites.google.com/site/shunichisnote/translations/data-oriented-design
ただ、今はそれ以前の段階で、全体的なメモリ使用量を削減しようとしている。
今回は保存用(内部保持データ)なのでそれは使えない。
>>276
> 半年以内の記事でないと評価に値しない。
それはそうだが実際に遅い。
FF(47.0)でも試したが、上記ほどの差はなく、ほぼ1倍だった。
絶対値としては両方ともchrome(50.0.2630.1 canary SyzyASan)のInt32Arrayとほぼ同じで、
chromeのarrayが速いだけのようだ。
なお古いchrome(49.0.2623.112 beta-m)でも試したが傾向は同じ。(ただし全体的になぜか5倍ほど遅い)
とりあえず環境によるのかもしれないので、>>270の結果(>>271)を環境とともに貼ってくれれば助かる。
コピペすればそのまま実行できる。当たり前だが数字が大きい方が遅い。
なお>>271はchrome(50.0.2630.1 canary SyzyASan) + Vista だ。
> そして確かにasm.jsベースで書けば理論的には最大パフォーマンスに近いものが作れるだろう
いや、だからそれは「局所的」速度の話だろ。
俺は「全体的」速度を上げようとしている。
不要なオブジェクト生成はしていないので、メモリ攪拌はない。
ただし、どうしてもキャッシュミスは多いはずなので、これを改善しようとしている。
アクセスは150個単位で行われるため、TypedArrayにまとめてしまえばキャッシュヒットするようになる。(はず)
https://sites.google.com/site/shunichisnote/translations/data-oriented-design
ただ、今はそれ以前の段階で、全体的なメモリ使用量を削減しようとしている。
280デフォルトの名無しさん
2016/06/28(火) 15:51:09.22ID:+n63MTqJ あのねぇ、銀の弾なんてないのよ。
JIT用最適化ってのはね、理論が正しくても1つ書き間違えただけで台無しになったりするし、
小さなベンチの結果では大きなコードの結果が予測できないこともある。
それこそ最も確実なのはAOTで予測しやすいasm.jsに出来るだけ落としこむことなのよ。
JITの範囲で君の書いたどんな代物か分からないコードが、
どうすれば良くなるかなんて最早一般的な話ではできないのよ。
もうどんな見るに耐えなくなっても良いのでとにかく速さだけを追求したいということなら、
それはもう人が書くようなJSでなくなることは確か。
そこまで行かずとも、今よりいくらか無難に改善したいということなら、
それこそそのコードに依存するとても細かな話で難しい。
というか君もそういう密接な協力をして欲しそうな態度を取ってないし、
結局はただ自分がやってることの進歩を見て欲しいとか、
寂しくないよう日記のつもりでここに書きたいだけでしょ?
そういうのが悪いとは思わないけど、ただ返信してくれた相手を否定する病を発症しちゃあオシマイよ。
そこは君の弱さだよ。
JIT用最適化ってのはね、理論が正しくても1つ書き間違えただけで台無しになったりするし、
小さなベンチの結果では大きなコードの結果が予測できないこともある。
それこそ最も確実なのはAOTで予測しやすいasm.jsに出来るだけ落としこむことなのよ。
JITの範囲で君の書いたどんな代物か分からないコードが、
どうすれば良くなるかなんて最早一般的な話ではできないのよ。
もうどんな見るに耐えなくなっても良いのでとにかく速さだけを追求したいということなら、
それはもう人が書くようなJSでなくなることは確か。
そこまで行かずとも、今よりいくらか無難に改善したいということなら、
それこそそのコードに依存するとても細かな話で難しい。
というか君もそういう密接な協力をして欲しそうな態度を取ってないし、
結局はただ自分がやってることの進歩を見て欲しいとか、
寂しくないよう日記のつもりでここに書きたいだけでしょ?
そういうのが悪いとは思わないけど、ただ返信してくれた相手を否定する病を発症しちゃあオシマイよ。
そこは君の弱さだよ。
281デフォルトの名無しさん
2016/06/28(火) 20:52:20.95ID:A7Bg25Ta そう思いたければそれでいい。
ただ、その姿勢がお前らが全く上達してない原因だと思う。
俺は間違った指摘に対して間違っていると言っただけだ。
Cの奴らがあくまで「技術的」なのとは対照的に、お前らは「精神的」な物言いばかりだ。
ある意味、やっていることが「Web的」だ。言ったもの勝ちみたいな馬鹿が多い。
とはいえ、間違っていることをいくら主張しても正しくはならない。
そもそもオブジェクトプールはインミュータブルの世界ではほぼ意味がない。
http://www.html5rocks.com/ja/tutorials/speed/static-mem-pools/
そして俺はJIT向けの最適化をしようとはしていない。
事実、メモリをケチるとか、一度にアクセスするデータを纏めるとか、どの言語でも高速化する。
実際、>>279内URLも言語には言及されてない。
もちろんそれ以前に他の改修点も多い。今はそこを整理中だ。
とはいえ、その先の「将来的改修方法」まで見据える必要があるので確認中ということになる。
>>280
ところで、何でお前はそんなに認めて君なんだ?
俺の質問は「asm.jsでフットプリント削減/メモリ配置決めうちは出来るか」であって、
「asm.jsで局所的高速化が出来るか」ではない。
つまり、脱線しているだけだから素っ気ない回答になっているだけだ。
俺がやろうとしているのは、君が思っているasm.jsの使い方ではない。
ただ、その姿勢がお前らが全く上達してない原因だと思う。
俺は間違った指摘に対して間違っていると言っただけだ。
Cの奴らがあくまで「技術的」なのとは対照的に、お前らは「精神的」な物言いばかりだ。
ある意味、やっていることが「Web的」だ。言ったもの勝ちみたいな馬鹿が多い。
とはいえ、間違っていることをいくら主張しても正しくはならない。
そもそもオブジェクトプールはインミュータブルの世界ではほぼ意味がない。
http://www.html5rocks.com/ja/tutorials/speed/static-mem-pools/
そして俺はJIT向けの最適化をしようとはしていない。
事実、メモリをケチるとか、一度にアクセスするデータを纏めるとか、どの言語でも高速化する。
実際、>>279内URLも言語には言及されてない。
もちろんそれ以前に他の改修点も多い。今はそこを整理中だ。
とはいえ、その先の「将来的改修方法」まで見据える必要があるので確認中ということになる。
>>280
ところで、何でお前はそんなに認めて君なんだ?
俺の質問は「asm.jsでフットプリント削減/メモリ配置決めうちは出来るか」であって、
「asm.jsで局所的高速化が出来るか」ではない。
つまり、脱線しているだけだから素っ気ない回答になっているだけだ。
俺がやろうとしているのは、君が思っているasm.jsの使い方ではない。
レスを投稿する
ニュース
- 【速報】中国、水産物輸入停止と通達 「処理水」理由、日本政府へ ★5 [おっさん友の会★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 [ぐれ★]
- 中国側が首相答弁の撤回要求、日本側拒否★7 [夜のけいちゃん★]
- NHK会長 新語・流行語大賞ノミネート「オールドメディア」に反論「言われる筋合いはない」「新しいメディアだと思っている」 [muffin★]
- 【速報】 米大使「はっきりさせておこう、米国は尖閣諸島含め日本の防衛に全面コミット、中国がどうしようが変わらない」 [お断り★]
- 自民、経済対策で子ども1人に2万円給付へ 児童手当に上乗せ 所要額は約4000億円 [ぐれ★]
- 高市総理「あなた、やるんでしょ?あのね、稼いでね。稼げるようにしてね。稼がなきゃだめよ、稼ぐのよ!じゃあ、あとよろしく(ガチャン」 [256556981]
- 【速報】高市首相「つい言い過ぎた」 存立危機事態の答弁について [237216734]
- 【ネトウヨ悲報】基地内で女性をレイプした基地外米兵「記憶がない」 [834922174]
- 【速報】中国、水産物輸入停止★2 [989870298]
- 山上妹「統一信者から安倍自民への投票を求められた」法廷で証言 [947332727]
- 【高市訃報】ホタテ業者、死亡😇😇😇 [573041775]
