スレタイ以外の言語もok
前スレ
次世代言語23 Go Nim Rust Swift Kotlin TypeScript
https://mevius.5ch.net/test/read.cgi/tech/1638086359/
探検
次世代言語24 Go Nim Rust Swift Kotlin TypeScript
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2022/03/22(火) 03:23:41.60ID:ZDHdo9X7257デフォルトの名無しさん
2022/03/26(土) 07:54:07.76ID:Vvd4qIhx258デフォルトの名無しさん
2022/03/26(土) 08:12:28.41ID:3FEKWr2M >>256
それはそういう話じゃないと思うぜ
C++とRustの両方使いこなせると分かるが
低レベルであるポインタアクセスがRustでは無くなり抽象化された参照アクセスとなり
安全でないアクセスがコンパイル時点で排除されるためその種の実行時デバッグが無くなる
その件だと思われる
それはそういう話じゃないと思うぜ
C++とRustの両方使いこなせると分かるが
低レベルであるポインタアクセスがRustでは無くなり抽象化された参照アクセスとなり
安全でないアクセスがコンパイル時点で排除されるためその種の実行時デバッグが無くなる
その件だと思われる
259デフォルトの名無しさん
2022/03/26(土) 08:24:24.55ID:9q2PYIcF >>257
ただの記憶違いに知能は関係ないw 実際それで困ったことがないからなw
ただの記憶違いに知能は関係ないw 実際それで困ったことがないからなw
260デフォルトの名無しさん
2022/03/26(土) 08:47:16.92ID:9LDujC2l >>259
その件は君が嘘をついていると明確になっている
その件の書き込みを見ると君はarrayとsliceを勘違いしただけでなく関数からarrayで返すと明言している
一方でその関数は返り型宣言で必ず[T; N]が現れる
このNは定数であるからさらに宣言することになりarrayでNの存在を忘れる人はいない
しかし君はarrayを[T]だと間違えて覚えていたわけだから矛盾する
君はRustのコードを書いたことがないという結論となる
その件は君が嘘をついていると明確になっている
その件の書き込みを見ると君はarrayとsliceを勘違いしただけでなく関数からarrayで返すと明言している
一方でその関数は返り型宣言で必ず[T; N]が現れる
このNは定数であるからさらに宣言することになりarrayでNの存在を忘れる人はいない
しかし君はarrayを[T]だと間違えて覚えていたわけだから矛盾する
君はRustのコードを書いたことがないという結論となる
261デフォルトの名無しさん
2022/03/26(土) 09:14:29.48ID:9q2PYIcF 何を勘違いしちゃったのか知らないけど、こう書いてあるんだけどw
「arrayは定義はあるんだけど、今まで初期化にしか使わなかったから、使わなすぎて間違って覚えてたw」
「arrayは定義はあるんだけど、今まで初期化にしか使わなかったから、使わなすぎて間違って覚えてたw」
262デフォルトの名無しさん
2022/03/26(土) 09:23:18.54ID:6PoAfdDe >>260
正確にはガイガー君はsliceで受けてArrayで返すと言っている
この発言の時点でガイガー君はRustを知らないと証拠
動的サイズのスライスで受けて固定サイズの配列を返すのは不可能だからだ
Nが判明しないと配列で返せないが実行時になるまでスライスの長さは不明
この点からもガイガー君はRustを知らない
正確にはガイガー君はsliceで受けてArrayで返すと言っている
この発言の時点でガイガー君はRustを知らないと証拠
動的サイズのスライスで受けて固定サイズの配列を返すのは不可能だからだ
Nが判明しないと配列で返せないが実行時になるまでスライスの長さは不明
この点からもガイガー君はRustを知らない
263デフォルトの名無しさん
2022/03/26(土) 09:51:30.12ID:9q2PYIcF ニュアンスが違うんだよw
「それは俺のポリシーとして、可能ならVecを返すならVecを受けたいだけw
今回のケースではメリットとかないよw
同様にsliceで受けたらArrayで返したいし、iteratorを受けたらiteratorを返したいw」
slice->&[T]
array->[T]
「それは俺のポリシーとして、可能ならVecを返すならVecを受けたいだけw
今回のケースではメリットとかないよw
同様にsliceで受けたらArrayで返したいし、iteratorを受けたらiteratorを返したいw」
slice->&[T]
array->[T]
264デフォルトの名無しさん
2022/03/26(土) 09:55:08.60ID:Vvd4qIhx はるかに長い期間やってるのにこの有様
子供の遊びかな?
子供の遊びかな?
265デフォルトの名無しさん
2022/03/26(土) 09:56:51.30ID:9q2PYIcF 実際のロジック書くのに使ってたのVecだもんw
266デフォルトの名無しさん
2022/03/26(土) 10:02:36.56ID:+G9UHc/m 結局TypeScriptがどの場においても最強って言いたいの?
267デフォルトの名無しさん
2022/03/26(土) 10:18:06.61ID:Iuuv9oj0 間違ってても普通に説明すりゃいいのにお互いに煽りながら主張しあってるから、くだらない議論が余計に長引く
268デフォルトの名無しさん
2022/03/26(土) 10:39:18.75ID:9q2PYIcF TypeScriptさいきょー
269デフォルトの名無しさん
2022/03/26(土) 10:44:45.97ID:Z1/vdmI3270デフォルトの名無しさん
2022/03/26(土) 11:44:23.82ID:3zXxZFyx goとtypescriptどっちかを捨てればいいのに
tcshやrubyを捨てるみたいに
tcshやrubyを捨てるみたいに
271デフォルトの名無しさん
2022/03/26(土) 12:29:34.61ID:5mCX3GGP 新しい言語はどれも配列の宣言があまりきれいじゃない気がする
Cなどの型名 変数名[要素数]だと何か都合が悪いのだろうか
それともやってる感を出すために変えてるの?
Cなどの型名 変数名[要素数]だと何か都合が悪いのだろうか
それともやってる感を出すために変えてるの?
272デフォルトの名無しさん
2022/03/26(土) 12:37:22.57ID:9D+dR2jG273デフォルトの名無しさん
2022/03/26(土) 12:41:53.15ID:sDWgty5N >>271自身がモダンな言語における配列を正しく理解できてないから変なように感じるんじゃないかな
最近の言語ではCスタイルの配列、いわゆる配列変数(複数個の変数が連続して並んでいるもの)はあまり積極的に使用されないんだよ
最近の言語では配列は配列型のオブジェクトであって、変数が並んでるわけじゃないの
最近の言語ではCスタイルの配列、いわゆる配列変数(複数個の変数が連続して並んでいるもの)はあまり積極的に使用されないんだよ
最近の言語では配列は配列型のオブジェクトであって、変数が並んでるわけじゃないの
274デフォルトの名無しさん
2022/03/26(土) 12:49:13.92ID:N9qlOq0y275デフォルトの名無しさん
2022/03/26(土) 17:16:05.98ID:+G9UHc/m276デフォルトの名無しさん
2022/03/26(土) 18:34:45.11ID:9q2PYIcF 別スレの引用なので、興味があればそれを見てこいw
LL/LRとか懐かしいなw
S式とかに回帰するかw
LL/LRとか懐かしいなw
S式とかに回帰するかw
277デフォルトの名無しさん
2022/03/26(土) 18:46:07.16ID:MJID/KD0 ちんちんシュッ!シュッ!シュッ!
278デフォルトの名無しさん
2022/03/26(土) 20:52:37.86ID:Vz8Iz6e1 >>263
Vecを受けてVecを返すインタフェースに通常することはない
普通は以下のようにする
(1) 同じVecを返す場合 (=書き換えたい場合)
まずこの場合はVec<T>自体を渡さなくても参照を渡せば済む
書き換えるから&mut Vec<T>を渡せばいいように思うが
普通はスライス&mut [T]を渡すインタフェースにする
なぜならVecの書き換え参照を渡すとVecの書き換えしかできないが
スライスの書き換え参照を渡せばVecの途中一部の書き換えもできるし
配列や配列の途中一部の書き換えもできるからである
(2) 別のVecを返す場合 (=引数側のVecのデータから作り出したい場合)
この場合も同様となる
引数としてVec<T>を渡すのではなくスライス共有参照&[T]を引数にする
これで入力データがVecだけでなく配列やそれらの一部でも受け付けることが可能
(2)' (2)のケースで入力を順次アクセスのみする場合
この場合は入力としてイテレータを受け付けられると良い場合がある
なぜならイテレータはVecのようなメモリ領域を必要としないため有利
イテレータを入力とする場合のインタフェースは更に2通りに分かれる
[a] イテレータのメソッドとしてしまう
イテレータチェーンに組み込むことができて便利
ただしVecや配列やスライスに適用する時はinput.iter().method()の形になる
[b] 引数として IntoIterator<Item=T> を受け付ける
これだと引数に直接スライス、配列、Vec、イテレータのどれも渡せて便利
ただしイテレータチェーンに組み込むことはできない
イテレータメソッドの2つ目の入力インタフェースとしても使われる
どちらの場合でも順次出力でない場合ならばVecを返すのもありだが
順次出力ならばイテレータを返したほうがイテレータチェーンに組み込めて有利
なぜなら中間生成Vecを無駄に返さずに済むからである
この場合にVecが欲しければcollect()すればよい
Vecを受けてVecを返すインタフェースに通常することはない
普通は以下のようにする
(1) 同じVecを返す場合 (=書き換えたい場合)
まずこの場合はVec<T>自体を渡さなくても参照を渡せば済む
書き換えるから&mut Vec<T>を渡せばいいように思うが
普通はスライス&mut [T]を渡すインタフェースにする
なぜならVecの書き換え参照を渡すとVecの書き換えしかできないが
スライスの書き換え参照を渡せばVecの途中一部の書き換えもできるし
配列や配列の途中一部の書き換えもできるからである
(2) 別のVecを返す場合 (=引数側のVecのデータから作り出したい場合)
この場合も同様となる
引数としてVec<T>を渡すのではなくスライス共有参照&[T]を引数にする
これで入力データがVecだけでなく配列やそれらの一部でも受け付けることが可能
(2)' (2)のケースで入力を順次アクセスのみする場合
この場合は入力としてイテレータを受け付けられると良い場合がある
なぜならイテレータはVecのようなメモリ領域を必要としないため有利
イテレータを入力とする場合のインタフェースは更に2通りに分かれる
[a] イテレータのメソッドとしてしまう
イテレータチェーンに組み込むことができて便利
ただしVecや配列やスライスに適用する時はinput.iter().method()の形になる
[b] 引数として IntoIterator<Item=T> を受け付ける
これだと引数に直接スライス、配列、Vec、イテレータのどれも渡せて便利
ただしイテレータチェーンに組み込むことはできない
イテレータメソッドの2つ目の入力インタフェースとしても使われる
どちらの場合でも順次出力でない場合ならばVecを返すのもありだが
順次出力ならばイテレータを返したほうがイテレータチェーンに組み込めて有利
なぜなら中間生成Vecを無駄に返さずに済むからである
この場合にVecが欲しければcollect()すればよい
279デフォルトの名無しさん
2022/03/26(土) 21:26:11.73ID:9q2PYIcF >>278
間違ってるよw それは俺のポリシーだからw 普通こうするという話じゃないw
間違ってるよw それは俺のポリシーだからw 普通こうするという話じゃないw
280デフォルトの名無しさん
2022/03/26(土) 22:23:14.39ID:27vH2xuj ガイガー君はRustに関しても素人だから
そういう常識を知らなくても仕方ない
そういう常識を知らなくても仕方ない
281デフォルトの名無しさん
2022/03/26(土) 22:42:20.46ID:Z1/vdmI3 >>279
なんでそういうポリシーなの?
なんでそういうポリシーなの?
282デフォルトの名無しさん
2022/03/26(土) 23:07:56.60ID:Z1/vdmI3283デフォルトの名無しさん
2022/03/26(土) 23:13:02.38ID:Z1/vdmI3 >>279
あっ、もしかしてborrow checker通すために借用使わないようにしてる?
あっ、もしかしてborrow checker通すために借用使わないようにしてる?
284デフォルトの名無しさん
2022/03/26(土) 23:29:11.35ID:fQbyL396 鋭い指摘だな
確かにガイガー君は参照を使いこなせなくて借用を批判してた
確かにガイガー君は参照を使いこなせなくて借用を批判してた
285デフォルトの名無しさん
2022/03/26(土) 23:34:15.32ID:Vvd4qIhx なんか哀れだよね彼は
286デフォルトの名無しさん
2022/03/26(土) 23:41:42.26ID:9q2PYIcF 同じ型の方が設計意図が明白になるし、繋げやすいからw それだけだよw 他のにする理由がないよねw
まあもとのスレにも理由は書いたけどw
まあもとのスレにも理由は書いたけどw
287デフォルトの名無しさん
2022/03/26(土) 23:58:50.18ID:+vg1NaC4 >>286
繋げやすい??
全く意味不明だ
繋げるならばメソッドチェーンにすべき
そしてVecが中間生成物となるのは無駄となるバッドパターン
イテレータメソッドチェーンにすべき
イテレータを使わないならばスライスを引数で渡すべき
繋げやすい??
全く意味不明だ
繋げるならばメソッドチェーンにすべき
そしてVecが中間生成物となるのは無駄となるバッドパターン
イテレータメソッドチェーンにすべき
イテレータを使わないならばスライスを引数で渡すべき
288デフォルトの名無しさん
2022/03/27(日) 00:23:39.64ID:PoGWmBV8289デフォルトの名無しさん
2022/03/27(日) 00:25:07.45ID:v5PJ1K00 >>286
借用で済ませて良い場所で所有権要求するのは普通じゃないからドキュメントコメントにちゃんと書いた方が良いよ
借用で済ませて良い場所で所有権要求するのは普通じゃないからドキュメントコメントにちゃんと書いた方が良いよ
290デフォルトの名無しさん
2022/03/27(日) 00:30:12.96ID:wv2YT7DD291デフォルトの名無しさん
2022/03/27(日) 01:18:29.05ID:PoGWmBV8 wwwww
知ってて書いてるんだと思うが、もとを読めば分かるけど、参照で受けてるよw
知ってて書いてるんだと思うが、もとを読めば分かるけど、参照で受けてるよw
292デフォルトの名無しさん
2022/03/27(日) 01:35:46.26ID:BChElFEF >>291
見てみた
確かに引数の型をVecの参照にしてることがわかった
そして元のお題では一貫してずっとlet input = ["a", "b", "c"];となっているのに
引数の型をVecの参照にしてしまったためそこだけlet input = vec!["a", "b", "c"];としている
つまりに引数の型をVecの参照したのは明白な失敗となっている
もちろん正解は引数の型をスライスにすること
これで配列もVecも受け取れる
見てみた
確かに引数の型をVecの参照にしてることがわかった
そして元のお題では一貫してずっとlet input = ["a", "b", "c"];となっているのに
引数の型をVecの参照にしてしまったためそこだけlet input = vec!["a", "b", "c"];としている
つまりに引数の型をVecの参照したのは明白な失敗となっている
もちろん正解は引数の型をスライスにすること
これで配列もVecも受け取れる
293デフォルトの名無しさん
2022/03/27(日) 03:52:33.29ID:PoGWmBV8294デフォルトの名無しさん
2022/03/27(日) 04:12:54.52ID:keWGy6tX >>293
それまでに他の人たちが書いたコードは入力元データが全てlet input = ["a", "b", "c"];と配列になっているね
そして関数の引数の型は全てスライス&[T]となっているね
ところが唐突にその引数の型を&Vec<T>へと変更したコードが登場
それまでの入力元の配列をスライスで渡すことが出来なくなる破綻
破綻の辻褄を合わせるため入力元データを配列から無駄で無意味なlet input = vec!["a", "b", "c"];へと変更
それまで入力元が配列でもスライスでもVecでも大丈夫だったのに入力元がVecしか受け付けなくなっているね
それまでに他の人たちが書いたコードは入力元データが全てlet input = ["a", "b", "c"];と配列になっているね
そして関数の引数の型は全てスライス&[T]となっているね
ところが唐突にその引数の型を&Vec<T>へと変更したコードが登場
それまでの入力元の配列をスライスで渡すことが出来なくなる破綻
破綻の辻褄を合わせるため入力元データを配列から無駄で無意味なlet input = vec!["a", "b", "c"];へと変更
それまで入力元が配列でもスライスでもVecでも大丈夫だったのに入力元がVecしか受け付けなくなっているね
295デフォルトの名無しさん
2022/03/27(日) 07:57:46.18ID:DQbwsS9F > 2つの方法からsliceとしない方を選択したのw
キミはスライスが何なのかも知らなかったでしょ
自分の知能が低いのを弁えないと恥かくよ
キミはスライスが何なのかも知らなかったでしょ
自分の知能が低いのを弁えないと恥かくよ
296デフォルトの名無しさん
2022/03/27(日) 08:56:07.10ID:PoGWmBV8 >>294-295
何を言いたいのか知らんが、I/F部分は自由にいじってるので、渡す型が変わるのなんて何の問題もないよw
何を言いたいのか知らんが、I/F部分は自由にいじってるので、渡す型が変わるのなんて何の問題もないよw
297デフォルトの名無しさん
2022/03/27(日) 09:20:19.51ID:aDr0zmJe298デフォルトの名無しさん
2022/03/27(日) 10:51:24.60ID:PoGWmBV8 >>297
何度も言ってるようにポリシーw
何度も言ってるようにポリシーw
299デフォルトの名無しさん
2022/03/27(日) 10:56:32.38ID:hQNNJiB+ >>298
劣ったコードにするポリシーかよ…
劣ったコードにするポリシーかよ…
300デフォルトの名無しさん
2022/03/27(日) 11:10:30.04ID:DQbwsS9F さすがに可哀想やからもうやめたれ
301デフォルトの名無しさん
2022/03/27(日) 11:41:31.93ID:PoGWmBV8 >>299-300
別に劣っても可哀想でもないよw 意図が明白なコードになってるw
別に劣っても可哀想でもないよw 意図が明白なコードになってるw
302デフォルトの名無しさん
2022/03/27(日) 12:11:24.82ID:mrHY19JA 面白い課題なんだね
input = ['a', 'b', 'c']; と集合が与えられた時に
そのべき集合(=全ての部分集合)を返す関数subsets()を作成せよ、ってことか
[]とか['a']とか['a', 'b']とか['a', 'b', 'c']とか全てを漏れなく返せと
input = ['a', 'b', 'c']; と集合が与えられた時に
そのべき集合(=全ての部分集合)を返す関数subsets()を作成せよ、ってことか
[]とか['a']とか['a', 'b']とか['a', 'b', 'c']とか全てを漏れなく返せと
303デフォルトの名無しさん
2022/03/27(日) 12:27:49.24ID:PoGWmBV8 初学の人でもすぐ書ける簡単なロジックだよw
304デフォルトの名無しさん
2022/03/27(日) 12:39:06.02ID:w1ZdsVcb >>303
じゃあプログラム書いてみて
じゃあプログラム書いてみて
305デフォルトの名無しさん
2022/03/27(日) 14:06:20.96ID:v5PJ1K00306デフォルトの名無しさん
2022/03/27(日) 15:46:34.95ID:PoGWmBV8 このスレでも参照って何度も書いてんだけどw アホなのw?
307デフォルトの名無しさん
2022/03/27(日) 20:05:48.71ID:beT1hCdX たかだか数年で身につけたスキル、しかも数年後には使ってないかもしれないスキルでイキってんじゃねーよ
308デフォルトの名無しさん
2022/03/27(日) 21:23:46.37ID:PoGWmBV8 Rustは数年後にはなくなってるかもねw
309デフォルトの名無しさん
2022/03/27(日) 23:33:02.98ID:Pk6DsGJR 人間よりは長生きしてもらわないと
AIが人間に勝てそうな所がどんどん減っていく
AIが人間に勝てそうな所がどんどん減っていく
310デフォルトの名無しさん
2022/03/27(日) 23:40:27.92ID:PoGWmBV8 Rustなんて人間に負けっぱなしな印象しかないけど・・・w
311デフォルトの名無しさん
2022/03/28(月) 05:38:25.18ID:1zvMDK8z 恥ずかしながら質問なんだがNimって何?
312デフォルトの名無しさん
2022/03/28(月) 06:43:08.84ID:dhMFtSYI 中間生成となるVecを使わずにイテレータを返すイテレータにするという点と
2進数でべき集合を表現するという点が面白いね
fn subsets<T>(input: &[T]) -> impl Iterator<Item=impl Iterator<Item=&T>> {
let len = input.len();
(0..(1 << len))
.map(move |bits| (0..len)
.filter(move |index| bits & (1 << index) != 0)
.map(|index| &input[index]))
}
fn main() {
let input = ["a", "b", "c"];
use itertools::Itertools;
for (i, iter) in subsets(&input).enumerate() {
println!("{}: {:03b}: [{:?}]", i, i, iter.format(", "));
}
}
出力
0: 000: []
1: 001: ["a"]
2: 010: ["b"]
3: 011: ["a", "b"]
4: 100: ["c"]
5: 101: ["a", "c"]
6: 110: ["b", "c"]
7: 111: ["a", "b", "c"]
2進数でべき集合を表現するという点が面白いね
fn subsets<T>(input: &[T]) -> impl Iterator<Item=impl Iterator<Item=&T>> {
let len = input.len();
(0..(1 << len))
.map(move |bits| (0..len)
.filter(move |index| bits & (1 << index) != 0)
.map(|index| &input[index]))
}
fn main() {
let input = ["a", "b", "c"];
use itertools::Itertools;
for (i, iter) in subsets(&input).enumerate() {
println!("{}: {:03b}: [{:?}]", i, i, iter.format(", "));
}
}
出力
0: 000: []
1: 001: ["a"]
2: 010: ["b"]
3: 011: ["a", "b"]
4: 100: ["c"]
5: 101: ["a", "c"]
6: 110: ["b", "c"]
7: 111: ["a", "b", "c"]
313デフォルトの名無しさん
2022/03/28(月) 08:08:20.92ID:hQA9uA7d314デフォルトの名無しさん
2022/03/28(月) 11:24:54.13ID:cDjwoBcZ315デフォルトの名無しさん
2022/03/28(月) 12:05:00.42ID:6B08HyS+ ツッコミついでにスライスの参照ではなくVecでインターフェース書くメリットについて考えてみたが
これ考え方がモロにPythonのそれだわ
こういう設計はRustだとあんまりやらないが、これをVecから派生した型へのimplとして書くとそこまで違和感ない
「Rustっぽくない」のは指摘されてる通りだが、思想としてはたぶんそこから来てる
これ考え方がモロにPythonのそれだわ
こういう設計はRustだとあんまりやらないが、これをVecから派生した型へのimplとして書くとそこまで違和感ない
「Rustっぽくない」のは指摘されてる通りだが、思想としてはたぶんそこから来てる
316デフォルトの名無しさん
2022/03/28(月) 12:12:56.02ID:6B08HyS+ Pythonはそのまま例えばこんな感じで書かれた関数をオブジェクトに代入してメソッドに使えるからPythonって言ったけど
とにかくオブジェクト指向にどっぷり頭まで漬かった設計だな
元の「どちらのやり方もある」発言も、「関数型の書き方に寄せるかオブジェクト指向的な書き方に寄せるか」という意味なら納得
(まあオブジェクト指向に寄せるならimplで書けよなんだが)
とにかくオブジェクト指向にどっぷり頭まで漬かった設計だな
元の「どちらのやり方もある」発言も、「関数型の書き方に寄せるかオブジェクト指向的な書き方に寄せるか」という意味なら納得
(まあオブジェクト指向に寄せるならimplで書けよなんだが)
317デフォルトの名無しさん
2022/03/28(月) 14:02:45.07ID:aDLT1T3I318デフォルトの名無しさん
2022/03/28(月) 14:31:13.30ID:tMGTgyj2 >>316
そのimplを使ったオブジェクト指向的な書き方でもその理由はおかしい
例えばRustには以下のようなrepeatというメソッドが標準ライブラリにある
assert_eq!(vec![1, 2].repeat(3), vec![1, 2, 1, 2, 1, 2]);
もちろんご指摘のようにimplで書かれているのでメソッドとして使えている
しかしソースコードを見てみると次のようになっている
impl<T> [T] {
fn repeat(&self, n: usize) -> Vec<T>
(以下略)
つまりVec<T>に対してではなくスライス[T]に対してimplされている
したがって配列に対しても適用できる
assert_eq!([1, 2].repeat(3), vec![1, 2, 1, 2, 1, 2]);
もちろんスライスに対しても適用できる
let v = [0, 1, 2, 3, 4];
assert_eq!(v[1..=2].repeat(3), vec![1, 2, 1, 2, 1, 2]);
>>315
上述の状況なのでその指摘では皆が納得できる理由や説明になっていない
メリットについて考えてみたとのことだがVecにimplするメリットもない
そのimplを使ったオブジェクト指向的な書き方でもその理由はおかしい
例えばRustには以下のようなrepeatというメソッドが標準ライブラリにある
assert_eq!(vec![1, 2].repeat(3), vec![1, 2, 1, 2, 1, 2]);
もちろんご指摘のようにimplで書かれているのでメソッドとして使えている
しかしソースコードを見てみると次のようになっている
impl<T> [T] {
fn repeat(&self, n: usize) -> Vec<T>
(以下略)
つまりVec<T>に対してではなくスライス[T]に対してimplされている
したがって配列に対しても適用できる
assert_eq!([1, 2].repeat(3), vec![1, 2, 1, 2, 1, 2]);
もちろんスライスに対しても適用できる
let v = [0, 1, 2, 3, 4];
assert_eq!(v[1..=2].repeat(3), vec![1, 2, 1, 2, 1, 2]);
>>315
上述の状況なのでその指摘では皆が納得できる理由や説明になっていない
メリットについて考えてみたとのことだがVecにimplするメリットもない
319デフォルトの名無しさん
2022/03/28(月) 22:32:51.22ID:O2ikFAVr ガイガー君完敗か
320デフォルトの名無しさん
2022/03/28(月) 23:11:23.81ID:51Y1Thh9 1+1=の結果とか誰も興味ない上、俺がindex版、iterator版、vector版3つ正解を書いてやった後も、誰も興味のないその話題をひたすら続けて無視された挙げ句、このスレにまで持ってきて見当違いな自画自賛と自作自演の嵐w
どれだけバカなんだよw
どれだけバカなんだよw
321デフォルトの名無しさん
2022/03/28(月) 23:19:40.94ID:ie9Ayk2m322デフォルトの名無しさん
2022/03/29(火) 01:19:51.25ID:lkDcLhrw >>312
Rustってスクリプト言語みたいに簡単に書けるんやな
Rustってスクリプト言語みたいに簡単に書けるんやな
323デフォルトの名無しさん
2022/03/29(火) 17:06:45.34ID:7Qo2cIhC このスレなんでJuliaは扱わないの?
324デフォルトの名無しさん
2022/03/29(火) 18:10:38.94ID:wvo3NcdM Juliaって数値計算に特化してるイメージなんだけどそれ以外の用途でも良い感じに使えるの?
325デフォルトの名無しさん
2022/03/29(火) 19:43:35.70ID:4eDRgxgo 数値計算というのはひたすら配列に対してループをぶん回すもんで、FortranやJuliaはそういう処理の記述に特化している
そういう意味だと、数値計算以外だと昔のCOBOLみたいに愚直に一行ずつレコードを処理していくような古典的なバッチ処理には向いてるんじゃないかな
そういう意味だと、数値計算以外だと昔のCOBOLみたいに愚直に一行ずつレコードを処理していくような古典的なバッチ処理には向いてるんじゃないかな
326デフォルトの名無しさん
2022/03/29(火) 22:44:22.64ID:zunmlMTL327デフォルトの名無しさん
2022/03/29(火) 22:53:46.10ID:Wg3aSHjk328デフォルトの名無しさん
2022/03/30(水) 08:18:40.34ID:LPYfd5on 型無し糞言語勧めてくる屑どもを全員●したい
329デフォルトの名無しさん
2022/03/30(水) 08:41:28.55ID:wafreB6+ 今時型無し言語を使うやつはそんなにいないだろ
動的型付け言語は使うが
動的型付け言語は使うが
330デフォルトの名無しさん
2022/03/30(水) 09:47:02.31ID:/0rPh2g4 代表的な型なし言語:Smalltalk、BCPL、B言語、アセンブリ言語
331デフォルトの名無しさん
2022/03/30(水) 16:32:49.22ID:uX6cnVWL 動的型付け言語は型無し糞言語じゃないんだ
僕はまだ大丈夫なんだ
こういうやつよな
●したくなるのは
注連縄を首に巻いて通勤快速に連結してやりたくなるよな
僕はまだ大丈夫なんだ
こういうやつよな
●したくなるのは
注連縄を首に巻いて通勤快速に連結してやりたくなるよな
332デフォルトの名無しさん
2022/03/30(水) 21:28:09.18ID:MqQwCbKz 型無しと動的型付けを間違えていたことを糊塗しようと必死
333デフォルトの名無しさん
2022/03/30(水) 21:47:02.85ID:sZZS0bBr334デフォルトの名無しさん
2022/03/30(水) 21:52:53.10ID:9xKIjqbP もちろん強い静的型付け言語の方が圧倒的に優れている
ほとんどのバグはコンパイル時点で検出できる
言語によっては実行時のエラーや善きせぬ例外を無くすこともできる
そのため強い静的型付け言語が最もプログラミング生産性も高い
ほとんどのバグはコンパイル時点で検出できる
言語によっては実行時のエラーや善きせぬ例外を無くすこともできる
そのため強い静的型付け言語が最もプログラミング生産性も高い
335デフォルトの名無しさん
2022/03/30(水) 21:58:42.01ID:txMnCN3x >>333
バカなことばかり書いてあるダメなページだな
> 動的言語の値は、実行時においても自分の型を覚えている。
> このことは何を意味するか?
> 実行時に値の型を調べ、それに対応したコードを実行するプログラムが書けるということだ。
これはまともな静的型付け言語でも出来る
しかもコンパイル時に安全に型をチェックして実行時にエラーをなくすことさえ可能
動的型付け言語ではそのような安全性は無く実行時エラーの山
バカなことばかり書いてあるダメなページだな
> 動的言語の値は、実行時においても自分の型を覚えている。
> このことは何を意味するか?
> 実行時に値の型を調べ、それに対応したコードを実行するプログラムが書けるということだ。
これはまともな静的型付け言語でも出来る
しかもコンパイル時に安全に型をチェックして実行時にエラーをなくすことさえ可能
動的型付け言語ではそのような安全性は無く実行時エラーの山
336デフォルトの名無しさん
2022/03/30(水) 22:01:00.78ID:kwE0Wrnf 正直動的型付けのメリットをあまり感じない
337デフォルトの名無しさん
2022/03/30(水) 22:02:22.01ID:usrXoLFt いまさら型の動的静的言い出してもウンザリだから
それは君たちが各自自分で勉強して自分で満足してくれ
どっちが優れてるだのどうだの素人の見解1ミリもいらんから
それは君たちが各自自分で勉強して自分で満足してくれ
どっちが優れてるだのどうだの素人の見解1ミリもいらんから
338デフォルトの名無しさん
2022/03/30(水) 22:06:41.15ID:ibIM88PL このスレ雰囲気からして学生が多い気がするが、一般的には
型あり:ソースコードに型を明記する=静的型
型無し:そうじゃない=動的型
だぞ。ただし「型無し」と全くの初心者に言うと「本当に型がない」と勘違いしてしまう為、
「動的型付け言語」と『教育上』言われる事があってもおかしくないが、それは学校での話。
プログラミング界での用語は上記の通り。
330内はアセンブラしか知らんが、アセンブラにも型(サイズ)はあって、
floatとdoubleは命令が違うし、byte/word/doublewordも命令が違う。
(だから本当の意味で型がない言語なんて実装しようがない)
ただまあ、この辺のごくごく初歩的なところをまずは抑えるべきだよ。
生産性なんてその後の話、一通り書けるようになってからでいい。
心配しなくても初心者の時に書いたコードなんて後から見たらゴミ同然でしかない物ばかりだよ。
型あり:ソースコードに型を明記する=静的型
型無し:そうじゃない=動的型
だぞ。ただし「型無し」と全くの初心者に言うと「本当に型がない」と勘違いしてしまう為、
「動的型付け言語」と『教育上』言われる事があってもおかしくないが、それは学校での話。
プログラミング界での用語は上記の通り。
330内はアセンブラしか知らんが、アセンブラにも型(サイズ)はあって、
floatとdoubleは命令が違うし、byte/word/doublewordも命令が違う。
(だから本当の意味で型がない言語なんて実装しようがない)
ただまあ、この辺のごくごく初歩的なところをまずは抑えるべきだよ。
生産性なんてその後の話、一通り書けるようになってからでいい。
心配しなくても初心者の時に書いたコードなんて後から見たらゴミ同然でしかない物ばかりだよ。
339デフォルトの名無しさん
2022/03/30(水) 22:09:14.11ID:MqQwCbKz >型あり:ソースコードに型を明記する=静的型
>型無し:そうじゃない=動的型
どこの一般だよ
>型無し:そうじゃない=動的型
どこの一般だよ
340デフォルトの名無しさん
2022/03/30(水) 22:10:48.06ID:1lFVb3RX いずれにしても動的型付け言語はバグがあっても実行時になるまで検出できないクソ言語
強き静的型付け言語がベストと結論が出ている
強き静的型付け言語がベストと結論が出ている
341デフォルトの名無しさん
2022/03/30(水) 22:15:34.40ID:usrXoLFt よかったですね
ハイ終了
ハイ終了
342デフォルトの名無しさん
2022/03/30(水) 22:33:44.92ID:YEeL7eMZ ちょっとした短いスクリプトを書く程度ならば動的型付け言語でも大丈夫
そうでなくプログラミングをするならば静的型付けのメリットが非常に大きいね
そうでなくプログラミングをするならば静的型付けのメリットが非常に大きいね
343デフォルトの名無しさん
2022/03/30(水) 22:47:29.54ID:Xsfwo5z4 個人的にどちらが好みかと言われると静的型付け言語なんだけど、自分全然Pythonとか使うので、そういう言語を唾棄してる人的に雑な書き捨てをするときは何の言語使うのか正直気になる
344デフォルトの名無しさん
2022/03/30(水) 22:52:27.20ID:Cwc9b4uh345デフォルトの名無しさん
2022/03/30(水) 23:01:10.09ID:liAwZQUf PHP
Ruby
Perl
この辺は人として見下してるな
死んでもいいゴミだと思ってる
Ruby
Perl
この辺は人として見下してるな
死んでもいいゴミだと思ってる
346デフォルトの名無しさん
2022/03/30(水) 23:09:42.25ID:UJJsLtPb PHPないと個人サイト作成不便だよ。
pythonで書いてた時期もあったがやはりPHPのが楽だしCPU負荷も少ない。
pythonで書いてた時期もあったがやはりPHPのが楽だしCPU負荷も少ない。
347デフォルトの名無しさん
2022/03/30(水) 23:13:37.76ID:BGd1I7D3 個人サイトなら静的サイトジェネレータで十分な場合も多い
348デフォルトの名無しさん
2022/03/30(水) 23:23:35.91ID:7iBx/H5p349デフォルトの名無しさん
2022/03/30(水) 23:26:27.50ID:liAwZQUf PHPerは性根が腐ってる
人間のくず
人間のくず
350デフォルトの名無しさん
2022/03/30(水) 23:30:47.36ID:RO3HBLZh サーバーサイドレンダリング…?
351デフォルトの名無しさん
2022/03/30(水) 23:35:38.07ID:UJJsLtPb 静的サイト生成系は結局すぐやめたなぁ。
JSで無理くりなことやりはじめたりして個人サイトレベルだと逆に作りが歪む傾向がある。
JSで無理くりなことやりはじめたりして個人サイトレベルだと逆に作りが歪む傾向がある。
352デフォルトの名無しさん
2022/03/30(水) 23:46:31.10ID:liAwZQUf 歪んでるのはPHPerの脳みそだろ
ビルから飛び降りて矯正しろ
ビルから飛び降りて矯正しろ
353デフォルトの名無しさん
2022/03/30(水) 23:49:24.01ID:UJJsLtPb 自分は普段はc++とc#ばかりだけど...
だけどphpの方が楽、blazorとか逆にしんどかったし。
だけどphpの方が楽、blazorとか逆にしんどかったし。
354デフォルトの名無しさん
2022/03/30(水) 23:58:31.85ID:BjMRLjMo >>353
選び方が極端すぎ
BlazorはJavaScriptの代わりにC#で書いてブラウザ上をWebAssemblyで動かす究極のアホ
C#はランタイムがデカい上にGCランタイムも必要なわけでそれらを全てブラウザ上のWebAssemblyで動かす
巨大で重くて遅い
選び方が極端すぎ
BlazorはJavaScriptの代わりにC#で書いてブラウザ上をWebAssemblyで動かす究極のアホ
C#はランタイムがデカい上にGCランタイムも必要なわけでそれらを全てブラウザ上のWebAssemblyで動かす
巨大で重くて遅い
355デフォルトの名無しさん
2022/03/31(木) 00:17:05.37ID:nlcs9ENP 負荷が高いからCGIは使わない、PHPは使わない、
共用格安24時間稼働サーバーでnodeやjavaは基本動いてないからそれらは使わない、
VPSで個人サイト運営とか手間なだけだからやらない。
そうなると何でサーバー側で判定必要な処理書いてるのさ。
3大クラウド使って普通の個人サイトにGoでサーバー処理でも書いてんの?
共用格安24時間稼働サーバーでnodeやjavaは基本動いてないからそれらは使わない、
VPSで個人サイト運営とか手間なだけだからやらない。
そうなると何でサーバー側で判定必要な処理書いてるのさ。
3大クラウド使って普通の個人サイトにGoでサーバー処理でも書いてんの?
356デフォルトの名無しさん
2022/03/31(木) 00:28:30.60ID:LBSBAbTE■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 国民 居住目的でない住宅所有者に「空室税」課せる法案を提出 ★2 [少考さん★]
- 「働いて働いて」の流行語大賞に懸念 「言葉が独り歩き」 過労自殺遺族 [尺アジ★]
- アメリカ、入国時に「日本人を含む外国人観光客の最大5年分のSNS履歴の提出」義務化へ 過去10年間に使用のメールアドレスや電話番号等も★3 [Hitzeschleier★]
- 【画像】消えた美人女優 上原多香子さん(42)、沖縄で目撃される [牛丼★]
- 「暖房が使えない」「食費が高くて子どもの栄養が…」 物価高に苦しむ子育て世帯、政府に期待する支援は ★2 [蚤の市★]
- バイク事故で入院ゆたぼん、見舞金「1円」振り込みの名義に衝撃「悲しい人ですね」「こういう人がいるから…」 [muffin★]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★2
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★1
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★2
- 【高市悲報】JA、発狂www「臨時に経費率を下げるので、どうかお米券を使ってください」 [246620176]
- 小林よしのり先生が橋下徹・玉川徹らと歴史的和解 「全体主義に負けずに高市早苗批判をしている彼らを見直した」 [309323212]
- 『丸源ラーメン』👈👈どう思う!? [153490809]
