+ JavaScript の質問用スレッド vol.125 +

■ このスレッドは過去ログ倉庫に格納されています
2018/02/18(日) 16:48:01.14ID:F2O3xW/S
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-4のテンプレを読んだ上で質問してください。

■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
  (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
  ※必ず「問題の事象が再現されること」を確認してください。
   必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。


前スレ
+ JavaScript の質問用スレッド vol.124 + [転載禁止](c)2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1427008785/

(ライブラリ禁止条項は、多数の意見によって廃止されました。ライブラリの質問もOKです)
2018/04/07(土) 21:34:45.38ID:C4tJt4pN
>>420
え? お前マジでそれいってんの?
知識なさすぎるだろw
2018/04/07(土) 21:36:42.10ID:C4tJt4pN
1つ目

> つかXAMLってWPFかよ。
XAMLはXAML、WPFとともに作られたがWPFではない
実際にXamarinでも使われている
2018/04/07(土) 21:37:55.91ID:zzgNzmOg
>>405
ほんと?情報ありがとう。
じゃあ Firefox の実装が変なんかな。
どんなに
GainNode.gain.value = v;
なり
GainNode.gain.setValueAtTime(v, t);
なりで指定しても GainNode.gain.value が 0.1400049 みたいな固定の値しか返してくれないんだ。
初期値(=1)でもないし、なんじゃその値は。
自分のためにつくってるプログラムだから Firefox でないと意味ないし…。まあ別の方法でリリース制御はできたからいいけど。
2018/04/07(土) 21:38:03.28ID:C4tJt4pN
2つ目

> 見た目、以下か。
名前からXAMLはXMLの一種だと気づけ
そもそもXMLにはHTMLという決まったタグはなく
タグを仕様として作ってから使うもの、その仕様の一つがXAML
2018/04/07(土) 21:38:33.13ID:C4tJt4pN
3つ目
> ・終了タグ必須
XMLなんだから当たり前
2018/04/07(土) 21:38:52.62ID:C4tJt4pN
4つ目

> ・textNodeなし、絶対にタグで囲め
XMLなんだからtextNodeある
2018/04/07(土) 21:39:10.03ID:C4tJt4pN
4つ目

> ・case sensitive
XMLなんだから当たり前
2018/04/07(土) 21:39:54.29ID:C4tJt4pN
6つ目

> まあ確かにHTMLを参考に作ったんだからこうなるわな。仕様としては妥当だ。
XMLをベースに作った。HTMLは関係ない
2018/04/07(土) 21:42:00.86ID:C4tJt4pN
7つ目

> とはいえ冗長だし、人間が書く用ではないが。

人間でも読み書きしやすい

> http://ytabuchi.hatenablog.com/entry/2017/01/04/160000
> 新年一発目は XAML Previewer についてです。Xamarin.Forms の XAML は手書きする必要があります。
2018/04/07(土) 21:42:28.61ID:C4tJt4pN
8つ目

> ただ個人的には、XAMLとか中途半端なことをせず、
> WPFはHTMLを全面採用した方がいいとは思ったが。

HTMLはタグセットが決まってるのでそんな事はできない
2018/04/07(土) 21:42:55.93ID:C4tJt4pN
ほんとひどいわw
1レスでいくつ突っ込めば良いんだか
2018/04/07(土) 21:50:31.07ID:b9R9ZKfb
> ID:C4tJt4pN
いろいろ、お疲れ様(大変だな…)
2018/04/07(土) 21:53:48.31ID:C4tJt4pN
そもそも属性を要素とみなしてしまえばRangeで扱えるようになるとか言ってるが
今まで属性はRangeに含まれていなかったのに、勝手に含まれるようになれば
互換性が壊れるって分からんのかね?
2018/04/07(土) 21:57:51.13ID:EBKHgg8Q
この人HTMLを<tag attribute="属性値">内容</tag>みたいな書式のことだと思ってるのでは
2018/04/07(土) 22:41:28.46ID:Igh7VnfA
>つまり終了タグ無し要素は無しになってるだろ。
空要素の記述方法が、XMLでは<hoge></hoge>か<hoge />とする。HTML5では<hoge>とすることになっただけ
パース後の内部表現は同じ

>XHTMLとかも要するにAltHTMLだろ
すでにhtml5が発行されて、議論は終結した。

>パーサ
例えば、こういうコードがすでに存在するとする。
<input value="aaa">bbb</input>
現在はXMLとして書くと「<input value="aaa" />bbb」となるが仕様変更すると「<input value="aaa">bbb</input>」となり、解釈が変わってしまう

>未確定文字
とりあえず、WindowsのIME関連のAPIを調べてみればわかるけど、かなり複雑な部類
スマホの横持ちとかでは、全画面が入力欄になったり、音声入力があったり、将来的な変化も見込まれる
2018/04/07(土) 22:42:36.62ID:Igh7VnfA
JavaScriptやDOMに疎いのはまだしも、XMLの知識がおかしいのは流石に現代プログラマーとしてヤバさを感じる
2018/04/07(土) 23:06:52.65ID:9ZwFE3Ij
>>435
> 例えば、こういうコードがすでに存在するとする。
> <input value="aaa">bbb</input>
> 現在はXMLとして書くと「<input value="aaa" />bbb」となるが
これは本当なのか?この記述をしているところのソースくれ。
なお俺はこれは間違っていると思うぞ。
俺は /> で閉じて良いのは中身がないときだけであり、
中身がある場合は常に閉じタグ</input>を使わなければならない、と理解している。
勿論、ご指摘のように、俺はXML専門家ではないが。

> とりあえず、WindowsのIME関連のAPIを調べてみればわかるけど、かなり複雑な部類
> スマホの横持ちとかでは、全画面が入力欄になったり、音声入力があったり、将来的な変化も見込まれる
それで?
未確定文字は結局の所、
・未確定でも値に反映して確定後に書き直す…俺の環境
・確定するまでは値に反映しない
のどちらかしか無いと思うが。
2018/04/07(土) 23:15:52.25ID:b9R9ZKfb
>>435
> 現在はXMLとして書くと「<input value="aaa" />bbb」となるが
HTML parserで動かしてないか?
XML parserならSynraxErrorになりそうだが、Content-Typeは正しく指定されてるのかね…
2018/04/07(土) 23:17:16.27ID:b9R9ZKfb
>>437
ソース以前に動かしてみては?
2018/04/07(土) 23:30:47.47ID:4rKbHeHg
後方互換性の話かと
現在のHTML5では、<input>要素に終了タグを書いても無視されるので

<p>xxx<input value="aaa">bbb</input></p>
のパース後のDOMは
p
├xxx : テキストノード
├input value="aaa": HTMLInputElement
└bbb: テキストノード

これをXMLで表記すると <p>xxx<input value="aaa" />bbb</p>

仮にHTMLがinputをnon-emptyとして扱うするように仕様変更すると、パース後のDOMが変わり
p
├xxx : テキストノード
└input value="aaa": HTMLInputElement
  └ bbb: テキストノード

仕様変更の前後どちらの文書なのか検出してパーサを変えなきゃいけない。
ブラウザはバリデータではないから、間違ったマークアップが施された文書だからって無視するわけにはいかない。
2018/04/07(土) 23:50:38.80ID:9ZwFE3Ij
>>439
おk。動かしてみたが再現した。
詳細は>>440の通り、今のDomParserだと</input>を無視するからだね。

>>440
> 仕様変更の前後どちらの文書なのか検出してパーサを変えなきゃいけない。
それはお約束がド頭に付いていることになってるから問題ないだろ。
2018/04/07(土) 23:54:37.15ID:4rKbHeHg
>>441
>それはお約束がド頭に付いていることになってるから問題ないだろ。
HTML5にはつかない。
HTML5にはDTDがないので

<!DOCTYPE html>

としか書かれていない。仕様変更の前後を識別できない。
2018/04/07(土) 23:59:47.21ID:9ZwFE3Ij
>>442
ならHTML6には付ければいいだけの話だろ。
2018/04/08(日) 00:09:15.29ID:jz2dP/7i
>>443
HTMLは4.01以前と違ってそうやって大きくバージョンを区切る方式を取りやめ
HTML Living Standard として日々更新を続けるようになりました。

HTML1.0→2.0→3.2→4.01のような大々的変更を移行期間を取って行うのではなくて、
日々少しずつ更新される HTML Living Standard に追従してブラウザは機能を実装し、
ある程度の段階でマイナーバージョンとしてw3cが勧告を出す、という流れになっています

ですから、文書のパース結果のDOMが変わるような大々的変更はしばらく行われることはないでしょう。
2018/04/08(日) 00:09:47.27ID:aXntJlTD
>>437
未確定文字は、実装依存で各ブラウザによって動作がかなり違う
ブラウザはもちろん、OS、デバイス、デバイスの状態、IME、IMEの設定などに左右されるので対応困難
求めるものにもよるけど、現状のなんとなくvalueを見るが限度。「Range で統合的に取り扱う」なんてのは結局実現できない

もっと変なことをしたいなら、オンラインのエディタとかVSCodeとかをみてみるといいよ。苦しいながら、実装はしてある


DOMパーサの破壊的変更は過去のブラウザやパーサが全滅するわけで、相当の理由と議論がなければ無理。
refererのスペルミスを直せレベルのハイリスク・ノーリターン
2018/04/08(日) 00:25:59.31ID:q6t9xNUg
2chで知りたいことがあったら知ったかぶりしていい加減なことを言えばいいというのは本当だな
2018/04/08(日) 00:39:24.70ID:02MXQevY
>>441
> 詳細は>>440の通り、今のDomParserだと</input>を無視するからだね。

今のDomParserというが、HTML5では仕様化された。

なんと現実に存在する動きに合わせて仕様が作られ
間違ったHTMLであっても、どのブラウザでも同じように表示されるように
間違ったHTMLをどのように解釈するかが仕様化された
2018/04/08(日) 00:39:48.62ID:02MXQevY
訂正 なんと現実に存在するブラウザの動きに合わせて仕様が作られ
2018/04/08(日) 00:46:38.70ID:XS6Mxip8
>>440
なるほどね、HTML parserでXHTMLを読み込ませたケースを想定しているのか

> ブラウザはバリデータではないから、間違ったマークアップが施された文書だからって無視するわけにはいかない。
いや、XHTML parserなら正しく文法エラーをはねるよ
HTML parserが文法違反に寛容なだけ
2018/04/08(日) 00:48:51.56ID:XS6Mxip8
>>442
というか、Content-Typeでparserを振り分けてるから、bodyを読み込んだ後でparser分岐が発生する仕様にすると遅すぎるよね
2018/04/08(日) 00:52:09.01ID:02MXQevY
html5のDOCTYPEはこのように短い。 <!DOCTYPE html>

html4まではこのように長かった。だがこれが正式な書き方だった。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd";>

なぜhtml5ではこのように短くなったか? それは単に長いという理由の他に
IE6では当時は間違った書き方である <!DOCTYPE html>でも標準準拠モードとして
扱うという仕様だったため、ならもうhtmlだけでいいじゃん、動くしwww
という理由でこうなった

また、metaタグによるcharsetの正しい指定方法は本来これ

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
contentが属性であり、その中に値として "text/html; charset=utf-8" と書かなければいけなかった
html5では<meta charset="utf-8">だけで良い。

なぜこのような仕様になったか? それは間違ったHTMLでも
それなりに解釈してあげるよという それはIE6のおせっかい機能を仕様にしたものだった。

iE6のおせっかい解釈

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
↓ http-equiv 書かないやついるかもしれないだろ?
<meta content="text/html; charset=utf-8">
↓ ダブルクォートでくくらないやついるかも知れないだろ?
<meta content=text/html; charset=utf-8>
↓ content 書かないやついるかもしれないだろ?
<meta charset=utf-8>

よし、これでIE6動くんだから、これをHTML5の仕様にしてしまおうぜ!
HTML5の仕様を考えたやつはいい意味で頭がおかしい。
かくしてHTML5は間違ったHTMLを解釈する方法が仕様化された
2018/04/08(日) 00:58:14.62ID:02MXQevY
>>449
> いや、XHTML parserなら正しく文法エラーをはねるよ
> HTML parserが文法違反に寛容なだけ

XHTMLはXMLをベースとしてしたから、XMLとして
正しくなければ描画できない。

これはどのブラウザでも同じように解釈させるため
間違った書き方を排除することで、どのブラウザでも
同じように描画できるようになるはずだった。

だが現実には単にエラーになるHTMLばかりで
手間がかかるだけで何もメリットを生み出さなかった

それをよこめにブラウザベンダーXHTMLではなく
現実的な回答をHTML5という形で実現させた。

それが間違ったHTMLを解釈するための仕様だ。
これにより、HTML5は文法違反であっても
どのブラウザでも同じように解釈されるようになった

今は文法違反を単に無視するのではない、
文法違反は仕様どおりに解釈するのだ
2018/04/08(日) 01:00:34.14ID:r7P3P+qn
2018年に「HTML6」なんてワードがITエンジニアの口から出てきたらそれだけで採用面接落とされるよ
2018/04/08(日) 02:37:17.99ID:XS6Mxip8
>>452
HTML StandardはXML parserも定義しているわけで、XMLが完全に排除されたわけではないけどね
選択の自由はユーザにある
2018/04/08(日) 08:42:00.29ID:VuXsA/ts
>>423
例えばGainへの接続を切ったり、その前のノードを止めたりして
Gainへデータが流れていないとvalueは変わらないぞ
2018/04/08(日) 21:52:46.54ID:3hKhfzCU
Javaの教祖マーティン・ファウラー御大、名著「リファクタリング」第2版にJavaではなくJavascript を採用してしまうwwwww
https://martinfowler.com/articles/201803-refactoring-2nd-ed.html
457デフォルトの名無しさん
垢版 |
2018/04/08(日) 22:32:39.78ID:xVZVETA8
>>456
「Choosing JavaScript was deeply ironic for me, as many readers may know, I'm not a fan of it. [2] It has too many awkward edge cases and clunky idioms. 」
2018/04/09(月) 01:47:06.19ID:kgzcxRrK
but still has annoying holes that are built into the fabric of the language from its earliest days.
2018/04/09(月) 01:53:52.04ID:msbZsOvU
嫌いだけどそうせざるを得ないんだろうマーケティング的に。今更Javaの本書いてもなぁ。
かと言ってC#かというとう〜ん。
消去法でこれしかないじゃん。
でもマーチンファウラーが書くとなるとクラスベースオブジェクト指向だろうな。クラスベース構文や方法論嫌ってるやつも多いjavascriptコミュニティでの受け取られ方やいかに。
2018/04/09(月) 02:08:42.88ID:0VIzl/J9
クラスベース構文や方法論嫌ってるやつも
使わざるを得ないだろ、ビジネス的に
JavaScriptという言語がクラスベース取り入れたんだから
2018/04/09(月) 06:15:30.79ID:vWAB0e2q
JSが取り入れたのはよりまともなクラスシステムなだけだぞ
クラスベースっていうのはそのクラスシステムに縛られざるを得ない言語のことを指すのであって
プロトタイプベースの言語でも結局構造化の過程で何らかのクラスシステムを利用するのは当然だけど
それに縛られないっていうのがポイントなんだから、そこは変わっていないぞ
あくまでまともな選択肢が増えたと言うだけだ

「mapメソッドが追加されたから、関数型嫌ってる奴も使わざるを得ない」
というのと同じくらい大げさ
2018/04/11(水) 09:34:32.16ID:smzFdsBm
functionでクラスが作れるとか特殊すぎだもんな
個人的には好きだけど
2018/04/12(木) 15:16:11.08ID:DzOsC0dD
最近monacaでアプリ作ってるって子から相談を受けて、調べた結果なんとか解決してあげられたんだけど
onsenUIってどうなの?
あと、リファレンスがまとまってる所が見づらかったので、良いサイトないかなって探してるんだけどどっかある?
2018/04/12(木) 16:38:31.34ID:wSM7wjKl
公式
2018/04/13(金) 00:33:02.90ID:A0gJizVs
さよか…ありがとさん

俺の頭が悪かった
onsenUIやるのにいい感じのハウツーなサイトない?
2018/04/13(金) 06:19:29.59ID:jzM66miO
公式リファレンス見てできるようにならんといつまで経ってもそのままだぞ
2018/04/13(金) 09:57:14.70ID:FrMRwPS8
コードを読むときには役に立つが、逆引きには全く使えなくない?
というか、リファレンスとか言うからいけないのか
サンプルが欲しいっす

あと、エミュレータと実機で動き違うの酷くね?
デバッガ入れるの面倒でエミュレータいじってたから普通にハマったわ
2018/04/13(金) 09:57:44.50ID:FrMRwPS8
ああ、monacaの話ね
2018/04/13(金) 11:08:11.35ID:EHHg9a+/
chromeのモバイルビューエミュレートも実機とは違うし。
何でも実機デバッグは基本。
2018/04/13(金) 11:12:22.14ID:mypQCyHY
まともに動くと思った俺が馬鹿だったよ…
次は気をつけるので許してください
2018/04/13(金) 11:26:25.29ID:5o5PmncH
せっかくだし、笑われついでに書いてしまうか
関数の呼び出しで

function hoge(){
alert❨"押された!c=" + para❩;
}

--中略--
page内
<ons-list-item tappable onclick="hoge(c=5)>押せ!</ons-list-item>

みたいなコードがあって、このc=5の意味が全くわからなくてさ
エミュレータ上ではcは1で初期化されてて
実機では3が代入されていた
jsは詳しくないけど、なんじゃこりゃと面食らってしまった
概念の名前だけでも誰か教えてくれないか?

もう一つはons.readyが呼ばれない件だから、一応リファレンスにも書いてあってなんか納得は出来たんだけども
2018/04/13(金) 11:27:22.69ID:5o5PmncH
あ 実機で代入されていたのは「5」3だったらスマホ壊してたわ
2018/04/13(金) 12:04:12.48ID:46z6ANhe
>>471
そこで代入するのはなんと言うかエグいな。
2018/04/13(金) 12:34:59.42ID:DjESFZE8
>>473
そもそもそんなコード、この環境以外で動くのか?
関数内でcは宣言してないから、スコープ的に見えないだろと思っていたら動いてて気持ち悪い…
2018/04/13(金) 12:44:41.63ID:EHHg9a+/
> 関数内でcは宣言してないから、スコープ的に見えないだろ

ハァ?Javascript知らないなら「Javascriptのことは門外漢ですが、」とレスの冒頭に書いとけよ。
2018/04/13(金) 13:54:34.77ID:/4IgikGU
>>475
すまんね
門外漢です
2018/04/13(金) 14:18:21.01ID:uFDuBN0A
友だちが教えてくれた
要するに引数未定義でも引数を与えられるんだな
んで、代入式の戻り値が渡されていると
cは代入式が処理された際にグローバル変数として宣言された事になると

スッキリした
サンクス
2018/04/13(金) 21:16:32.36ID:jzM66miO
引数は関係がない
関数内のcはグローバルスコープのcを指していて
イベントハンドラ中のc=でそのグローバル変数のcに代入されてるだけ
2018/04/13(金) 21:55:58.78ID:3gss+MPG
ありがとう
一応自分でも調べたよ
代入式の戻り値は代入した値で
この場合hogeの中ではargument[0]が5って参照できるんだってね
引数が多いときに便利らしいけど、Java勢だから想像すらできなかったわ
てか今見るとparaになっててだめだこりゃ
2018/04/13(金) 22:16:57.07ID:22/J2oga
>>479
横だが、まだそれでもだいぶ理解を間違えているがな。argumentSだ。
複数形かどうかはJavaScriptにおいては無駄に厳密に適用されてる。

あと、>>471のコードはかなり酷い。
公式でこれならかなり終わってるし、
なら数年以内に確実に廃れると思うから、そのフレームワーク自体使わない方がいいと思うぞ。

それから、Java自体はかなり終わっている言語な事を自覚した方がいい。
(>>456内でも言及されているが、関数ポインタがなかったというのが救いようがない)
それとは別に、JavaScripterもプログラマとしては終わっているから、
この意味ではまともなJava勢が流入してくることは俺は歓迎するが。

君はちなみにJavaならどれくらい書ける?
2018/04/13(金) 22:20:20.57ID:AzlDcdDn
>>480
お前Java書けなそうだなw
どうせ15年以上前の知識しか持ってないだろ?
2018/04/13(金) 22:21:46.50ID:lMDCuKf+
arguments[0] には 5 が(代入式 c=5 の評価値)入っていて、hoge から読み出せるが、この場合それは参照されていない。
グローバル変数 c が読み出されてるだけ。
もちろん良いやり方ではない。
2018/04/13(金) 22:34:41.82ID:22/J2oga
>>481
俺は>>456内での著者の判断には同意する。
ただしそれは>>459の言うようなマーケティング上の理由ではなく、
著者の言うような技術的な問題だよ。

マーケティング的にはJavaは最も成功した言語だし、
リファクタリングが今後必要なソフトウェア資産もJavaが最も多いのは事実だ。
JavaScriptなんて保守する価値もないゴミコードばかりだし、
それ以前に書き捨ての文化だろ。俺はこれが悪いとも思わないが。
2018/04/13(金) 22:36:36.70ID:AzlDcdDn
いや、私は考えが浅いですって
話はしなくていいからw
2018/04/13(金) 22:43:53.29ID:FyzkYz2B
この人HTMLやXMLの基礎の基礎も知らないで適当ぶっこいてボロクソに叩かれた人でしょ
2018/04/13(金) 23:00:49.06ID:3gss+MPG
>>480
うん、俺も書いてから漏らしたと思った
ありがとう

公式…?
分かりづらいかも知れないけど、俺>>463
知り合いの会社の新人の子とやらが書いたコードをデバッグしててハマったんだよ

俺がどのくらい書けるかって言われてもなあ
SIerだから推して知るべしって感じ
趣味で多少は書くし、量産型の中ではマシな方じゃないってレベル
あと、もう6年くらい前にInazumaVotouってAndroidアプリで投票騒ぎを起こしたことがあるよ
コードはウンコでスパゲティだったが、一応動いたな(笑)
2018/04/13(金) 23:03:54.21ID:AzlDcdDn
で、なんのためにどれくらい書けるのか聞いたのか
おそらくスキあらば叩こうと思って聞いたんだろうなw
2018/04/13(金) 23:04:39.19ID:3gss+MPG
てか理解を間違えてるってのは複数形のこと?
他の事なら聞いておきたいなって
2018/04/13(金) 23:11:00.93ID:22/J2oga
>>486
ググっても出てこないがイナズマイレブンの人気投票で大騒ぎしたあれか?

>>488
お前こっちに来るか?
JavaScript情報交換所(プログラミング既習者専用)
https://mevius.5ch.net/test/read.cgi/tech/1449440793/
Javaで3,000行以上平気で書けて、JavaScriptもやりたいというのなら俺は応援する。
正直なところ、JavaScript使いはプログラマではなくデザイナやExcelマクロレベルなので、
開店休業状態になってる。
他に聞いておきたいこともあれば、それも答えるが。
2018/04/13(金) 23:19:13.12ID:3gss+MPG
>>489
それそれ
検索でなくなっちゃったか
楽しかったからたまにまとめブログ見ると未だにニヤつけるんだよね

俺は勘違いしてなければいいや
今後もその子サポートをしてやってほしいって言われてるから、困ったら聞きに行くかも

あと、煽るわけじゃないけど行数多けりゃ良いってもんでもなくない?
100万ステップのモンスターを一人で保守させられてたが、文字のスプリットから手作業でやってたりとか
if(a==1){data=1}とかってクソコードが目についてなあ…(笑)
俺が最初に作ったオセロでも1000ステップ位はあっと思うぞ
やっぱ書いて消してのクソコードばっかなんだがね
2018/04/13(金) 23:23:23.41ID:22/J2oga
>>486
ちなみに「公式」ってのはこの場合onsenの公式サイト上のコードのこと。
その知り合いがどれくらい書けるのか知らんが、
書けない奴が公式サイトからコピペするのはよくあることだし、
書ける奴はこんなコード最初から書かない。
だからコピペでソースは公式の可能性が高いと見ての話だ。
2018/04/13(金) 23:26:46.07ID:3gss+MPG
>>491
ああ、それならなんだったか
リストの番号を関数に渡す方法がわからなくていじった云々言ってたよ
流石に公式がこんなウンコみたいなウンコしてたら誰も使わないっしょ
2018/04/13(金) 23:35:31.90ID:3gss+MPG
あ 1読んだら学習スレでしたか
ごめん、もう来ません(汗)
2018/04/13(金) 23:40:56.87ID:22/J2oga
>>490
> あと、煽るわけじゃないけど行数多けりゃ良いってもんでもなくない?
これはその通りだが、説明は後述するとして、

> 100万ステップのモンスターを一人で保守させられてたが、文字のスプリットから手作業でやってたりとか
君は余裕で合格、俺は歓迎する。

> 俺が最初に作ったオセロでも1000ステップ位はあっと思うぞ
俺が思うに、Java勢で3,000行のコードを取り扱ったことがない奴はいないと思うんだよ。
君のように他人が大量に書いたコードを保守させられて、規模とかも次元が違うだろ。

ところがJavaScripterにはこれがいないんだよ。ここら辺からだいぶ違う。
理由は簡単で、実際、JavaScriptにおいてはそこまでの規模にならないことも多いからだ。
ただ、これがかなりの元凶で、1,000行程度ならデタラメでも動かせるし、
保守するにしても書き直した方が早いから書き捨てになってしまう。
俺が思うに、ちゃんとした構造を考えて、Javaなら当然OOPに乗せて、
その効果を発揮するのはおそらく3,000行程度以上からで、
逆に言えば、それ以下で収まるのならグダグダ考えずに書いた方が早い。
勿論Javaではこんな事は認められず、「まず構造を考えてからコーディングしろ」となっていると思う。
それが仮に100行のコードであったとしてもね。
それはJavaは現在においては超大規模なコードを扱う前提だから、OOPに乗ってないコードが存在すると困るから。
これは、プログラミングとしては正しい。
ところが、JavaScripterは「構造を考えることのメリット」すら知らないから、考えることもない。
だから話の内容が幼稚すぎてな。

JavaScript自体は良い言語だと俺は思うんだけどね。
何度も言っているが、>>456の著者の見解には同意する。
2018/04/14(土) 00:00:30.63ID:PXNRGkHz
お、おう
合格すか ありがとう
まあ俺JSは門外漢だし、交換できるほどの情報は持ってないよ

そもそも言語の歴史や方向性が違うから比較するのはナンセンスだと思うけどな
どんな言語だろうと業務システムでビジネスロジック書くのに使われてれば、再利用を想定した作りになると思うよ
UIが変わっても業務は変わらないからレガシーになりやすいと言うか
その中でJavaScriptはUI、Javaはロジックを担当してると言うだけでさ

良い言語も悪い言語も目的別に使いこなせるといいよねえ
その本については良く分からん(笑)
2018/04/14(土) 00:11:31.86ID:O/NvMApq
普通にReactとかelectronとかのプログラムは大規模になるし、oopしてるけどね
単に>>494 がJavaScript詳しくないだけでしょ
2018/04/14(土) 00:18:37.31ID:lQ9YVUmR
>>495
Javaが不味いのは、その著者も言っているとおり、
関数が第一級オブジェクトでないことだ。
正確には、第一級オブジェクトである必然性は多分無いが、
関数ポインタが使えず、その回避策に継承を用いるのは明確な間違いだ。
そしてJavaはこの期間が長すぎて、間違ったコードが量産されてしまっているし、
界隈に関数ポインタを使えない奴(使おうとも思いもつかない奴)も多すぎるだろ。

ただこれも、著者が言っているとおり、
その当時は関数ポインタなんてそんなに重要視されていなかった。
それよりはクラスシステムだったし、
逆に、今はそれがあるからこそ、その次の関数ポインタ、ってのはある。
だからこの辺の歴史的経緯を無視するのはナンセンスだが、
Javaはそれにしても進化が遅すぎた。

> どんな言語だろうと業務システムでビジネスロジック書くのに使われてれば、再利用を想定した作りになると思うよ
> UIが変わっても業務は変わらないからレガシーになりやすいと言うか
> その中でJavaScriptはUI、Javaはロジックを担当してると言うだけでさ
これはその通りだが、つまりはUIが変わり易すぎて、JavaScriptの場合は書き捨てになってしまっている。
結果、プログラマとしては全く上達してない。
Java->JavaScriptは、文法その他を覚えるだけでいいが、
JavaScript->Javaは、プログラミング自体に習熟する必要があるから、無理だね。
Web系()とか言って馬鹿にされているのも、状況を知れば納得すると思うよ。
2018/04/14(土) 00:26:34.68ID:GsxmWGC+
関数ポインタ関数ポインタってくり返し言うと素人っぽいぞw
関数ポインタがなにか分かってないやつの言い方だ
2018/04/14(土) 00:36:41.11ID:PXNRGkHz
そして俺は関数ポインタなんてよく分からん…(笑)
Javaのmethodオブジェクトじゃあかんの?
2018/04/14(土) 00:41:40.60ID:lQ9YVUmR
まあ見ての通り、こいつら幼稚園児かよって思うでしょ。
これがWeb系()の実態だよ。

Javaが良い言語とは全く思わないけど、
JavaのOOP至上主義は結果的にプログラマに上達を促している。
あんまり考えたことはなかったけどね。
JavaScripterは自由にやっているけど、方向性を間違えているから全く上達してない。
勿論ちゃんとやっている奴も中にはいるんだろうけどさ。

そこで俺は、ちゃんとしたプログラマがJavaScript界隈に流入してきて、
結果的にデタラメなお前らが駆逐されることを望んでいる。
勿論、お前らでもちゃんとしてれば駆逐されないし、界隈も浄化されるからお前らにもメリットがある。
お前らが反対しているのは、つまりは駆逐される側だと自覚してんだろ。
せいぜい安らかに死ね。
と言いたいところだが、残念ながら、早々変わらないとも思うが。
2018/04/14(土) 00:43:51.69ID:lQ9YVUmR
>>499
それはどれ?これか?
https://docs.oracle.com/javase/jp/6/api/java/lang/reflect/Method.html
俺はJava使いではないので、Java用語で言われても正確には分からん。すまん。
2018/04/14(土) 00:58:20.80ID:GsxmWGC+
そこに書いてあるreflectはJava用語じゃないなぁ
プログラミング用語だ。
知ってるふりした無知だなってよく分かる発言だなw
2018/04/14(土) 01:01:17.06ID:lQ9YVUmR
>>502
日本語でおk
2018/04/14(土) 01:07:13.37ID:GsxmWGC+
素人っぽさが文章に溢れてるって言うこと
あまり強い言葉を遣うなよ弱く見えるぞ状態
2018/04/14(土) 01:07:41.92ID:PXNRGkHz
>>501
公式リファレンスなんてめったに読まんから分からんが多分それ
関数ポインタって要は関数のアドレスを格納してる変数でしょ?
Javaの場合、プリミティブじゃなきゃ、だっか?忘れたが基本は変数すべてがポインタみたいなもんらしいよ
関数ポインタが使えて何が嬉しいかってのがよく分からんけど、呼び出す関数の差し替えができるとか、複数機能を横断的に使用できるとかって話じゃないのかね?

methodオブジェクトはインスタンス化されたクラスの中にある関数そのものへのポインタで、こいつを使うとクラスから関数引っこ抜いて直接呼び出したり書き換えたり出来る とうろ覚え
一回しか使ったことないからあやふやですまん
差し替えとか継ぎ足しが出来るかは知らんわ
2018/04/14(土) 01:12:07.98ID:GsxmWGC+
特に関数ポインタって繰り返してる所が素人っぽさを増強してる。
自分の知ってる言語の用語にとらわれている=他の言語を知らない
2018/04/14(土) 01:13:06.90ID:EDCk20xG
JavaScriptは書くのは本当に簡単なんだけど保守が難しい
OOPに則ってデザパタ使って自分で一から開発したソースでさえ数ヶ月も経つと分からなくなる
型もアクセスレベルも無いってのがとにかく最悪だな
2018/04/14(土) 01:15:14.19ID:GsxmWGC+
あと自分の実力を言語のせいにするやつとかなw
2018/04/14(土) 01:25:37.01ID:lQ9YVUmR
>>505
関数ポインタの理解については、それで合ってる。
問題は、いちいちリフレクションかよ!ってことで、もっと日常的に使おうよ!ってこと。

変数と同格で使えるようになれば、もっと分かりやすいコードが書けるよ、ってだけ。
書けば慣れるし、使えば確かに便利だと実感すると思うよ。

> 差し替えとか継ぎ足しが出来るかは知らんわ
これはやりたがっている奴はいるが、これ自体はさほどインパクトはないね。
2018/04/14(土) 01:29:04.89ID:GsxmWGC+
ほらな、やっぱり素人っぽさが出まくってるw
関数ポインタなんて言わずにJavaならJava用語使って言えよ
2018/04/14(土) 01:34:44.52ID:PXNRGkHz
>>509
あー
たしかこれで引っこ抜くの都度都度おまじないが必要だった気がするな
セキュリティーがどうとかだったか?

まあ、javaやってればそのくらいは身につくんじゃないの?
言われてみるとあったら便利だけど、無くてもクラスから呼び出すだけだからあんまりピンとこないな

それよりvmとgcが…おや、出かける時間だ
まあjavaScriptはどっかでちゃんとやりたいしその内お世話になるかも

その時は宜しくどうぞってことで
でかける時間になっちゃった(笑)
2018/04/14(土) 01:36:20.90ID:lQ9YVUmR
>>507
無理だからと言って書き捨てばかりしているようでは、
いつまで経っても書き捨てのコードしか書けない。
多少無理でも歯を食いしばって無理矢理でも保守しないと、
何が問題なのか認識できないし、当然改善なんて出来ない。

Javaにおいては多分最初から「書き直し」の選択肢はない。
これがプログラマを育てている一面はあるよ。

> 型もアクセスレベルも無いってのがとにかく最悪だな
関係ない。
が、関係あるのなら、君は「型」「アクセスレベル」の類推を文法に依っていることになる。
それが間違いだろ。
もっとも、書けば解決する話なら、TypeScriptみたいに、
或いはコメントにでも書いてしまえば解決するだけの話だろ。
試しにやってみろよ。
2018/04/14(土) 01:36:25.81ID:GsxmWGC+
はいはい。ここまでラムダもででこず、
やっぱり15年前の狭い知識で
粋がってただけだな
2018/04/14(土) 01:42:51.39ID:O/NvMApq
関数ポインタという用語をを日常的に使うのはCとレガシーなC++だけな気がする

JavaScriptは書き捨てるからクソと言われても、どこがどう悪いのか書いてないと詳しくない人が騒いでるようにしか見えんな
普通に巨大なプログラムはいくらでもあるんだけど
2018/04/14(土) 01:43:06.58ID:lQ9YVUmR
>>511
行ってらっしゃい。
まあその気になったらよろしく。

> セキュリティーがどうとかだったか?
つかそもそもリフレクションってこんな時に使うものではない。
あれは動→静変換とか、privateに上書きとか、だろ。

> 言われてみるとあったら便利だけど、無くてもクラスから呼び出すだけだからあんまりピンとこないな
それは使ってないときの実感としては合ってる。俺もそうだった。
だけど、使い出したら関数ポインタ無しなんて糞言語だと実感するようになる。

> それよりvmとgcが…おや、出かける時間だ
ここら辺はJavaと同じ。
JavaScriptもVM上(とは言われないが所詮はスクリプト言語だから)だし、GCもある。
2018/04/14(土) 01:44:57.09ID:5cjswZWE
どうやら都合が悪い話を見なかったことにしてるみたいだから
NGにして見えなかったと言い訳できないようにID変えておくねw

はいはい。ここまでラムダもででこず、
やっぱり15年前の狭い知識で
粋がってただけだな
2018/04/14(土) 01:46:57.86ID:yvWlA6Cs
>>514
> 関数ポインタという用語をを日常的に使うのはCとレガシーなC++だけな気がする

正解。関数ポインタが使われているのはC/C++と
あまり詳しくないけどObjective-Cもかな?
まあともかく多くのモダンな言語に関数ポインタなんてレガシーなものはない
2018/04/14(土) 01:49:54.42ID:lQ9YVUmR
>>511
ついでに言っておくと、
Web系言語(JavaScript/PHP/Go)はWeb情報に間違いが多いので、
MDNとStackOverflow以外はうのみにしない方がいい。
まあ、Java知ってれば、これ嘘くせー、ってのは大体分かるとは思うが。
2018/04/14(土) 01:57:39.97ID:JZ/lsel+
>>515
チャリがパンクexceptionをcatchしてwalk()を実行中。

リフレクションの詳しい意味合いまでは知らないなあ
無理やりいろいろ呼び出せるし便利って思ってたけど(笑)

へー、そうなのか
javascriptのエンジンってやつがvmなの?

>>518
そうなんだ?
条件にマッチしてるものを探すのがjavascriptの方が難しい気はするなあ
まあ、滅多にやらんから運が悪いのかも知れんけど
2018/04/14(土) 01:58:25.88ID:JZ/lsel+
とりあえずjava公式を見てjava用語じゃないとか言うのはどうかと思うよ…
■ このスレッドは過去ログ倉庫に格納されています