[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2ch.scのread.cgiへ]
Update time : 10/13 04:35 / Filesize : 243 KB / Number-of Response : 957
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

次世代言語議論スレ[Rust Kotlin Haskell]第6世代



1 名前:デフォルトの名無しさん [2017/08/28(月) 21:53:37.12 ID:5I+bTEeA.net]
※前スレ
次世代言語議論スレ[Go Rust Scala Haskell]第5世代
mevius.2ch.net/test/read.cgi/tech/1497311647/

804 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 15:37:04.38 ID:7ywnpNtw.net]
>>773
G unk0

805 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 16:45:23.64 ID:Kxlb0HsF.net]
次世代PHPスレは流石に笑う

806 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 17:28:58.04 ID:TUvpXpRh.net]
旧世代代表やろPHPて
頭おかしいんちゃうか

807 名前: mailto:sage [2017/10/01(日) 18:07:49.52 ID:14LFf82H.net]
>>759
フレームワークが、Railsのパクリみたいな無理矢理他の思想を持ってきたようなものなら、合わないと思う。

>>761
汚物を汚物と認識して、一定の範囲で閉じ込めて使う分には全く問題ないよ。
歯ブラシで台所を磨こうとするからおかしくなる。
便利だし形が似てるから使うもんでもない。
プロジェクトが糞まみれだったなら、そりゃプロジェクトが悪いわ。おそらく、どこもかしこもphpで書いてあるようなプロジェクトだろうけど。
DBへのバッチをphpで書いてるプロジェクトはゴミだと思うが、DB周りはそれなりの言語で、画面だけphpとjQuery、なんて諦めがあって良いと思うよ。

808 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 18:18:14.66 ID:YXjJncWi.net]
また意味不明なことを
DB周りがそれなりに強いと自分で言ってるのに何故DBバッチをPHPで書いてはいけないのか?
PHPの問題はペチパーのコーダーとしての品質の低さ。言語自体の問題ではない。
閉じ込めて使うべきというのは同意するが、それはペチパーの得意分野がフロントだから。
それ以外までペチパーに手を出させるとシステムの品質は著しく低下する。バッチをPHPで書いてはいけないのはそういうこと。

809 名前:808 mailto:sage [2017/10/01(日) 18:29:30.88 ID:YXjJncWi.net]
ああすまん、読み違えてたわ
それなりの言語→PHPではなく他の言語
と置き換えれば矛盾はないな
でも単純に言語を置き換えても決して品質が向上することはない。
全てPHPで書かれてるプロジェクトの品質が低いのはコーダーの品質が低いから。あくまで人の能力の問題。

810 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 18:42:01.00 ID:yhU1ELrC.net]
そいつの文を読もうとするから……

811 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 18:54:18.97 ID:TUvpXpRh.net]
それもう無理矢理PHP使う必要ないよね、っていう
複数言語使って学習コスト上げるだけだよね、っていう

812 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 19:45:13.63 ID:5jXWEgsq.net]
phpの問題点はどんな言語仕様も取り込んでいることだと思う。
正直ダックタイピングの動的言語にインターフェースがある理由がよくわからん。
いや。まぁいいんだけど。
なんというかできないことが明確って結構重要だよね。
なんでもできる分、人によって全然やり方が変わる。
c++みたいな嫌な感じがする。

とGoをよく触るようになって思いました。



813 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 19:59:18.22 ID:tmbSNjLz.net]
>>812
typescript「…」

814 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 20:26:31.04 ID:YXjJncWi.net]
型はむしろやり方を統一するのに役立つだろ
ソースに型書かないなら結局ドキュメントに書くんだから

815 名前: mailto:sage [2017/10/01(日) 20:27:13.36 ID:14LFf82H.net]
>>808
バッチとするには遅すぎるし、例外の扱いは適当だし、向いてない。
何より、仕様として180秒以上動いてれば殺すとかそういう設定項目がある時点で、あれはSSI用の言語。

向いてる向いてないを、コーダのせいにしてはいかん。
歯科衛生士を台所を歯ブラシで磨く名人にする必要は無い。

>>811
学習させなくてももう使える奴がいくらでも居るからな、phpは。
perl全盛の頃に、C組とperl組に別れてたようなもん。

>>812
よくわかる。

816 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 21:09:45.37 ID:Uy9r/fJ2.net]
PHPって型チェックができねえんだな
オブジェクト指向の半分くらい良さが無くなってるわ

817 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 22:28:16.16 ID:TUvpXpRh.net]
>>814
ペチパーはドキュメントも書かないがなw

818 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 23:49:31.21 ID:RKpZ0NGu.net]
言語仕様とは別に規約とかベストプラクティスがあるって何かおかしくない?

819 名前:デフォルトの名無しさん mailto:sage [2017/10/02(月) 02:04:01.28 ID:sbwrnD0w.net]
それでうまくいってんならいいんじゃね?
#pragma once
みたいに実装がどうなってんのか怪しいものより
インクルードガードのが俺は好きだけどね

820 名前:デフォルトの名無しさん mailto:sage [2017/10/02(月) 02:24:33.63 ID:oa9amvOn.net]
わたしもインクルガーのほうがすき

821 名前:デフォルトの名無しさん mailto:sage [2017/10/02(月) 07:05:30.26 ID:1XMfMWOU.net]
Dのimportのが好きだわ

822 名前:デフォルトの名無しさん [2017/10/02(月) 15:33:54.77 ID:hE+5Iy+f.net]
(´・ω・`)あのー
いまいろいろみてたら
関数型リアクティブプログラミング言語Elm
こういうのあったの
2012年に生まれた言語みたい
これも次世代言語なの?
リアクティブプログラミングってすごいの?
Haskellの仲間なの?



823 名前:デフォルトの名無しさん mailto:sage [2017/10/02(月) 17:21:07.36 ID:48oqYDIq.net]
>>822
ここは議論するスレなので、自分で調べて「自分の意見」が言えるようになってから、出直した方がいいと思います。

824 名前:デフォルトの名無しさん [2017/10/02(月) 17:58:49.31 ID:hE+5Iy+f.net]
(´・ω・`)はい

825 名前:デフォルトの名無しさん mailto:sage [2017/10/02(月) 22:27:08.28 ID:s3lqZu5f.net]
なんか懐かしいな、そういやElmってあったな

826 名前:デフォルトの名無しさん mailto:sage [2017/10/03(火) 11:33:59.51 ID:1PTxbey1.net]
>【衝撃】2chの移譲先「5ch」の代理人がしばき隊であることが判明 なにが始まるんです…
https://twitter.com/htmk73/status/914989085269168128


■専ブラ(2ちゃんねるブラウザ)からお〜ぷん2ちゃんねるを見るには?
【おーぷん2ちゃんねる】は全ての2ちゃんねるブラウザに標準対応してます。 ◆お〜ぷん2ちゃんねるボード一覧URL のボードを検索してください

●お勧めの広告なし2chブラウザ ついんてーる twintail の環境設定でお〜ぷん2ちゃんねるボードを入れるだけで使えます。
www.geocities.co.jp/SiliconValley/5459/

827 名前:デフォルトの名無しさん mailto:sage [2017/10/03(火) 15:51:12.88 ID:aErAbfBu.net]
真面目な話Rust触ってると、クソのPHPですらマシに見えてくるから困る

言語を名乗ること自体が冒涜の極みの存在Rust

828 名前:デフォルトの名無しさん mailto:sage [2017/10/03(火) 18:11:45.30 ID:upqeSfz9.net]
例のコンパイルすら出来ない君か。

829 名前:デフォルトの名無しさん mailto:sage [2017/10/03(火) 18:45:21.65 ID:9EEmWhET.net]
>>822
react系というかreduxはそいつの影響
受けてるらしいよね。ということで潜在的な需要は高そう。

830 名前:デフォルトの名無しさん mailto:sage [2017/10/03(火) 18:46:54.01 ID:9EEmWhET.net]
typescriptでも十分助けになるけどね。optionalは偉大だわ。今日も潜在的なバグを知らず知らずに回避してることがわかって感動した。

831 名前:デフォルトの名無しさん mailto:sage [2017/10/03(火) 19:20:44.46 ID:JmJFDhWq.net]
Rustコンパイルできないって普段どんなコード書いてんだろ

832 名前:デフォルトの名無しさん mailto:sage [2017/10/03(火) 19:25:56.04 ID:KmXggyRJ.net]
イケてないのに人気がある golang vs イケてるのに人気がない Nim
wolfbash.hateblo.jp/entry/2017/10/02/163017



833 名前:デフォルトの名無しさん mailto:sage [2017/10/03(火) 19:31:53.29 ID:upqeSfz9.net]
Nim はまだ発展途上過ぎる。
ブロックコメントが入ったのも最近だろう。

834 名前:デフォルトの名無しさん mailto:sage [2017/10/03(火) 23:32:56.72 ID:VvnGZhVU.net]
Rustはスマポを使うべきところで参照を使うとコンパイルできないね
スマポは1種類ではなくて左辺値みたいなスマポと右辺値みたいなスマポがある

835 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 00:03:11.19 ID:5eMqfOkE.net]
スマートポン?

836 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 06:05:52.94 ID:I8P8RQcn.net]
>>832
否定はできないけどエコシステムを含めて評価して欲しいところ。
nim < Go が世間の評価なんだから自分の感覚がずれているということをわかってもらいたいな。

多分goが色々仕様が足りないようにみえるのは言語の再考だからだと思う
例えばclassって本当にいるのか?って考えてるのはすごいこと。
普通は皆つけちゃうよね。そこでclassを採用しなかった。

ジェネリクスも多分いちばんいい形で実装されると思う。

837 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 07:02:44.52 ID:VzltHPaW.net]
どう見てもガイジなんだからまともに相手する必要ねえだろ
しかも新人かと思えばいい歳したオッサンとか、もう色々と終わっとる

838 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 08:01:52.09 ID:6fGy+UI9.net]
Nim<GOが世間の評価ってことはないだろ。そもそも世間はNimなんて知らないんじゃないか?

839 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 08:09:59.02 ID:pULpEgLQ.net]
世間の評価って本当にいるのか?って考えてるのはすごいこと。
多分いちばんいい形で評価されると思う。

840 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 12:00:16.50 ID:DiJewy83.net]
Nimこれまで避けてたけど、これ結構よくね?

841 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 14:31:49.82 ID:B2XamLw4.net]
書き易く読み易い
動作もそこそこ速い
でも流行らないNim

842 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 17:38:53.01 ID:LT+9qEc0.net]
"Hello,world!"::print
とか書ける言語出ないかな



843 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 17:44:46.88 ID:eKN2AIaa.net]
>>842
C#やKotlinやRubyでStringにメソッド生やせば普通にできる

844 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 18:15:56.42 ID:l7XMNd9h.net]
Nim なら "Hello,world!".echo と書ける

845 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 19:03:11.59 ID:LT+9qEc0.net]
rubyだとprint!ならできたけどprintはダメだった
a 500 :: varset
succ(x) x+1 :: def
みたいにひたすらこの形式のみにしたらどうかな、とか思った

846 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 21:11:06.92 ID:hjCUawIk.net]
Dもいけるぞ"Hello,world!".writeln(うろ覚え)

847 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 21:22:38.73 ID:ObffTMEn.net]
ちなみに Smalltalk は最初の Smalltalk-72 から Smalltalk-78 まではずっと 'Hello,world!' print
だけど Smalltalk-80 以降は最新の Pharo、Squeak を含め Transcript show: 'Hello,world!' に

ただひとつ変わり種の GNU Smalltalk だけが今も変わらず 'Hello,world!' print
https://ideone.com/p1HVKw

848 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 21:41:15.01 ID:LT+9qEc0.net]
やはりSmalltalkですか
でも今見直したらFactorも "Hello,world!" print だった

より純粋なオブジェクト指向とかスタック指向を目指すなら後置関数にこだわるのも良い気がする

849 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 23:07:25.22 ID:rikHP6KZ.net]
Juliaなら
"Hello, world!" |> println
とか行ける |> は左の引数を右の関数に適用する演算子
多分高階関数を気軽に扱える言語なら大体似たようなことができると思う

850 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 23:34:13.26 ID:1ZpMsI7I.net]
こういうくだらないシンタックスで盛り上がれるっていいよね。

851 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 23:55:10.27 ID:VzltHPaW.net]
もっとくだらなくてゴミみたいな自称次世代言語下痢糞プェチピィについて語ろうゾ

852 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 00:04:04.93 ID:0B54PbO+.net]
Nimのシンタックスが「俺の求めていたものはこれなんだ」って感じでしっくりきている



853 名前:デフォルトの名無しさん [2017/10/05(木) 10:00:21.57 ID:6CUoA44/.net]
>>840
同意

854 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 12:08:45.40 ID:2VHNud46.net]
発見したんだけれど語だとAさんBさんの間に自分がいると、自分の前にAさんがいて後ろにBさんが
いるってかくけれど、
にほんごだとAさんの後ろに自分がいてその後ろにCさんがいるのように自分中心
に書かないだろ。
これが日本人にオブジェクト指向があわない証拠だとおもうな。

855 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 12:56:26.82 ID:U9Ub2sS/.net]
そういう話じゃないと思うけどね。
単純に実行効率とメンテナンス性のバランスとるのが下手なだけ。

856 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 13:06:01.46 ID:2VHNud46.net]
それは東洋的な発想はプログラムに向かないってことだよね。

857 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 13:52:09.38 ID:DNu4hyXr.net]
島猿は観念論的な思考が苦手だからな

858 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 17:54:15.12 ID:hq5BCXwT.net]
でも英語だと命令形は動詞が先に来るけど、日本語だと後に来るので、
その点ではオブジェクト指向的な気がする

Lispみたいに前置にこだわった感じの関数型は英語的だと思う

859 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 17:57:02.28 ID:Jc3a3LA7.net]
得意なら半年で習得できるとか自分勝手にハードル上げて勝手に挫折して苦手になるのだ
10年かかると最初から思ってたら挫折もしない

860 名前: mailto:sage [2017/10/05(木) 19:36:48.36 ID:5X6CpPIC.net]
ってか習得するもんでも無いんじゃないの?
やりたい事をやりたいように出来ればそれで良い気がする。

自動車整備の達人はレンチの達人かもしれんが、ただのレンチの達人は自動車整備出来んだろ。
新型のレンチ試して習得する前に、どう使うかを考えた方が余程良いかと思う。

861 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 22:08:07.44 ID:5FiWY82n.net]
goはjavaの境界ワイルドカード型が理解できなかった奴らに支持されてるんじゃないの?
javaのパラメトリック多相が複雑だからって後発言語ではin/outになったじゃん。

862 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 22:25:32.14 ID:DNu4hyXr.net]
最初にジェネリックの変性にin, outを使ったのってC#だっけ?
あれ思いついた奴は天才だろ
あれだけ意味不明だったJavaのワイルドカードが一瞬で誰でも一目で理解できるものになってしまった



863 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 22:27:03.03 ID:jfAiiqib.net]
null安全でない言語は、もはやレガシー言語だ
https://qiita.com/koher/items/e4835bd429b88809ab33

864 名前:デフォルトの名無しさん [2017/10/05(木) 23:53:50.11 ID:9FcQYtba.net]
in, outとかはAdaにあったけどあれとは違うの?

865 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 00:57:54.53 ID:AmbKZ1TQ.net]
ええだ、ええだ

866 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 01:50:35.56 ID:mbAUXPYs.net]
gcのときといっしょの浅はかな議論
nullがなくなろうと意味的なnullは必要なんだよ
だから絶対にそこにバグは入り込む
バグり方が変わるだけ
下手に動き続けるよりヌルポの瞬間に潔くクラッシュしてくれた方が
調査しやすいという考え方もある

867 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 07:22:04.51 ID:Pjx+vQ2Q.net]
>>866
意味的なnullを想定しない箇所については型でnull を弾くよう静的検査するべきということなんだが?

868 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 08:25:43.72 ID:mbAUXPYs.net]
意味がないとは言わない
おれもあれば使う
が思うほど効果ない

869 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 12:24:07.66 ID:28ESsb6Q.net]
null安全言語使うとホント幸せだよな。

結果的にここにnullの可能性がある変数が到達しないってことを言語として保証してくれるってすごすぎる。

書いてみると分かるけど返り値がnullの可能性があるかどうかは
内部で使うapiに依存してたりして、外側から見ると予測できない。
だから人間がやろうとしたら、結局使う側で全ての引数にnullチェック入れるしか無い。
まぁ面倒だからnullPointerExceptionを出しちゃうわけですけど。

コンパイラが把握してくれれは必要最低限のチェックで済むから精神衛生上も大変よろしい。
こういう進化はどんどんしていって欲しい。

870 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 12:36:51.70 ID:nzqIzLrY.net]
>>868
必要性を感じるようなコードに出会ったことがないんだね、幸せなやつ

871 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 12:52:52.70 ID:sp3JMBsg.net]
機能としては悪くないと思うけどnull安全とかいう頭悪いワードでバカを勘違いさせるのやめろ
nullで落ちるならnullチェックすればいいというわけじゃない

872 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 13:13:58.43 ID:W7gYVrEG.net]
まあないよりはマシだろうけどくらいの意味合いだな。
レイヤーを下りれば結局人間が判断することになることが多い。



873 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 15:41:59.82 ID:HTxWyqCb.net]
null safety理解してないやつ結構いるのね

874 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 17:29:24.43 ID:28ESsb6Q.net]
>>862
これ詳しく。typeScriptでジェネリクス使うようになった新参だからなんのことかわからん。

875 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 19:11:52.24 ID:avQrunR/.net]
NullPointerExceptionがことさら悪いことのように言われるが
俺にはどーも単に他のバグ(?)と違いが分からない
意図通り書かれてないからバグ(?)るんであって
いつだって、書かれたとおりに動いてるだけのことであって

876 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 20:00:20.02 ID:VLsCvj8e.net]
>>875
ググれ

877 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 20:21:56.80 ID:Rv6hBe2m.net]
nullで初期化して後で代入しようしたら急に例外が来て脱出することがある
その例外を処理する途中でバグるから他のバグよりも深刻

例外を投げない言語なら問題ない

878 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 20:59:37.31 ID:7QyvSB4A.net]
>>874
interface Hoge<TIn, TOut> { convert(val: TIn): TOut; }
class B extends A { ... }
このとき、Hoge<A, B> のオブジェクトを Hoge<B, A> として扱っても理屈上問題ないはずだろ?
それを可能にするのがジェネリックの変性という概念。
ちょっと考えたら分かるはずだが、変性が適用できるのは型パラメータが入力または出力のどちらか一方にしか使われていない場合だけ。
さらに、型引数が入力と出力どちらであるかによって、変化の許される継承の方向が逆になることも分かるだろう。
C#では、interface Hoge<in A, out B> のように型パラメータの方向を限定してやることで変性を与えることができる。
これ Java だとHogeを使う側で Hoge<? extends A, ? super B> と書くんだけど、意味不明だろ?

879 名前:878 mailto:sage [2017/10/06(金) 21:07:24.53 ID:7QyvSB4A.net]
すまんちょっと訂正
C#では、interface Hoge<in TIn, out TOut>のように

880 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 00:18:08.77 ID:ay0KJt9o.net]
>>862
ガビン・キングか誰かが同時期に+-考えて後にceylonに導入されてる。

>>864
あれは入力変数と出力変数と入出力変数

>>878
ムダに長いな。
いちばん重要なのはどの型変数が入力/出力用か定義した側は分かってるから
宣言部だけに書けばいいのにjavaの仕様だと利用する側も利用する型を
書かなきゃいけない無駄が無くなること。

javaも型推論の範囲広げてくれればダイヤモンド演算子で済むんだけど。

話は変わるけど「意味的なnull」の場合はnullable typeとoptionalどっちがいんだろうな。
optionalがモナドかどうかは抜きにして。

881 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 01:10:07.86 ID:ZhYAfijB.net]
>>878
すまんいまいちわからん。

in outの指定がなくても推論できそうな気がするんだけど。
それがどう便利になるのか、、、、
推論のための情報を増せるってことかね。

882 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 01:14:59.49 ID:ZhYAfijB.net]
>>875
コンパイラ側で実行時エラーが減らせるならそれに越したことはないと思うんだが。
特にコード書いてる最中に指摘してくれるから頭がいい人が隣に座ってくれてる感ある



883 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 01:45:27.02 ID:oYr2GY5l.net]
> 頭がいい人が隣に座ってくれてる感ある

この例え、ちょっとワロタ

884 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 08:15:36.29 ID:Wf+VpSRV.net]
>>881
全く違う。推論じゃなくて、Hoge<A, B>をHoge<B, A>にアップキャストできるってこと。

885 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 08:31:36.09 ID:Wf+VpSRV.net]
具体的な例を上げると、
例えば型パラメータに応じたオブジェクトを作成して返すFactory<T>インターフェースがあったとして
Factory<DBConnection>型をパラメータとして要求するメソッドに対して
Factory<OracleDBConnection>オブジェクトを直接渡せるってことだ
型推論じゃなくて型パラメータの互換性までを考慮したアップキャスト

886 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 09:04:26.26 ID:U1Wl1fD6.net]
アップキャストって文字列みてレス内容スキップした

887 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 09:25:02.60 ID:FzxjfsDf.net]
List<object>にList<string>を代入できるってことだろ。

888 名前:デフォルトの名無しさん [2017/10/07(土) 09:58:03.30 ID:h9TjUWM8.net]
>>885,887
抽象度さがってるんだから、アップキャストじゃなくてダウンキャストじゃねーの?

889 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 10:27:19.45 ID:fUAr46yo.net]
コンパイラやランタイムがキャストする方向

890 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 11:54:57.90 ID:ODmPff4g.net]
>>888
よく考えろ
広げる方向へのキャストだよ

891 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 14:40:09.93 ID:U1Wl1fD6.net]
俺はもう
(単なるType **を)ダブルポインタ
(単なるポインタ型の値渡しを)ポインタ渡し
(謎の用語)アップキャスト
(謎の用語)ダウンキャストの飛び出して来ない世界に旅立ちたい

892 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 16:36:46.84 ID:7mvjIKWG.net]
ポインタ(型の値)渡し
いかんのか?



893 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 17:33:27.49 ID:ZhYAfijB.net]
>>885

やっぱ具体的なコードがないとよくわからんな

<T extends Hoge>XXX のHogeの部分を自由に指定できるようになるってこと?

894 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 18:36:11.03 ID:3J6O2fHU.net]
class ExtendsX a where { toX :: a -> X }
class SuperY a where { fromY :: Y -> a }

Haskellなら単なる関数にするだろ
キャストという謎の用語を使う必要がない

895 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 18:37:08.45 ID:U1Wl1fD6.net]
>>892
い(ちごや、み)かんでしょ

あとJavaしか知らない人が背伸びしようとして?
(参照型変数の値渡しのことを)参照渡し
これもいつまでたっても無くならない

896 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 19:08:57.97 ID:ODmPff4g.net]
>>893
var f1: Factory<OracleDBConnection> = getOracleDBConnectionFactory();
var f2: Factory<DBConnection> = f1;
var conn: DBConnection = f1.create();
こういうこと
いちいち無駄な型パラメータを使う必要がない

897 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 19:09:53.49 ID:ODmPff4g.net]
>>896
訂正
3行目はf2

898 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 19:45:02.40 ID:3J6O2fHU.net]
fmap :: (a -> b) -> Factory a -> Factory b

899 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 00:02:28.18 ID:CO5NODlU.net]
>>885,887
できねーよ。

>Factory<DBConnection>型をパラメータとして要求するメソッドに対して
>Factory<OracleDBConnection>オブジェクトを直接渡せるってことだ
>List<object>にList<string>を代入できる
これが出来るのはFactory<T>/Factory<U>やList<T>/List<U>が共変のときのみ。
それを緩めるのがjavaの上限境界ワイルドカード型。

>>898
それじゃモナドだろ。変性の話な。
変換の話ししてんのはID:Wf+VpSRVだけだから型変換は忘れろ。

おまえらPECS理解してなさすぎ。ポケモンで説明してやるよ。

List<? extends ゼニガメ>があった時このリストに入るのはゼニガメ、カメール、カメックス。これが上限境界ワイルドカード型。

set<T super ピクシー>(T value)というメソッドのときピクシー、ピッピ、ピィが入力できるんだよ。これが下限境界ワイルドカード型。

ValueT<?> value = foo.get<ポッポ>()とあった場合は?はポッポに変身したメタモン。これが非境界ワイルドカード型。

ただし、非境界ワイルドカード型はjavaの場合は型消去されてすべての型のsuper typeを表すObject型になる。つまりに何にも変身してないメタモンのまま。
これはjavaがnone-reifiableだからでreifiableな言語ならポッポに変身したメタモンならポッポのまま。

900 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 00:06:17.55 ID:CO5NODlU.net]
X none-
O non-

901 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 00:20:35.53 ID:z2et5JhT.net]
C++から離れて以来、<>括弧に拒否反応出る

902 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 01:23:41.59 ID:RGO+IW57.net]
ダブルポインタとか言うバカに構文木を教えるために括弧を強制してやったのに



903 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 06:33:17.35 ID:gfyVN7gN.net]
>>899
それをC#だとキャストできるという話なんだが、頭おかしいのか?

904 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 07:01:36.88 ID:gfyVN7gN.net]
このように、>>899のように俺は分かってる感を出してる奴にとってすらジェネリックの変性は理解が難しいんだよな
ちなみにKotlinだと型定義時の指定と型使用時の指定の両方をサポートしてたりする
TypeScriptの場合はキャストが完全なstructual-subtypingベースで、型名やジェネリックは型定義のエイリアスに過ぎない
だから特に変成を明示的に指定する必要はない






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<243KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef