スレタイ以外の言語もok
前スレ
次世代言語22 Go Nim Rust Swift Kotlin TypeScript
https://mevius.5ch.net/test/read.cgi/tech/1629590343/
次世代言語23 Go Nim Rust Swift Kotlin TypeScript
■ このスレッドは過去ログ倉庫に格納されています
2021/11/28(日) 16:59:19.16ID:gZqbEyz/
771デフォルトの名無しさん
2022/03/15(火) 21:19:56.63ID:lBfKiKMI >>765
それもしかしてわざわざ書いてくれた?ならどうも。
名前からしてそれは「アダプターパターン」になるのか?まあこれはさておき、
これがデザインパターンの問題を典型的に示してるとも思う。
デザインパターンは「実際にこう書ける」であり、「こう書きたい/書ければいいのに」ではないので、
実践的ではあるが現状肯定的で、理想的では全くない。
だからどうしてもバッドパターンが混ざり、言語が酷ければ酷い程それが増える。
Javaの場合は関数ポインタを直接取り扱えない事が致命的に欠点で、結果、
関数ポインタ専用コンテナとしてクラスを用いて継承をこねくり回したパターンが多くなってるが、
それらは他言語では不要なものばかりだ。
本当は「あらゆる言語の中で一番美しい書き方」集にすれば良かったのだろう。
それもしかしてわざわざ書いてくれた?ならどうも。
名前からしてそれは「アダプターパターン」になるのか?まあこれはさておき、
これがデザインパターンの問題を典型的に示してるとも思う。
デザインパターンは「実際にこう書ける」であり、「こう書きたい/書ければいいのに」ではないので、
実践的ではあるが現状肯定的で、理想的では全くない。
だからどうしてもバッドパターンが混ざり、言語が酷ければ酷い程それが増える。
Javaの場合は関数ポインタを直接取り扱えない事が致命的に欠点で、結果、
関数ポインタ専用コンテナとしてクラスを用いて継承をこねくり回したパターンが多くなってるが、
それらは他言語では不要なものばかりだ。
本当は「あらゆる言語の中で一番美しい書き方」集にすれば良かったのだろう。
772デフォルトの名無しさん
2022/03/15(火) 21:20:12.77ID:lBfKiKMI 上記の通り、結局それは、関数ポインタを直接扱えなかった欠点を回避する為に、
関数ポインタ専用コンテナとして「匿名クラス」を用いているだけ。
素直に関数ポインタを直接扱えるようにすれば不要だった。
勿論ラムダの代替にもなるが、結局ラムダも入れてしまってるのだから、やっぱり「クラス」に見えるのは使いづらいんだよ。
(この辺はC++も同様で、ファンクタでいいだろ、でずいぶん粘ったようだが、結局ラムダも入れてしまってる。
C++に関しては仕様の直交性なんて誰も求めてないので、粘った意味も分からないが)
Java::匿名クラスのところを
> label.addMouseListener(new MouseListener() {
> public void mouseClicked(MouseEvent e) {}
> public void mouseEntered(MouseEvent e) {}
> public void mouseExited(MouseEvent e) {}
> public void mousePressed(MouseEvent e) {}
> public void mouseReleased(MouseEvent e) {}
> });
JS:汎用コンテナで普通にかけるので、○○パターンとかの命名なんてされない。
> label.addMouseListener({
> mouseClicked: function(e) {},
> mouseEntered: function(e) {},
> mouseExited: function(e) {},
> mousePressed: function(e) {},
> mouseReleased: function(e) {},
> });
ただしこんな書き方は普通はせず、単に
elem.onclick = function()e){};
で済まされるが。
関数ポインタ専用コンテナとして「匿名クラス」を用いているだけ。
素直に関数ポインタを直接扱えるようにすれば不要だった。
勿論ラムダの代替にもなるが、結局ラムダも入れてしまってるのだから、やっぱり「クラス」に見えるのは使いづらいんだよ。
(この辺はC++も同様で、ファンクタでいいだろ、でずいぶん粘ったようだが、結局ラムダも入れてしまってる。
C++に関しては仕様の直交性なんて誰も求めてないので、粘った意味も分からないが)
Java::匿名クラスのところを
> label.addMouseListener(new MouseListener() {
> public void mouseClicked(MouseEvent e) {}
> public void mouseEntered(MouseEvent e) {}
> public void mouseExited(MouseEvent e) {}
> public void mousePressed(MouseEvent e) {}
> public void mouseReleased(MouseEvent e) {}
> });
JS:汎用コンテナで普通にかけるので、○○パターンとかの命名なんてされない。
> label.addMouseListener({
> mouseClicked: function(e) {},
> mouseEntered: function(e) {},
> mouseExited: function(e) {},
> mousePressed: function(e) {},
> mouseReleased: function(e) {},
> });
ただしこんな書き方は普通はせず、単に
elem.onclick = function()e){};
で済まされるが。
773デフォルトの名無しさん
2022/03/15(火) 21:21:54.17ID:lBfKiKMI あとついでに言うと、Java的にあらゆるイベントを纏めて記述方式はコード的に無理があって、 --- (A)
だいたいclick系とmove系(Enterd/Exited/Pressed/Released)は別物になる。
前者はそのelemだけで完結するが、
後者はドラッグ&ドロップ等なので、大体周りのelemにも同じようなコードを走行させる事になるから。
だから「匿名クラスでその場に定義のみ」だとかなり悲惨なコピペだらけになる。
最低限、そのメソッドに直接関数を差し込める書き方、
function click(){}
function move(){}
label.addMouseListener({
mouseClicked: click,
mouseEntered: move,
mouseExited: move,
mousePressed: move,
mouseReleased: move,
});
とかが出来ないと死ねる。で、Javaはこれも出来なかったように見える,。(Java7までは)
だからJavaのGUIは完全に死んだ。
ただしイベントがバブルする場合は上記 (A) の問題は実質的にない。
(どうせ纏めて記述するに近い物になるので。
つってもJavaのGUIなんて全く整備されてないから未だにバブルしないんじゃないかとも思うが。
なお.NETはWPFからバブルする)
だいたいclick系とmove系(Enterd/Exited/Pressed/Released)は別物になる。
前者はそのelemだけで完結するが、
後者はドラッグ&ドロップ等なので、大体周りのelemにも同じようなコードを走行させる事になるから。
だから「匿名クラスでその場に定義のみ」だとかなり悲惨なコピペだらけになる。
最低限、そのメソッドに直接関数を差し込める書き方、
function click(){}
function move(){}
label.addMouseListener({
mouseClicked: click,
mouseEntered: move,
mouseExited: move,
mousePressed: move,
mouseReleased: move,
});
とかが出来ないと死ねる。で、Javaはこれも出来なかったように見える,。(Java7までは)
だからJavaのGUIは完全に死んだ。
ただしイベントがバブルする場合は上記 (A) の問題は実質的にない。
(どうせ纏めて記述するに近い物になるので。
つってもJavaのGUIなんて全く整備されてないから未だにバブルしないんじゃないかとも思うが。
なお.NETはWPFからバブルする)
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★2 [Hitzeschleier★]
- 「暖房が使えない」「食費が高くて子どもの栄養が…」 物価高に苦しむ子育て世帯、政府に期待する支援は [蚤の市★]
- 【米国】「トランプ・ゴールドカード」の受付開始 1億5600万円でアメリカの永住権を獲得 ウェブサイトで申し込み [ぐれ★]
- 日本語が話せない「外国籍」の子が急増中、授業がストップ、教室から脱走も…先生にも大きな負担「日本語支援」追いつかず [七波羅探題★]
- 【東京】テレ朝本社から社外スタッフの男性が転落し死亡 テレビ朝日がコメント 通行人の男性巻き込まれ軽傷 六本木 [ぐれ★]
- パワフル女性世界3位に高市首相 米誌フォーブス選出 [蚤の市★]
- エナジードリンク、危険だった。飲酒喫煙もせずランニングが趣味の54歳の若者が毎日たった8本飲むだけで脳卒中に [742348415]
- 高市「野党はもう債権とか為替の話はしないで!よく分からないから答えない!」 [884040186]
- 馬鹿で幼稚な奴ほど自分が偉いと思ってるのなんなん?
- Twitter医師ら「死ぬほど勉強して博愛精神求められるとかそらみんな美容外科なるわ。嫌なら普通の医療も保険診療廃止しろ!」 [762037879]
- 五等分の花嫁でくっせえうんこひり出してそうな女の子
- はるととかいうスマブラやってる不登校のガキしね
