スレタイ以外の言語もok
前スレ
次世代言語Part8[Haskell Rust Kotlin TypeScript]
http://mevius.5ch.net/test/read.cgi/tech/1512137301/
探検
次世代言語9[Haskell Rust Kotlin TypeScript Dart]
■ このスレッドは過去ログ倉庫に格納されています
2018/03/06(火) 10:09:15.60ID:x/Au45rc
152デフォルトの名無しさん
2018/03/10(土) 12:13:23.90ID:ysTMLqRd >>148
動的型のキャストと静的型のキャストに違いがあるとは思えないけどなぁ。
俺の考え方はこう。
動的型: 人間側で型の追跡を頑張る
静的型: コンバイラ側に型の追跡を任せる。ただしobject型とかに渡すことで人間側で頑張ることもできる。
動的型は基本雑なコードだらけ。人間側が型を決め打ちしてメソッドを実行しないとやってられない。
だって毎回instanceof とかで型をチェックしてからメソッドの実行とかしてないでしょ?
動的型のキャストと静的型のキャストに違いがあるとは思えないけどなぁ。
俺の考え方はこう。
動的型: 人間側で型の追跡を頑張る
静的型: コンバイラ側に型の追跡を任せる。ただしobject型とかに渡すことで人間側で頑張ることもできる。
動的型は基本雑なコードだらけ。人間側が型を決め打ちしてメソッドを実行しないとやってられない。
だって毎回instanceof とかで型をチェックしてからメソッドの実行とかしてないでしょ?
153デフォルトの名無しさん
2018/03/10(土) 12:16:33.64ID:eUrbDIYn154デフォルトの名無しさん
2018/03/10(土) 12:24:33.09ID:bKdAMFdx >>150
そんなことないよ。例えばtoStringみたいな、親から生えてるメソッドは、objectのまま呼べて、しかもインスタンスのメソッドが呼べるでしょ。
goはそうはなってないの。インターフェイスをレシーバとする関数が呼ばれる。
内包してないよ。
ReaderはReadを
WriterはWriteを
ReaderWriterはReadとWriteを実装しているインターフェイスなだけ。別のインターフェイス。そこに上位下位は無い。
階層構造が暗黙に決まってるんではなくて、そもそも階層構造を持ってない。
そんなことないよ。例えばtoStringみたいな、親から生えてるメソッドは、objectのまま呼べて、しかもインスタンスのメソッドが呼べるでしょ。
goはそうはなってないの。インターフェイスをレシーバとする関数が呼ばれる。
内包してないよ。
ReaderはReadを
WriterはWriteを
ReaderWriterはReadとWriteを実装しているインターフェイスなだけ。別のインターフェイス。そこに上位下位は無い。
階層構造が暗黙に決まってるんではなくて、そもそも階層構造を持ってない。
155デフォルトの名無しさん
2018/03/10(土) 12:35:41.84ID:9xaE30s9 なんでもできる c++ で書くなら
なんのメンバーも持たない class interface の直接の
派生型として色んなインタフェースがあるようなもんか
COM に似てるな、というか COM のインタフェースの概念の焼き直しか。
なんのメンバーも持たない class interface の直接の
派生型として色んなインタフェースがあるようなもんか
COM に似てるな、というか COM のインタフェースの概念の焼き直しか。
156デフォルトの名無しさん
2018/03/10(土) 12:36:05.42ID:X26PuUpn ダックタイピングとnominalな階層型の違いを言葉を変えて繰り返しているだけで
問題のinterface{}がobjectより良いという説明にはなってないな
問題のinterface{}がobjectより良いという説明にはなってないな
157デフォルトの名無しさん
2018/03/10(土) 12:42:10.90ID:jPHJ8KIe >>138
別に全部のコードにテスト書けとは思わんが
それでもそこまで引数の型がどうなのか気になるインターフェイスなら
テストコード書けよ。
てかそこまで作業が圧迫してるなら型をガッチガチにやる言語のが
調整する手間考えた場合割に合わんだろ。
別に全部のコードにテスト書けとは思わんが
それでもそこまで引数の型がどうなのか気になるインターフェイスなら
テストコード書けよ。
てかそこまで作業が圧迫してるなら型をガッチガチにやる言語のが
調整する手間考えた場合割に合わんだろ。
158デフォルトの名無しさん
2018/03/10(土) 13:01:42.42ID:iLIqn+zB >>157
どの程度なら「気になる」のかってところに認識の違いがありそうだな
静的型派の人間は全てコードの型情報が気になっちゃうんじゃない?
少なくとも俺は全ての引数の型が気になってしまうタイプの人間だよ
どの程度なら「気になる」のかってところに認識の違いがありそうだな
静的型派の人間は全てコードの型情報が気になっちゃうんじゃない?
少なくとも俺は全ての引数の型が気になってしまうタイプの人間だよ
159デフォルトの名無しさん
2018/03/10(土) 13:02:25.28ID:BpWzRYHd160デフォルトの名無しさん
2018/03/10(土) 13:10:46.65ID:wavGSJ3d 「階層を持つから安全にキャストできる」と「安全にキャストできるから階層を持つ」がごっちゃになってる人がいる
161デフォルトの名無しさん
2018/03/10(土) 13:12:51.16ID:jPHJ8KIe >>158
まあ極論すれば感覚的な話だしね。
感覚として型を気にして助かることなんて 5 % くらいじゃないかと思ってる。
対してテストがある場合は 40~50%くらい助かる。
準備するコストとして型が 10~20 としたらテストは 30~40 といった印象。
なんで個人的にはそこまで型を整備するよりかはテストに時間使った方がいいと考えてる。
まあ抽象論一発で済めば嬉しいって気持ちはわかるんだが
実際そうはならんからね。。
まあ極論すれば感覚的な話だしね。
感覚として型を気にして助かることなんて 5 % くらいじゃないかと思ってる。
対してテストがある場合は 40~50%くらい助かる。
準備するコストとして型が 10~20 としたらテストは 30~40 といった印象。
なんで個人的にはそこまで型を整備するよりかはテストに時間使った方がいいと考えてる。
まあ抽象論一発で済めば嬉しいって気持ちはわかるんだが
実際そうはならんからね。。
162デフォルトの名無しさん
2018/03/10(土) 13:17:24.66ID:V+AonR8i >>156
端的に言えば、スーパークラス(と言う概念もないが)にキャストしてして渡してない、as-isで渡してると言うところが違うし大きい。
良いとも言ってないぞ。
違うし混同するなと言ってる。
Objectに相当するものが無いので、良いも何も比較対象ではない。
端的に言えば、スーパークラス(と言う概念もないが)にキャストしてして渡してない、as-isで渡してると言うところが違うし大きい。
良いとも言ってないぞ。
違うし混同するなと言ってる。
Objectに相当するものが無いので、良いも何も比較対象ではない。
163デフォルトの名無しさん
2018/03/10(土) 13:21:00.62ID:CNpckm4H スーパークラスにキャストねえ。
どの言語でもその場合は as-is で渡るだろう
どの言語でもその場合は as-is で渡るだろう
164デフォルトの名無しさん
2018/03/10(土) 13:23:17.42ID:V+AonR8i 暗黙的にでも、ね。
Objectで受ける、Ienumerableで受けるを含めて。
Objectで受ける、Ienumerableで受けるを含めて。
165デフォルトの名無しさん
2018/03/10(土) 13:24:20.18ID:V+AonR8i as-isで渡るは確かに語弊があったな。
別の型のオブジェクトやインターフェイスとして渡されてるんじゃなくて、って感じ。
別の型のオブジェクトやインターフェイスとして渡されてるんじゃなくて、って感じ。
166デフォルトの名無しさん
2018/03/10(土) 13:27:51.68ID:X26PuUpn167デフォルトの名無しさん
2018/03/10(土) 13:31:43.54ID:CNpckm4H とはいえ言いたいことはわかる
オブジェクトに似ているがオブジェクトを渡しているわけではない、
オブジェクトとそれの持つインタフェースは1対多
COM のインタフェースや多重継承を用いた場合のC++に似ている
特に前者とはほぼ完全に同じものだ
インタフェース抽象って奴だね
この場合実行モデルとしてはインタフェースに階層関係は要らなくなる
複数のインタフェースを持つことから(派生による差分宣言、差分実装ではなく)
ミックスインが基本となるから。
オブジェクトに似ているがオブジェクトを渡しているわけではない、
オブジェクトとそれの持つインタフェースは1対多
COM のインタフェースや多重継承を用いた場合のC++に似ている
特に前者とはほぼ完全に同じものだ
インタフェース抽象って奴だね
この場合実行モデルとしてはインタフェースに階層関係は要らなくなる
複数のインタフェースを持つことから(派生による差分宣言、差分実装ではなく)
ミックスインが基本となるから。
168デフォルトの名無しさん
2018/03/10(土) 13:31:58.31ID:BpWzRYHd as-is型に実装を合わせるテンプレート
as-is実装に型を合わせるキャスト
これが次世代の争い
動的型は次世代ではないから政治的中立
as-is実装に型を合わせるキャスト
これが次世代の争い
動的型は次世代ではないから政治的中立
169デフォルトの名無しさん
2018/03/10(土) 13:52:58.58ID:V+AonR8i170デフォルトの名無しさん
2018/03/10(土) 13:54:45.25ID:ysTMLqRd >>154
だから階層構造がないのはわかってるつーの。実際的な違いがないっていってるの。
実質Object型 とinterface{} はおんなじ扱いにしかならない。
Object型にはtoStringがあるけどinterface{}にはない? 別にそんなのはどうでもいい話。
interface{} に値を突っ込むと人間側が型を意識する必要がある。
動的言語的な扱いになっちゃう。
この点においてObject側と一緒だよね。
ここが最大の肝であり、「Object型でうけるのは雑」っていってるのはこの部分に差があると期待して質問したのに、
そこに関しては違いを見出していない。
なら雑な理由って何よ。
だから階層構造がないのはわかってるつーの。実際的な違いがないっていってるの。
実質Object型 とinterface{} はおんなじ扱いにしかならない。
Object型にはtoStringがあるけどinterface{}にはない? 別にそんなのはどうでもいい話。
interface{} に値を突っ込むと人間側が型を意識する必要がある。
動的言語的な扱いになっちゃう。
この点においてObject側と一緒だよね。
ここが最大の肝であり、「Object型でうけるのは雑」っていってるのはこの部分に差があると期待して質問したのに、
そこに関しては違いを見出していない。
なら雑な理由って何よ。
171デフォルトの名無しさん
2018/03/10(土) 13:55:30.73ID:wavGSJ3d172デフォルトの名無しさん
2018/03/10(土) 13:57:07.23ID:X26PuUpn >>169
IUnknownが便利に使われてるのと
QueryInterfaceの実装次第でメンバーに飛ばすこともできるのが似てるって話だろ
COMは実装側が応答する型(GUID)を決めないといけなくてダックタイピングにはならんから
俺は必ずしも似てるとは言わんけど、あなたの説明はそう思われてもしょうがないってことだ
IUnknownが便利に使われてるのと
QueryInterfaceの実装次第でメンバーに飛ばすこともできるのが似てるって話だろ
COMは実装側が応答する型(GUID)を決めないといけなくてダックタイピングにはならんから
俺は必ずしも似てるとは言わんけど、あなたの説明はそう思われてもしょうがないってことだ
173デフォルトの名無しさん
2018/03/10(土) 14:21:55.45ID:BpWzRYHd classの多重継承ができる言語ならinterfaceはclassの構文糖ということにできた
多重継承を制限したことでinterfaceとclassの互換性が非自明になった
多重継承を制限したことでinterfaceとclassの互換性が非自明になった
174デフォルトの名無しさん
2018/03/10(土) 14:23:37.99ID:V+AonR8i175デフォルトの名無しさん
2018/03/10(土) 14:26:15.83ID:V+AonR8i >>170
おんなじ扱いをすれば同じになるだろうな。
扱い方の余地の問題なんだが。
人間側が型を意識する必要がある、この点に於いてObjectと同じと言うのは雑すぎる。
動的言語的扱い方と言うか、jsonのUnmarshalなんか見た方が多分わかりやすいと思う。俺が言ってることは。
おんなじ扱いをすれば同じになるだろうな。
扱い方の余地の問題なんだが。
人間側が型を意識する必要がある、この点に於いてObjectと同じと言うのは雑すぎる。
動的言語的扱い方と言うか、jsonのUnmarshalなんか見た方が多分わかりやすいと思う。俺が言ってることは。
176デフォルトの名無しさん
2018/03/10(土) 14:26:53.39ID:V+AonR8i >>172
説明が悪いのは申し訳ない。
説明が悪いのは申し訳ない。
177デフォルトの名無しさん
2018/03/10(土) 14:31:49.68ID:V+AonR8i interface{}で受ける関数を呼ぶときは、
とりあえず、スーパークラスのObjectに(暗黙的に)キャストして渡してるのではなくて、あるインターフェイスを実装している型として渡してる。
全クラスがIfooをimplementsしている状態で、Ifooを受けているだけ。
そこにキャストは発生してないし、だから、キャストではなくアサーションで型を判定するだけで(キャスト無しで)中身の型が分かる。
その時に、もとの構造体ではなく、あるインターフェイスとしてアサーションする事ももちろんできる。
そこだけでも伝わってほしい。
とりあえず、スーパークラスのObjectに(暗黙的に)キャストして渡してるのではなくて、あるインターフェイスを実装している型として渡してる。
全クラスがIfooをimplementsしている状態で、Ifooを受けているだけ。
そこにキャストは発生してないし、だから、キャストではなくアサーションで型を判定するだけで(キャスト無しで)中身の型が分かる。
その時に、もとの構造体ではなく、あるインターフェイスとしてアサーションする事ももちろんできる。
そこだけでも伝わってほしい。
178デフォルトの名無しさん
2018/03/10(土) 14:33:10.73ID:V+AonR8i しかし、また「エアプ」かw
好きなんだな、その言葉。
好きなんだな、その言葉。
179デフォルトの名無しさん
2018/03/10(土) 14:47:03.22ID:BpWzRYHd キャストは雑
アサーションは丁寧
という説が伝わってきた
アサーションは丁寧
という説が伝わってきた
180デフォルトの名無しさん
2018/03/10(土) 14:56:06.20ID:ysTMLqRd181デフォルトの名無しさん
2018/03/10(土) 15:25:20.56ID:opL9wLKH 雑なほうがいいんだよ。that's rightって言うだろ?
182デフォルトの名無しさん
2018/03/10(土) 15:26:15.03ID:Uh7G7RUR >>180
アサーションが丁寧というのは語弊があるが、インターフェイスからのアサーションはそもそも本来の型自体も持ってるのでキャストしているわけではなく、assert、言明し直してるだけで、別の型として一度も扱わない。
アサーションが丁寧というのは語弊があるが、インターフェイスからのアサーションはそもそも本来の型自体も持ってるのでキャストしているわけではなく、assert、言明し直してるだけで、別の型として一度も扱わない。
183デフォルトの名無しさん
2018/03/10(土) 15:28:33.49ID:wavGSJ3d184デフォルトの名無しさん
2018/03/10(土) 15:39:34.50ID:Uh7G7RUR >>183
あることあるから、レシーバが変わる事知ってるんだよ。
そうじゃない。履き違えてないよ。
ジェネリクスはもっとちがう。コンパイル時に関数自体が型ごとに分かれるのが俺が言うジェネリクスとオーバーロード。
オブジェクト指向脳でわけわからん事言わないで。
あることあるから、レシーバが変わる事知ってるんだよ。
そうじゃない。履き違えてないよ。
ジェネリクスはもっとちがう。コンパイル時に関数自体が型ごとに分かれるのが俺が言うジェネリクスとオーバーロード。
オブジェクト指向脳でわけわからん事言わないで。
185デフォルトの名無しさん
2018/03/10(土) 15:56:33.06ID:ysTMLqRd >>184
が、言いたいことを整理すると
Go言語のinterface{}は他言語のObject型とは違う。
なぜならGo言語のinterface{}型は内部的には型情報を保持しており
reflectバッケージを使うことでいつでも元の型情報を取得できるから
ってことでOK?
これって逆に言うと他言語のObject型は内部的に元の型情報を保持しないの?
が、言いたいことを整理すると
Go言語のinterface{}は他言語のObject型とは違う。
なぜならGo言語のinterface{}型は内部的には型情報を保持しており
reflectバッケージを使うことでいつでも元の型情報を取得できるから
ってことでOK?
これって逆に言うと他言語のObject型は内部的に元の型情報を保持しないの?
186デフォルトの名無しさん
2018/03/10(土) 16:04:38.45ID:X26PuUpn 本来のデータポインタはそのままで実行時型情報をペアにしてinterface{}(fat pointer)にしているのを
キャストしているしていない言い張ってるだけかな。まあ言葉はどっちでもいいが
ちなJavaタイプのnominalなinterfaceや多重継承はデータポインタに特定のオフセットを加減算する(ポインタの値が変わる)
場合がほとんどだが、fat pointer方式の実装も無いわけではない
キャストしているしていない言い張ってるだけかな。まあ言葉はどっちでもいいが
ちなJavaタイプのnominalなinterfaceや多重継承はデータポインタに特定のオフセットを加減算する(ポインタの値が変わる)
場合がほとんどだが、fat pointer方式の実装も無いわけではない
187デフォルトの名無しさん
2018/03/10(土) 17:15:29.87ID:3swSila5188デフォルトの名無しさん
2018/03/10(土) 17:37:00.44ID:Hgt7PccX エアプ呼ばわりされて過剰反応するのが真のエアプ
エアプでないことを示すのが普通の人
エアプでないことを示すのが普通の人
189デフォルトの名無しさん
2018/03/10(土) 17:37:33.50ID:Uh7G7RUR >>185
内部的に持ってるが、クラス構造が階層型であるが故にObject型という型で扱われた上で、サブクラスにダウンキャストするじゃん?で、またアップキャストするかもしれん。
だからジェネリクスやオーバーロードだと共変なのか反変なのか、あるいは非変なのかが問題になるし、Javaなんかはジェネリクスは非変だけど、配列は共変みたいな事になってるし、c#なんかだと最近変性注釈できるようになったり、まだゴタゴタしてる。
ちなみに、interfaceへのアサーションはreflectとは違って、interface自体が型を持ってるので、reflectで型を判定したりメソッド呼ぶのとは結構な差がある。
古いけどこのへんか。
https://research.swtch.com/interfaces
内部的に持ってるが、クラス構造が階層型であるが故にObject型という型で扱われた上で、サブクラスにダウンキャストするじゃん?で、またアップキャストするかもしれん。
だからジェネリクスやオーバーロードだと共変なのか反変なのか、あるいは非変なのかが問題になるし、Javaなんかはジェネリクスは非変だけど、配列は共変みたいな事になってるし、c#なんかだと最近変性注釈できるようになったり、まだゴタゴタしてる。
ちなみに、interfaceへのアサーションはreflectとは違って、interface自体が型を持ってるので、reflectで型を判定したりメソッド呼ぶのとは結構な差がある。
古いけどこのへんか。
https://research.swtch.com/interfaces
190デフォルトの名無しさん
2018/03/10(土) 17:38:52.17ID:Uh7G7RUR >>188
エアプのプロは言うことが違うな。
エアプのプロは言うことが違うな。
191デフォルトの名無しさん
2018/03/10(土) 17:47:29.26ID:NO/eROxb エアプなんか使ったって、レッテル貼るだけで議論ができないようにしか見えないんだからやめときなって
192デフォルトの名無しさん
2018/03/10(土) 17:49:06.20ID:ngO/N0HJ それが楽しいんだろ、いつもその言葉使うところ見たら。
193デフォルトの名無しさん
2018/03/10(土) 17:59:38.11ID:ysTMLqRd >>189
>共変なのか反変
急に分かんない用語が出てきて混乱したが
http://www.thekingsmuseum.info/entry/2016/02/07/235454
が参考になった。非変って用語がないが不変の言い間違い?
>共変なのか反変
急に分かんない用語が出てきて混乱したが
http://www.thekingsmuseum.info/entry/2016/02/07/235454
が参考になった。非変って用語がないが不変の言い間違い?
194デフォルトの名無しさん
2018/03/10(土) 17:59:39.44ID:jPHJ8KIe いや全く楽しくねーわ。
195デフォルトの名無しさん
2018/03/10(土) 18:20:49.51ID:ysTMLqRd 例えば
func ToString(any interface{}) string {
if v, ok := any.(Stringer); ok {
return v.String()
}
switch v := any.(type) {
case int:
return strconv.Itoa(v)
case float:
return strconv.Ftoa(v, 'g', -1)
}
return "???"
}
上記コードはこうできるようにして欲しい
func ToString(any (Stringer | int | float)) string {
if v, ok := any.(Stringer); ok {
return v.String()
}
switch v := any.(type) {
case int:
return strconv.Itoa(v)
case float:
return strconv.Ftoa(v, 'g', -1)
}
}
引数にinterface{} があるのはやっぱりJavaとかで引数にObject型が来るのと同義だと思うわ。
func ToString(any interface{}) string {
if v, ok := any.(Stringer); ok {
return v.String()
}
switch v := any.(type) {
case int:
return strconv.Itoa(v)
case float:
return strconv.Ftoa(v, 'g', -1)
}
return "???"
}
上記コードはこうできるようにして欲しい
func ToString(any (Stringer | int | float)) string {
if v, ok := any.(Stringer); ok {
return v.String()
}
switch v := any.(type) {
case int:
return strconv.Itoa(v)
case float:
return strconv.Ftoa(v, 'g', -1)
}
}
引数にinterface{} があるのはやっぱりJavaとかで引数にObject型が来るのと同義だと思うわ。
196デフォルトの名無しさん
2018/03/10(土) 18:22:28.94ID:opL9wLKH197デフォルトの名無しさん
2018/03/10(土) 19:46:35.03ID:YxlaXMRK 結局Objectの方がinterface{}より保証されてるものが多いから、雑なのはinterface{}の方じゃーん
198デフォルトの名無しさん
2018/03/10(土) 21:09:45.80ID:ihrcyggr >>105
これ最高に型無しクソペチパー指向的レス
これ最高に型無しクソペチパー指向的レス
199デフォルトの名無しさん
2018/03/10(土) 22:06:56.73ID:V+AonR8i200デフォルトの名無しさん
2018/03/10(土) 22:10:01.27ID:V+AonR8i 自分が知らないものをたったひとつソースから「言い間違えなのか?」と言うのはどうかしてると思うわ。
201デフォルトの名無しさん
2018/03/10(土) 22:20:22.04ID:V+AonR8i >>195
ToStringなんて関数をinterface{}で受けて中で適当に処理するってこと自体だと思う。
そんな事するぐらいなら、使いたいintとfloatを名前つけてちゃんと型定義して、Stringer実装するほうがまともでは?
ライブラリならまだわかるが、ユーザコードでinterface{}を使うのはもっと「interface{}でなければいけない時」であって、基本的にはなんでも受け取りたいから使うための型ではない。
普通のオブジェクト指向言語でもそうだろ。
後半のコード例に至ってはコンパイル時に検出したいだけだろ。
オーバーロードさせろってんならまだわかるが。
コンパイル後に消えるようなもの書いて喜ぶ事こそ馬鹿らしいわ。
ToStringなんて関数をinterface{}で受けて中で適当に処理するってこと自体だと思う。
そんな事するぐらいなら、使いたいintとfloatを名前つけてちゃんと型定義して、Stringer実装するほうがまともでは?
ライブラリならまだわかるが、ユーザコードでinterface{}を使うのはもっと「interface{}でなければいけない時」であって、基本的にはなんでも受け取りたいから使うための型ではない。
普通のオブジェクト指向言語でもそうだろ。
後半のコード例に至ってはコンパイル時に検出したいだけだろ。
オーバーロードさせろってんならまだわかるが。
コンパイル後に消えるようなもの書いて喜ぶ事こそ馬鹿らしいわ。
202デフォルトの名無しさん
2018/03/10(土) 22:32:59.68ID:ysTMLqRd >>200
どっちかというとこれを見て思ったんだが
https://ja.wikipedia.org/wiki/%E5%85%B1%E5%A4%89%E6%80%A7%E3%81%A8%E5%8F%8D%E5%A4%89%E6%80%A7_(%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%A6)
どっちかというとこれを見て思ったんだが
https://ja.wikipedia.org/wiki/%E5%85%B1%E5%A4%89%E6%80%A7%E3%81%A8%E5%8F%8D%E5%A4%89%E6%80%A7_(%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%A6)
203デフォルトの名無しさん
2018/03/10(土) 22:36:50.46ID:ysTMLqRd204デフォルトの名無しさん
2018/03/10(土) 22:40:31.66ID:ysTMLqRd >>201
>ユーザコードでinterface{}を使うのはもっと「interface{}でなければいけない時」
現状のGoでそういう理由でinterface{}を使ってる状況ってどんだけあるんだよ。
それじゃすまないからジェネリクスを欲しがってるんでしょうが。
>ユーザコードでinterface{}を使うのはもっと「interface{}でなければいけない時」
現状のGoでそういう理由でinterface{}を使ってる状況ってどんだけあるんだよ。
それじゃすまないからジェネリクスを欲しがってるんでしょうが。
205デフォルトの名無しさん
2018/03/10(土) 23:44:31.64ID:V+AonR8i206デフォルトの名無しさん
2018/03/10(土) 23:45:51.56ID:O29r5RSu こいつ例のヤベェ奴か
207デフォルトの名無しさん
2018/03/10(土) 23:47:15.74ID:V+AonR8i208デフォルトの名無しさん
2018/03/10(土) 23:49:44.45ID:V+AonR8i >>204
結構あると思うけど。
それで済むから、頑なに「未だ早い」と本家が言い続けてるんでしょ。
済まないならもっと早く導入されてるわ。
そんなに変化ねえじゃんと思いがちだが、ホントに要るなって機能はちゃんと入ってきてるよ。ライブラリの出力しかり、ベンダリングしかり、次はモジュール予定されてたり。
結構あると思うけど。
それで済むから、頑なに「未だ早い」と本家が言い続けてるんでしょ。
済まないならもっと早く導入されてるわ。
そんなに変化ねえじゃんと思いがちだが、ホントに要るなって機能はちゃんと入ってきてるよ。ライブラリの出力しかり、ベンダリングしかり、次はモジュール予定されてたり。
209デフォルトの名無しさん
2018/03/10(土) 23:50:33.63ID:ihrcyggr 早くPHP歴4000年秘伝のソースにウンコを継ぎ足す作業に戻れよ
工数の無駄だぞ
工数の無駄だぞ
210デフォルトの名無しさん
2018/03/10(土) 23:53:30.10ID:1bOlQOUq このスレ見てたら俺はC++とPythonでいいやって思えてくる
211デフォルトの名無しさん
2018/03/10(土) 23:57:26.44ID:O29r5RSu こんなスレに影響されんなよ……
因みに俺はCとPythonとFortranとMathematicaでいいと思う
因みに俺はCとPythonとFortranとMathematicaでいいと思う
212デフォルトの名無しさん
2018/03/11(日) 00:04:08.68ID:oVmCfuF5 非変、はScalaあたりから来てるのかな。記憶が曖昧。
213デフォルトの名無しさん
2018/03/11(日) 00:44:51.07ID:RCfxSBiR CとPythonの二刀流ずるい
C++むずい
だからJavaとかGoとかの支持率は下がらない
C++むずい
だからJavaとかGoとかの支持率は下がらない
214デフォルトの名無しさん
2018/03/11(日) 00:52:28.92ID:7XeGL+nE >>207
あとCみたいな旧世代な言語を静的言語代表にされても。
あと横着はプログラマの美徳だよ。
>>208
現在進行形で議論中だよ。安易に入れたくないだけで必要性は明らかだろ。
https://github.com/golang/go/issues/15292
というか他のジェネリクスがある言語を使ってるとわかると思うんだけどな。このイライラ感。
まぁ関数のインターフェースにinterface{}型があっても気にしない人間もいるという事実があることは勉強になったわ。
そういう人間もいるんだ。
あとCみたいな旧世代な言語を静的言語代表にされても。
あと横着はプログラマの美徳だよ。
>>208
現在進行形で議論中だよ。安易に入れたくないだけで必要性は明らかだろ。
https://github.com/golang/go/issues/15292
というか他のジェネリクスがある言語を使ってるとわかると思うんだけどな。このイライラ感。
まぁ関数のインターフェースにinterface{}型があっても気にしない人間もいるという事実があることは勉強になったわ。
そういう人間もいるんだ。
215デフォルトの名無しさん
2018/03/11(日) 00:57:35.32ID:fQarczMf >>199は自爆というかむしろダックタイピングの方だよね?
216デフォルトの名無しさん
2018/03/11(日) 01:05:04.16ID:7Ky5zjn9 反変共変とかすぐに数学用語を取り込んで違う意味にする
217デフォルトの名無しさん
2018/03/11(日) 01:18:09.18ID:fQarczMf >>214を斜め読みしたけど、既存のinterface{}なやつと互換を取るためJavaのgenerics同様にするか
それとは別に問題を捨て去るためD言語やMLみたいな名前空間単位のやつを入れるかで議論してるな
genericsなんて大物は後から入れてもJavaのようにしかならんとは思っていたが
(失礼ながら)goのような保守的な言語に今までのスタイルを捨てさせるような変更を入れられるのかは気になった
それとは別に問題を捨て去るためD言語やMLみたいな名前空間単位のやつを入れるかで議論してるな
genericsなんて大物は後から入れてもJavaのようにしかならんとは思っていたが
(失礼ながら)goのような保守的な言語に今までのスタイルを捨てさせるような変更を入れられるのかは気になった
218デフォルトの名無しさん
2018/03/11(日) 01:37:42.02ID:7XeGL+nE219デフォルトの名無しさん
2018/03/11(日) 01:53:41.48ID:vy+Y2xiY >>161
やっぱり認識の違いが激しいな。これじゃ話が合わんわけだわ
おれの感覚を書くと型情報を書くことで助かることは10~20%くらい
対してテストがある場合は50~60%(約3.5倍)くらい
準備するコストとして型が10~20ならテストは60~70(約4.25倍)の印象
さらに、後からコードを読むときの理解するまでにかかる時間が
静的型が10~20なら動的型は30~40(約2.25倍)の印象。
そして、俺の場合はコードは書くことより読むことの方が多いと思っているので
読むときにかかるコストの違いに良し悪しの重点を置く傾向がある。
というわけで、俺の感覚ではもちろん静的型に軍配が上がる
やっぱり認識の違いが激しいな。これじゃ話が合わんわけだわ
おれの感覚を書くと型情報を書くことで助かることは10~20%くらい
対してテストがある場合は50~60%(約3.5倍)くらい
準備するコストとして型が10~20ならテストは60~70(約4.25倍)の印象
さらに、後からコードを読むときの理解するまでにかかる時間が
静的型が10~20なら動的型は30~40(約2.25倍)の印象。
そして、俺の場合はコードは書くことより読むことの方が多いと思っているので
読むときにかかるコストの違いに良し悪しの重点を置く傾向がある。
というわけで、俺の感覚ではもちろん静的型に軍配が上がる
220デフォルトの名無しさん
2018/03/11(日) 01:54:27.55ID:vy+Y2xiY これ以上は感覚のズレをお互いに調整しないと話が進まないだろうな
そして、その感覚のズレを調整をするつもりは俺にはないし
そっちも多分ないだろうからやはりこれ以上の話は無駄になるだろうな
認識の違いがこれだけもあるということが分かっただけでも良しとしておこう
そして、その感覚のズレを調整をするつもりは俺にはないし
そっちも多分ないだろうからやはりこれ以上の話は無駄になるだろうな
認識の違いがこれだけもあるということが分かっただけでも良しとしておこう
221デフォルトの名無しさん
2018/03/11(日) 06:14:26.94ID:9uw0Jco6 会社でkotlinの勢力が拡大して飲み込まれるのは目前
やだよぉやだよぉ
やだよぉやだよぉ
222デフォルトの名無しさん
2018/03/11(日) 07:33:15.20ID:DgI5cE5A javaが積極的に言語に手を入れるようになったから
kotlinがcoffeescriptと同じ運命を辿るんじゃ無いかと不安を感じる
androidから放り出されない限り生きていられるとは思うが……
kotlinがcoffeescriptと同じ運命を辿るんじゃ無いかと不安を感じる
androidから放り出されない限り生きていられるとは思うが……
223デフォルトの名無しさん
2018/03/11(日) 09:19:38.49ID:pTD+ffED 型システム入門では非変と訳されてるな
224デフォルトの名無しさん
2018/03/11(日) 09:44:46.83ID:IOuBwL8e Goに他の言語の機能を追加したいって声はよく聞くけど
逆に他の言語にGoの機能を追加したいって声はあまり聞かないよね
逆に他の言語にGoの機能を追加したいって声はあまり聞かないよね
225デフォルトの名無しさん
2018/03/11(日) 10:05:15.85ID:VhcwD3HT var導入するのにval導入しないJavaのおじいさんたちはゲェジなのかな?
226デフォルトの名無しさん
2018/03/11(日) 10:21:31.83ID:9agxgqpG COM「反射性、推移性、対称性」
次世代「恒等射、合成、共変、反変」
型アサーションと型変換の宗教論争の原因はこれか
次世代「恒等射、合成、共変、反変」
型アサーションと型変換の宗教論争の原因はこれか
227デフォルトの名無しさん
2018/03/11(日) 10:24:53.59ID:VhcwD3HT セイッ! ヘイッ!
228デフォルトの名無しさん
2018/03/11(日) 10:31:59.14ID:zUkaU6dD AppGameKit Mobile Released on Android!
https://www.thegamecreators.com/post/appgamekit-mobile-released
https://play.google.com/store/apps/details?id=com.tgc.agk.mobile
金曜日、2018年3月2日にTGC NewsのAppGameKit News、
今日、Androidプラットフォーム上のAppGameKit Mobileがリリースされました。
今では、AppGameKit Mobileでどこでもどこでもアプリ、デモ、ゲームを作成して、「外出先で」コーディングすることができます。
この完全に無料のAppGameKitのバージョンでは、通常のAppGameKitスクリプト言語を使用してコードを作成してから、プロ
ジェクトをコンパイルしてデバイス上で直接実行することができます。このアプリにはデモとサンプルが付属しているため、新
規ユーザーはプログラミング言語の使いやすさを知ることができます。
カットダウンしたIDE内でアプリケーションをコーディングしてから、超高速コンパイラを使用して、プロジェクトをほぼ即座に実
行することができます。クラウドを追加して保存すると、あなたのプロジェクトをTheGameCreatorsのウェブサイトにアップロー
ドして、プロジェクトを安全に保護したり、Windows、Mac、Linux版のAppGameKitでコーディングを続けることができます。
AppGameKit Mobileは、デスクトップ版の多くのコマンドへのアクセスを提供します。最も重要なのは、ゲーム作成のためのす
べての主要なコマンドです。
・3Dグラフィックスと3D物理
・2Dグラフィックスと2D物理
・レンダリングコントロール
・サウンド&ミュージック
・ユーザー入力
・ファイルI / O
・センサー
カメラと写真のアクセスでは、あなたのデバイスから画像メディアをインポートしてから、これらの画像をアプリケーションのス
プライトまたはテクスチャとして使用できます。
今すぐ無料でダウンロード!
https://www.thegamecreators.com/post/appgamekit-mobile-released
https://play.google.com/store/apps/details?id=com.tgc.agk.mobile
金曜日、2018年3月2日にTGC NewsのAppGameKit News、
今日、Androidプラットフォーム上のAppGameKit Mobileがリリースされました。
今では、AppGameKit Mobileでどこでもどこでもアプリ、デモ、ゲームを作成して、「外出先で」コーディングすることができます。
この完全に無料のAppGameKitのバージョンでは、通常のAppGameKitスクリプト言語を使用してコードを作成してから、プロ
ジェクトをコンパイルしてデバイス上で直接実行することができます。このアプリにはデモとサンプルが付属しているため、新
規ユーザーはプログラミング言語の使いやすさを知ることができます。
カットダウンしたIDE内でアプリケーションをコーディングしてから、超高速コンパイラを使用して、プロジェクトをほぼ即座に実
行することができます。クラウドを追加して保存すると、あなたのプロジェクトをTheGameCreatorsのウェブサイトにアップロー
ドして、プロジェクトを安全に保護したり、Windows、Mac、Linux版のAppGameKitでコーディングを続けることができます。
AppGameKit Mobileは、デスクトップ版の多くのコマンドへのアクセスを提供します。最も重要なのは、ゲーム作成のためのす
べての主要なコマンドです。
・3Dグラフィックスと3D物理
・2Dグラフィックスと2D物理
・レンダリングコントロール
・サウンド&ミュージック
・ユーザー入力
・ファイルI / O
・センサー
カメラと写真のアクセスでは、あなたのデバイスから画像メディアをインポートしてから、これらの画像をアプリケーションのス
プライトまたはテクスチャとして使用できます。
今すぐ無料でダウンロード!
229デフォルトの名無しさん
2018/03/11(日) 10:36:02.25ID:wjY1+kiE230デフォルトの名無しさん
2018/03/11(日) 10:54:05.51ID:VhcwD3HT Kotlinは要するにBabelだろ
JavaがKotlin相当に進化する頃にはJava 1000くらいになってるだろ
それを実行できるAndroidはバージョン100000くらい
じゃあJava 6までダウンコンパイルできるKotlinだよねって話
でもReact Nativeに殺されるんだぜ、嘘みたいだろ?
JavaがKotlin相当に進化する頃にはJava 1000くらいになってるだろ
それを実行できるAndroidはバージョン100000くらい
じゃあJava 6までダウンコンパイルできるKotlinだよねって話
でもReact Nativeに殺されるんだぜ、嘘みたいだろ?
231デフォルトの名無しさん
2018/03/11(日) 10:56:21.30ID:VhcwD3HT わかるか?バカども
232デフォルトの名無しさん
2018/03/11(日) 12:14:58.84ID:SpuufNIs 関数型が流行るようなことにはならない
233デフォルトの名無しさん
2018/03/11(日) 12:57:58.24ID:7Ky5zjn9 関数型言語Mathematica
234デフォルトの名無しさん
2018/03/11(日) 13:02:55.03ID:I+OrX4eg235デフォルトの名無しさん
2018/03/11(日) 13:13:29.16ID:7Ky5zjn9 コードリーディングという意味では型情報はありがたい。でも引数に何を入れればいいかLAPACKくらいしっかり書いてあるとなお良い
しかし関数名の直後にドキュメントが長々と書いてあってどこからコードなのかよくわからん奴は嫌い
しかし関数名の直後にドキュメントが長々と書いてあってどこからコードなのかよくわからん奴は嫌い
236デフォルトの名無しさん
2018/03/11(日) 13:23:51.64ID:vy+Y2xiY >>234
比較って言ってもこれは独断と偏見に満ちた個人的な印象値だぞ…
参考にして欲しくて書いたわけじゃなくて認識の違いを明らかにするために書いたものだし…
あと、静的動的どちらでもテストは書くんだからテストがない場合と比較することに何の意味が…?
比較って言ってもこれは独断と偏見に満ちた個人的な印象値だぞ…
参考にして欲しくて書いたわけじゃなくて認識の違いを明らかにするために書いたものだし…
あと、静的動的どちらでもテストは書くんだからテストがない場合と比較することに何の意味が…?
237デフォルトの名無しさん
2018/03/11(日) 13:36:14.47ID:I+OrX4eg なるほど話が噛み合わないわけだ。
俺としては別に動的
本当にテスト書いてんのかなってとこのが重要だと思ってたわけだが、
動的か静的ってとこにそんなに興味があったんだね。
その部分に対してはどっちでもいいわ。
逆にテストするのしないのって話から話題をそらすための抗弁になりやすい印象が強いので
あんまり関わりたい議論ではない。
俺としては別に動的
本当にテスト書いてんのかなってとこのが重要だと思ってたわけだが、
動的か静的ってとこにそんなに興味があったんだね。
その部分に対してはどっちでもいいわ。
逆にテストするのしないのって話から話題をそらすための抗弁になりやすい印象が強いので
あんまり関わりたい議論ではない。
238デフォルトの名無しさん
2018/03/11(日) 13:42:53.78ID:9agxgqpG 状況が変わったのにまだ気付いてないんだな
だれも嘘をつかない性善説を前提に読みやすいとか読みにくいとか言う時代は終わった
今は嘘を教える人間を回避することが最重要
正直でありさえすれば読みやすさは不問
だれも嘘をつかない性善説を前提に読みやすいとか読みにくいとか言う時代は終わった
今は嘘を教える人間を回避することが最重要
正直でありさえすれば読みやすさは不問
239デフォルトの名無しさん
2018/03/11(日) 13:58:30.20ID:7Ky5zjn9 最強の関数型言語Mathematica を崇めよ
240デフォルトの名無しさん
2018/03/11(日) 14:32:32.97ID:VhcwD3HT 嘘うんぬん以前にガイジなせいでウンコードまみれなペチPoorさんはどうすればいいの?
241デフォルトの名無しさん
2018/03/11(日) 14:43:30.00ID:lK6s4tSM ここがphpスレですか
242デフォルトの名無しさん
2018/03/11(日) 15:03:28.52ID:5lhurhYh243デフォルトの名無しさん
2018/03/11(日) 15:04:09.58ID:7Ky5zjn9 嘘ねえ……そういえば昔知りもしない言語の嘘八百ばらまいてた人いたなあ
244デフォルトの名無しさん
2018/03/11(日) 15:05:01.09ID:7Ky5zjn9 Nuとか息してんの?
245デフォルトの名無しさん
2018/03/11(日) 15:09:53.59ID:P2AtP6SF >>242
クロスコンパイル楽すぎワロタwwww
クロスコンパイル楽すぎワロタwwww
246デフォルトの名無しさん
2018/03/11(日) 16:27:48.12ID:5ndBYMhR 今も居るんだけどなw
247デフォルトの名無しさん
2018/03/11(日) 16:28:13.49ID:YmDYWSQj >>240
phpディスってる人も多いけど、タイプアノテーションついてだいぶ改善されつつあるんじゃないの。結局仕事にはphpも多いからlinterとか環境整備して開発しやすい状況は作っておきたい
phpディスってる人も多いけど、タイプアノテーションついてだいぶ改善されつつあるんじゃないの。結局仕事にはphpも多いからlinterとか環境整備して開発しやすい状況は作っておきたい
248デフォルトの名無しさん
2018/03/11(日) 16:48:52.27ID:V9/n/ORo タイプアノテーションだのlinterだの、PHPerがいらねーって騒いでたものばっかりやん
249デフォルトの名無しさん
2018/03/11(日) 16:53:21.57ID:vy+Y2xiY >>237
いまいち話が掴めないんだが、テストを書くのが面倒だからイヤって奴はクソって言いわけ?
俺はできればテストは書きたくないよ。面倒だし。でも書かないわけにはいかない
だったら、テストは書くがテストを書く量を減らしたい
動的型より静的型のほうがテストを書く量を減らせそう…と考えている。
実際に減らせるかどうかはデータを取ってみないと何とも言えないけど
少なくとも動的より静的のほうが減らせるという意見はあってもその逆はない
最低限のテストさえも書こうとしない奴は論外なのでそっちの話はしたくない
いまいち話が掴めないんだが、テストを書くのが面倒だからイヤって奴はクソって言いわけ?
俺はできればテストは書きたくないよ。面倒だし。でも書かないわけにはいかない
だったら、テストは書くがテストを書く量を減らしたい
動的型より静的型のほうがテストを書く量を減らせそう…と考えている。
実際に減らせるかどうかはデータを取ってみないと何とも言えないけど
少なくとも動的より静的のほうが減らせるという意見はあってもその逆はない
最低限のテストさえも書こうとしない奴は論外なのでそっちの話はしたくない
250デフォルトの名無しさん
2018/03/11(日) 16:54:04.68ID:vy+Y2xiY 静的型派の奴はテストは書きたくないって意見は俺以外にもいると思うけど
動的型派はテスト書くのは面倒だとは思わないの?
それを言うと、静的型派の連中は型を書くのは面倒だとは思わないのか?とか言われそうだが、
静的型派の奴らは型安全は保障してほしいとは思いつつ型を書くのが面倒だとも思ってるよ
だから型推論なんかを導入して型を書かずに済む方法を模索している
動的型派はテスト書くのは面倒だとは思わないの?
それを言うと、静的型派の連中は型を書くのは面倒だとは思わないのか?とか言われそうだが、
静的型派の奴らは型安全は保障してほしいとは思いつつ型を書くのが面倒だとも思ってるよ
だから型推論なんかを導入して型を書かずに済む方法を模索している
251デフォルトの名無しさん
2018/03/11(日) 16:58:13.27ID:ciWbW39V■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】日本産牛肉の対中国輸出再開協議が中止 [おっさん友の会★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★2 [BFU★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★3 [BFU★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 [ぐれ★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★4 [ぐれ★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★3 [ぐれ★]
- 【実況】博衣こよりのえちえち雑談🧪★2
- 高市早苗って戦後最悪の総理大臣なのでは🤔? [929293504]
- 【悲報】自民党「聞いてないよー」 [616817505]
- 【実況】博衣こよりのえちえち雑談🧪
- 【高市速報】トヨタ社長、MAGA帽子をかぶって登場し世界を震撼させる [462275543]
- 竹田天皇「ホタテ輸入禁止されても中国以外誰も困らない。中国以外に売ればいいんだから」高市 [931948549]
