スレタイ以外の言語もok
前スレ
https://mevius.5ch.net/test/read.cgi/tech/1655771266/
探検
次世代言語27 TypeScript Swift Go Kotlin Rust Nim
■ このスレッドは過去ログ倉庫に格納されています
2022/08/05(金) 08:26:38.87ID:TpiqaUBm
451デフォルトの名無しさん
2022/08/14(日) 22:57:09.94ID:549c+n4K 関数型のElixir は、データを書き換えられない。immutable。
新規作成しかできない
だから、並行処理に強い
新規作成しかできない
だから、並行処理に強い
452デフォルトの名無しさん
2022/08/14(日) 23:52:55.91ID:lDco67Nc >>448
こういう議論も地味に重要だと思う
セミコロンなしでreturn必須な言語の方が可読性高いのかな?
returnを書くことで読み手にとって何が明確になるんだろうか
フォーマッタでの自動入力って何?
こういう議論も地味に重要だと思う
セミコロンなしでreturn必須な言語の方が可読性高いのかな?
returnを書くことで読み手にとって何が明確になるんだろうか
フォーマッタでの自動入力って何?
453デフォルトの名無しさん
2022/08/14(日) 23:58:23.93ID:QUSc/NM6454デフォルトの名無しさん
2022/08/15(月) 00:30:10.08ID:yUQkYoQs 文法はフォーマッタやコード生成、静的解析などのツールの作りやすさ影響してくるからあまり馬鹿にしない方が良い
455デフォルトの名無しさん
2022/08/15(月) 01:04:12.66ID:p/fNcd9R 日本人は一部はセンスあるが
RustやElixer等メタプログラミング言語が理解できないやつが多すぎる
RustやElixer等メタプログラミング言語が理解できないやつが多すぎる
456デフォルトの名無しさん
2022/08/15(月) 01:17:24.43ID:DNbe8aKk 外国人でも抽象的な概念についての難易度は同じだゾ・・・
457デフォルトの名無しさん
2022/08/15(月) 09:39:59.10ID:r7x/NN7r セミコロンを省略するとreturnになるわけではないぞ
・Rustでは式にセミコロンをつけると文になる
・ブロック({stmts}のこと)の最後の式が、そのブロックを評価したときの式となる
この二つのルールが原則で、関数のブロックの最後のセミコロンを省略すると、関数を評価した値になるってだけ
let a = {
let mut b = Builder::new();
b.add(foo);
b.add(bar);
b.build()
};
このルールのおかげでこのようなコードが書けるようになる(return文は関数から抜けるためにしか使えないので、ブロックの評価には使えない)
一時変数のスコープを最小限に抑えることができるし、mutableで宣言した変数を、スコープを抜けたらimmutableに戻すこともできる
慣れれば見やすいし、意味的なメリットも多い
・Rustでは式にセミコロンをつけると文になる
・ブロック({stmts}のこと)の最後の式が、そのブロックを評価したときの式となる
この二つのルールが原則で、関数のブロックの最後のセミコロンを省略すると、関数を評価した値になるってだけ
let a = {
let mut b = Builder::new();
b.add(foo);
b.add(bar);
b.build()
};
このルールのおかげでこのようなコードが書けるようになる(return文は関数から抜けるためにしか使えないので、ブロックの評価には使えない)
一時変数のスコープを最小限に抑えることができるし、mutableで宣言した変数を、スコープを抜けたらimmutableに戻すこともできる
慣れれば見やすいし、意味的なメリットも多い
458デフォルトの名無しさん
2022/08/15(月) 10:33:46.88ID:p/fNcd9R459デフォルトの名無しさん
2022/08/15(月) 10:41:42.04ID:8YjBNSEW460デフォルトの名無しさん
2022/08/15(月) 11:14:59.57ID:0McKJS85 バカはバカを呼び寄せる
461デフォルトの名無しさん
2022/08/15(月) 11:41:54.68ID:i3sQrZ2z >>459がどの言語の文法を理想と考えているのかが気になる
golang?
golang?
462デフォルトの名無しさん
2022/08/15(月) 12:05:46.45ID:r7x/NN7r なぜRustに対する批判が具体的なものじゃなくて、「意味不明」とか「不要」とか主観的で何を指しているのかわからないような言葉ばかりなんだろう
463デフォルトの名無しさん
2022/08/15(月) 12:17:22.73ID:A27GovSV 文末のセミコロンが必須な主なプログラミング言語
C C++ Java Perl PHP など
この状況でRustのセミコロンを叩いているのはこれらの言語を知らない初心者?
しかもRustは文と値の区別のためセミコロンの有無を活用して意味付けしている
C C++ Java Perl PHP など
この状況でRustのセミコロンを叩いているのはこれらの言語を知らない初心者?
しかもRustは文と値の区別のためセミコロンの有無を活用して意味付けしている
464デフォルトの名無しさん
2022/08/15(月) 12:21:25.57ID:8YjBNSEW465デフォルトの名無しさん
2022/08/15(月) 12:39:14.98ID:vxI8O7UY Python Ruby JavaScript Scala Kotlin あとなにがあったっけなぁ
466デフォルトの名無しさん
2022/08/15(月) 12:42:41.40ID:8YjBNSEW >>457
逆にセミコロンなしをデフォルトにしてセミコロンとかつけると式になるとかでもいいのでは?
その書き方ができると便利なのは否定しないけど、その恩恵を得るためだけに全てにセミコロン付けるのを押し付けるのは余計なコストだっていいたいわ
逆にセミコロンなしをデフォルトにしてセミコロンとかつけると式になるとかでもいいのでは?
その書き方ができると便利なのは否定しないけど、その恩恵を得るためだけに全てにセミコロン付けるのを押し付けるのは余計なコストだっていいたいわ
467デフォルトの名無しさん
2022/08/15(月) 12:52:23.38ID:A27GovSV セミコロンを省略可能にしたプログラミング言語は色々と苦しんでいる
昔からJavaScriptのセミコロン省略により起こる問題は有名だが
Goなどもセミコロンを省略可能な言語なので問題がよく起きている
例えばGoでは
foo := 111111111 + 222222222 + 333333333
が何らか長い行として長いので改行して書こうとして
foo := 111111111
+ 222222222
+ 333333333
と書いてしまうとこれは以下のセミコロンの省略と解釈されてしまう
foo := 111111111;
+ 222222222;
+ 333333333;
つまりエラーとなる
他にもGoでは
bar := []int { 111111111, 222222222, 333333333 }
が何らか長い行として長いので改行して書こうとして
bar := []int {
111111111,
222222222,
333333333
}
と書いてしまうとこれは以下のセミコロンの省略と解釈されてしまう
bar := []int {
111111111,
222222222,
333333333;
}
これもエラーとなる
昔からJavaScriptのセミコロン省略により起こる問題は有名だが
Goなどもセミコロンを省略可能な言語なので問題がよく起きている
例えばGoでは
foo := 111111111 + 222222222 + 333333333
が何らか長い行として長いので改行して書こうとして
foo := 111111111
+ 222222222
+ 333333333
と書いてしまうとこれは以下のセミコロンの省略と解釈されてしまう
foo := 111111111;
+ 222222222;
+ 333333333;
つまりエラーとなる
他にもGoでは
bar := []int { 111111111, 222222222, 333333333 }
が何らか長い行として長いので改行して書こうとして
bar := []int {
111111111,
222222222,
333333333
}
と書いてしまうとこれは以下のセミコロンの省略と解釈されてしまう
bar := []int {
111111111,
222222222,
333333333;
}
これもエラーとなる
468デフォルトの名無しさん
2022/08/15(月) 12:53:34.04ID:A27GovSV >>467のようにGoは「セミコロンが必須だけど、省略可で、自動セミコロン挿入される言語」であるため
うっかり改行すると自動セミコロン挿入により文法エラーとなってしまう
うっかり改行すると自動セミコロン挿入により文法エラーとなってしまう
469デフォルトの名無しさん
2022/08/15(月) 12:53:34.61ID:lLs0VW2c Rustで文と式が混在するのは最適化のため?文でエラーが発生したときはどうなるんかね?
resultとかの戻り値用変数があると自然だけど、末尾呼び出し最適化が面倒になるので痛し痒し。
resultとかの戻り値用変数があると自然だけど、末尾呼び出し最適化が面倒になるので痛し痒し。
470デフォルトの名無しさん
2022/08/15(月) 13:06:38.69ID:8YjBNSEW471デフォルトの名無しさん
2022/08/15(月) 13:10:39.72ID:r7x/NN7r >>466
文にセミコロンをつけると式になるって文法を整合性を保ったまま定義できるとは思えない....
1とかtrueみたいな一つの値は式として扱う
ifやmatchはデフォルトで文として扱い、セミコロンをつけると式になるって文法にすると
let x = f(if cond { ... } else { ... };)
みたいな文で、どこが文でどこが式なのか曖昧さを持ってしまう気がする
文にセミコロンをつけると式になるって文法を整合性を保ったまま定義できるとは思えない....
1とかtrueみたいな一つの値は式として扱う
ifやmatchはデフォルトで文として扱い、セミコロンをつけると式になるって文法にすると
let x = f(if cond { ... } else { ... };)
みたいな文で、どこが文でどこが式なのか曖昧さを持ってしまう気がする
472デフォルトの名無しさん
2022/08/15(月) 13:14:43.30ID:r7x/NN7r 構文解析の簡単さってかなり大事なことだと思う
language serverも軽くなるしコンパイルも早くなる
適当に書いてフォーマッタで整形するって書き方もできるようになる
セミコロンをつけるのが面倒なのは分かるけど、それ以上の恩恵があるのは事実
language serverも軽くなるしコンパイルも早くなる
適当に書いてフォーマッタで整形するって書き方もできるようになる
セミコロンをつけるのが面倒なのは分かるけど、それ以上の恩恵があるのは事実
473デフォルトの名無しさん
2022/08/15(月) 13:15:05.13ID:JDmNxXPp 文法エラーになってからわざわざ直すのは面倒くさくないの?
JS/TSでもASIの罠にはまらないように考えるほうが面倒だから基本セミコロン付けているな
JS/TSでもASIの罠にはまらないように考えるほうが面倒だから基本セミコロン付けているな
474デフォルトの名無しさん
2022/08/15(月) 13:19:28.24ID:zxOEKBbO475デフォルトの名無しさん
2022/08/15(月) 13:22:56.61ID:r7x/NN7r >>469
Rustでは文は
Item(関数の定義や構造体の定義など)
LetStatement(let文)
ExpressionStatement(式にセミコロンつけたやつ)
MacroInvocation(hoge!();みたいにマクロの使用にセミコロンつけたやつ)
しかないから、そもそも文はエラーを生成しない
文の中の式がエラーを生成することはあるけど、文法上はハンドリングも式の中で行われる
https://doc.rust-lang.org/stable/reference/statements.html
Rustでは文は
Item(関数の定義や構造体の定義など)
LetStatement(let文)
ExpressionStatement(式にセミコロンつけたやつ)
MacroInvocation(hoge!();みたいにマクロの使用にセミコロンつけたやつ)
しかないから、そもそも文はエラーを生成しない
文の中の式がエラーを生成することはあるけど、文法上はハンドリングも式の中で行われる
https://doc.rust-lang.org/stable/reference/statements.html
476デフォルトの名無しさん
2022/08/15(月) 13:23:00.24ID:8YjBNSEW477デフォルトの名無しさん
2022/08/15(月) 13:32:10.82ID:r7x/NN7r >>476
式の全てにセミコロンが強要されているわけではないぞ
Block(ifとかmatchとかの{}を使うやつ)を含む式であるExpressionWithBlockではセミコロンの省略が可能とされている
だから、式を文として扱うべき場所で必要最低限のセミコロンが強制されている
https://doc.rust-lang.org/stable/reference/statements.html#expression-statements
式の全てにセミコロンが強要されているわけではないぞ
Block(ifとかmatchとかの{}を使うやつ)を含む式であるExpressionWithBlockではセミコロンの省略が可能とされている
だから、式を文として扱うべき場所で必要最低限のセミコロンが強制されている
https://doc.rust-lang.org/stable/reference/statements.html#expression-statements
478デフォルトの名無しさん
2022/08/15(月) 13:36:40.79ID:zxOEKBbO479デフォルトの名無しさん
2022/08/15(月) 14:50:27.64ID:iWGF+SuJ セミコロンは面倒だし書かなくていいならそれに越した事ないけど
JSみたいに罠に嵌るくらいなら明示的に書くのでも別にいい
Rustはじめた当初はセミコロンの有無で戻り値が変わるのはめちゃイライラしたけど2週間もすれば慣れる
セミコロン不要言語ではRubyやSwiftは縛りが少なくて扱いやすい
Pythonは改行できるケースがかなり限定されてるから扱いにくい(そのくせ1行80文字にしろとかアタオカ)
JSみたいに罠に嵌るくらいなら明示的に書くのでも別にいい
Rustはじめた当初はセミコロンの有無で戻り値が変わるのはめちゃイライラしたけど2週間もすれば慣れる
セミコロン不要言語ではRubyやSwiftは縛りが少なくて扱いやすい
Pythonは改行できるケースがかなり限定されてるから扱いにくい(そのくせ1行80文字にしろとかアタオカ)
480デフォルトの名無しさん
2022/08/15(月) 15:00:02.78ID:i3sQrZ2z 話題か全然次世代言語っぽくないな
次世代言語は人間の考えを忖度して良い感じにコードを解釈して欲しい
セミコロンとか些細な文法レベルじゃなくて、自動的に最適なアルゴリズム選んでくれるとか
次世代言語は人間の考えを忖度して良い感じにコードを解釈して欲しい
セミコロンとか些細な文法レベルじゃなくて、自動的に最適なアルゴリズム選んでくれるとか
481デフォルトの名無しさん
2022/08/15(月) 15:18:34.31ID:n9YpVahh どういうトレードオフの上に成り立ってるかを理解しようとしない人とは技術的な議論はない立たないわな
482デフォルトの名無しさん
2022/08/15(月) 16:06:15.48ID:fboUSwN3 長い行を途中で改行したくなったらどうなるか?
・JavaScriptだと正しく333333333と出力
let foo = 111111111
+ 222222222
console.log(foo)
・Goだとエラー(+222222222が使われていない)となる
foo := 111111111
+ 222222222
fmt.Println(foo)
・Pythonだと111111111と出力
foo = 111111111
+ 222222222
print(foo)
・Rubyだと111111111と出力
foo = 111111111
+ 222222222
p foo
・Kotlinだと111111111と出力
var foo = 111111111
+ 222222222
println(foo)
セミコロンがある言語ならば長い行を自由に改行できる
・JavaScriptだと正しく333333333と出力
let foo = 111111111
+ 222222222
console.log(foo)
・Goだとエラー(+222222222が使われていない)となる
foo := 111111111
+ 222222222
fmt.Println(foo)
・Pythonだと111111111と出力
foo = 111111111
+ 222222222
print(foo)
・Rubyだと111111111と出力
foo = 111111111
+ 222222222
p foo
・Kotlinだと111111111と出力
var foo = 111111111
+ 222222222
println(foo)
セミコロンがある言語ならば長い行を自由に改行できる
483デフォルトの名無しさん
2022/08/15(月) 17:19:36.40ID:zuAYSXsv foo = (111111111
+ 222222222)
print(foo)
1つの評価式としたいのに途中改行を入れることを利点だと主張するなんてバカげている....
素直にC/C++の古めかしい記述を引き継ぎたい人が多いだけというのは、公式も認めてるのに
+ 222222222)
print(foo)
1つの評価式としたいのに途中改行を入れることを利点だと主張するなんてバカげている....
素直にC/C++の古めかしい記述を引き継ぎたい人が多いだけというのは、公式も認めてるのに
484デフォルトの名無しさん
2022/08/15(月) 17:58:11.91ID:wGU2BFOZ セパレータ無しで改行を無視するようにしたいなら、yamlのブロックスタイルぐらいが妥当かと。
485デフォルトの名無しさん
2022/08/15(月) 18:28:05.88ID:vxI8O7UY セミコロンが面倒とは言っても、インデントのタブと同じで頭使わないから楽だと思うんだがなぁ。
そんなに毛嫌いするようなことなんだろうか。
そんなに毛嫌いするようなことなんだろうか。
486デフォルトの名無しさん
2022/08/15(月) 18:35:55.10ID:zxOEKBbO もうここら辺の話は好みの問題もあるからこっちが正しいとか言っても揉めるだけ
>>483にしても無駄なカッコはヤダって奴が出るかも知れんし
foo = 111111111 +
222222222
で正しく処理できる言語もあるけどプラスの位置が気に入らんとか言う奴がいるかも知れんしな
>>483にしても無駄なカッコはヤダって奴が出るかも知れんし
foo = 111111111 +
222222222
で正しく処理できる言語もあるけどプラスの位置が気に入らんとか言う奴がいるかも知れんしな
487デフォルトの名無しさん
2022/08/15(月) 18:42:32.98ID:qHbAfBQi セミコロンがいるいらないなんてそんなに気にする事なのかな?
Cスタイルで無い書き方する言語の方がよっぽど見にくいんだよねぇ
Cスタイルで無い書き方する言語の方がよっぽど見にくいんだよねぇ
488デフォルトの名無しさん
2022/08/15(月) 19:05:59.41ID:QBWih2zA Dartもそうだけどセミコロンなし言語に慣れてると忘れる時にいちいちエラーになってうざい
JSはprettierで自動入力できるけど、エラーになるのがめんどくさい
まあただの慣れの問題だけど
JSはprettierで自動入力できるけど、エラーになるのがめんどくさい
まあただの慣れの問題だけど
489デフォルトの名無しさん
2022/08/15(月) 19:17:14.24ID:Q0+/Bn9w PowerShell(; 不要) と C#(; 必要) 使ってるとたまにあれ?って思うことあるけどたいして混乱しないよ
そんなのにいちいち引っかかってたら他にもっと引っかかるところあると思うが
そんなのにいちいち引っかかってたら他にもっと引っかかるところあると思うが
490デフォルトの名無しさん
2022/08/15(月) 19:17:50.21ID:jGpDADDF Rustはセミコロンレスにする実装が面倒ってだけやろ
エルゴノミクス的にはセミコロンなしのほうがいいに決まってる
エルゴノミクス的にはセミコロンなしのほうがいいに決まってる
491デフォルトの名無しさん
2022/08/15(月) 19:34:59.12ID:On5LnEYn むしろ482のような何も考えられない熟練者が、他の多くの言語を全否定してるのであって、Cスタイルを否定しているわけではない。
Cスタイルで無い書き方する言語の方が見にくいというのはよほど経験が足りないか、組み込みかシステムプログラミングでC/C++の
沼にどっぷりハマってるか....いまどきbashもTypescript/JSもLuaも書くだろうし、DeepleanningしたいならPythonぐらい触るでしょう?
Cスタイルで無い書き方する言語の方が見にくいというのはよほど経験が足りないか、組み込みかシステムプログラミングでC/C++の
沼にどっぷりハマってるか....いまどきbashもTypescript/JSもLuaも書くだろうし、DeepleanningしたいならPythonぐらい触るでしょう?
492デフォルトの名無しさん
2022/08/15(月) 19:42:50.19ID:On5LnEYn フリーフォーマットスタイルになったのだって、B言語の毛の生えたC言語初期がブロック表す{}でさえ、当時の多くのコンピュータのキーボードで
打てなかったのに採用しており明らかにパーサーを簡単にしたいがためだけで、確かに欠陥は無いが、他の言語を否定する有益な要素には
全く成り得ない。「頭がCスタイル=だから個人的にはそれが一番見やすい」という理論なら分かるが、一般化できるものではない
打てなかったのに採用しており明らかにパーサーを簡単にしたいがためだけで、確かに欠陥は無いが、他の言語を否定する有益な要素には
全く成り得ない。「頭がCスタイル=だから個人的にはそれが一番見やすい」という理論なら分かるが、一般化できるものではない
493デフォルトの名無しさん
2022/08/15(月) 19:46:40.39ID:DNbe8aKk フリーフォマットスタイルってウケる言いまわしだね
494デフォルトの名無しさん
2022/08/15(月) 19:51:28.75ID:v4xWLNJI 些細なことで盛り上がってるな
昨日のRust叩きがすぐ論破されてRustは高機能で優秀だと決着してしまったから
今日のRust叩きはセミコロンと波カッコがテーマなのかい?
昨日のRust叩きがすぐ論破されてRustは高機能で優秀だと決着してしまったから
今日のRust叩きはセミコロンと波カッコがテーマなのかい?
495デフォルトの名無しさん
2022/08/15(月) 20:17:06.88ID:1icmhpVn >>494
「誰にとって」高機能で優秀なのかを考えんとな。
リーダーとかマネージャーとかの管理者にとって、Rustはルールを強制して一定の安全性と性能を担保できる便利なルール。
その裏返しになるけど、コーダーみたいな実装者にとって、Rustは窮屈な制約や複雑な概念を押し付けられる不便な扱いづらいツール。
優れたプログラマーはコーダーであるとともにマネージャーでもリーダーでもあるからRustの利点は分からんでもないけど、普段使いにはしたくないツールだよなぁ。
今の複雑さじゃHaskellとかc++とかと大して変わらんから、そのうちもっと洗練された言語が出てくるんじゃない?
「誰にとって」高機能で優秀なのかを考えんとな。
リーダーとかマネージャーとかの管理者にとって、Rustはルールを強制して一定の安全性と性能を担保できる便利なルール。
その裏返しになるけど、コーダーみたいな実装者にとって、Rustは窮屈な制約や複雑な概念を押し付けられる不便な扱いづらいツール。
優れたプログラマーはコーダーであるとともにマネージャーでもリーダーでもあるからRustの利点は分からんでもないけど、普段使いにはしたくないツールだよなぁ。
今の複雑さじゃHaskellとかc++とかと大して変わらんから、そのうちもっと洗練された言語が出てくるんじゃない?
496デフォルトの名無しさん
2022/08/15(月) 20:32:42.70ID:IKaKwzzk ルールは強制じゃないんだよなあ
税金を払ってない金持ちがいるのと同じ
税金を払ってない金持ちがいるのと同じ
497デフォルトの名無しさん
2022/08/15(月) 22:14:46.12ID:i3sQrZ2z >>495
複雑な概念を押しつけられるというよりも、現実の複雑さを処理系が覆い隠さずそのまま見せている、ただしデフォルトでは安全装置付き、というのが自分の感覚には近いかなぁ
カジュアル用途にはshared xor mutabilityを採用したGCあり言語があれば良いと思うんだけどそれでも敷居高いと言われてしまうのかな
複雑な概念を押しつけられるというよりも、現実の複雑さを処理系が覆い隠さずそのまま見せている、ただしデフォルトでは安全装置付き、というのが自分の感覚には近いかなぁ
カジュアル用途にはshared xor mutabilityを採用したGCあり言語があれば良いと思うんだけどそれでも敷居高いと言われてしまうのかな
498デフォルトの名無しさん
2022/08/15(月) 22:21:40.52ID:i3sQrZ2z >>495はrustのチェックが過剰と言いたいのか、プログラムがエッジケースでクラッシュしても良いからプログラマーの自由にさせろと言いたいのか、どっちなんだろう
499デフォルトの名無しさん
2022/08/15(月) 22:28:42.72ID:vxI8O7UY500デフォルトの名無しさん
2022/08/15(月) 22:34:42.13ID:H/w3DVjw >>497
shared reference, mutable reference, ownedの3種類を常に分けるのは作る側も使う側も面倒でしょ
GC言語でdata raceを避けるためだけに許容できる面倒臭さではないと思う
shared reference, mutable reference, ownedの3種類を常に分けるのは作る側も使う側も面倒でしょ
GC言語でdata raceを避けるためだけに許容できる面倒臭さではないと思う
501デフォルトの名無しさん
2022/08/15(月) 22:37:46.04ID:krDSEAE6502デフォルトの名無しさん
2022/08/15(月) 22:46:07.54ID:vxI8O7UY503デフォルトの名無しさん
2022/08/15(月) 22:50:19.22ID:1icmhpVn504デフォルトの名無しさん
2022/08/15(月) 23:08:45.28ID:efQSXXjx >>500
まともなプログラマーならば
mutableかimmutableを必ず区別するしスクリプト言語にすら区別がある
GC言語だからそんな面倒な区別をしないなんてことはない
更にそのもの自体かreference (pointer)かの区別をする言語も多い
まともなプログラマーならば
mutableかimmutableを必ず区別するしスクリプト言語にすら区別がある
GC言語だからそんな面倒な区別をしないなんてことはない
更にそのもの自体かreference (pointer)かの区別をする言語も多い
505デフォルトの名無しさん
2022/08/15(月) 23:36:07.11ID:zdpm5MVd >>504
immutableかmutableかの区別とはまた別
例えばPythonのiter()やC#のGetEnumerator()に相当するメソッドを
Rustではshared reference用のiter(),
mutable reference用のiter_mut(),
owned用のinto_iter()と3つ用意してその3つを使い分ける必要がある
他にも3種類の構造体を用意したり3種類ずつtraitをimplしたりする必要がある
Rustで3つを使い分ける主目的はメモリ安全性であってdata raceを防ぐのは副産物
メモリ安全性が確保されてるGC言語で副産物のためだけにやるほど価値があるとは思わない
data race detectorみたいなので十分
immutableかmutableかの区別とはまた別
例えばPythonのiter()やC#のGetEnumerator()に相当するメソッドを
Rustではshared reference用のiter(),
mutable reference用のiter_mut(),
owned用のinto_iter()と3つ用意してその3つを使い分ける必要がある
他にも3種類の構造体を用意したり3種類ずつtraitをimplしたりする必要がある
Rustで3つを使い分ける主目的はメモリ安全性であってdata raceを防ぐのは副産物
メモリ安全性が確保されてるGC言語で副産物のためだけにやるほど価値があるとは思わない
data race detectorみたいなので十分
506デフォルトの名無しさん
2022/08/15(月) 23:43:36.56ID:efQSXXjx >>505
書き換えるのか書き換えずに読み取るだけなのか必ず区別する
プログラマーならそこは絶対に意識するところ
参照なのか実体なのかも同様に区別する
例えばcall by referenceなのか否かで変わってくるから常識
書き換えるのか書き換えずに読み取るだけなのか必ず区別する
プログラマーならそこは絶対に意識するところ
参照なのか実体なのかも同様に区別する
例えばcall by referenceなのか否かで変わってくるから常識
507デフォルトの名無しさん
2022/08/15(月) 23:44:00.49ID:bWP5l8ZG >>502
挙げてる言語が全てセミコロンのようなものが無ければ、改行をパースできない言語だけを挙げておいて
サンプルが悪くないと考えられることはセミコロンを入れる言語を優先したいだけでしょ?
そして482がいってるのはトレードオフなんて一言も言ってないし→同一人物だとすればサンプルも悪い
挙げてる言語が全てセミコロンのようなものが無ければ、改行をパースできない言語だけを挙げておいて
サンプルが悪くないと考えられることはセミコロンを入れる言語を優先したいだけでしょ?
そして482がいってるのはトレードオフなんて一言も言ってないし→同一人物だとすればサンプルも悪い
508デフォルトの名無しさん
2022/08/15(月) 23:59:03.56ID:1yqLKMZ0 >>505
噓つき
まず、使い分けと言っても間違って使っていたらRustコンパイラが指摘してくれるから、他の言語のようにプログラマーに責任と義務を押し付ける形で使い分ける必要は全くない
次に、今まで様々なプログラムを書いてきて、そのための3種類の構造体やimplを用意する必要になったことは一度もない
プログラムでやりたいことは一つなのだからどれか一つに決まる
その選択を仮に間違えていてもRustコンパイラが指摘してくれるので必ず正解を選択できて楽勝
Rustはプログラマーへの責任圧力や負荷が非常に少ない
間違えてもコンパイラが賢くて教えてくれるし次第に慣れて間違いも激減
噓つき
まず、使い分けと言っても間違って使っていたらRustコンパイラが指摘してくれるから、他の言語のようにプログラマーに責任と義務を押し付ける形で使い分ける必要は全くない
次に、今まで様々なプログラムを書いてきて、そのための3種類の構造体やimplを用意する必要になったことは一度もない
プログラムでやりたいことは一つなのだからどれか一つに決まる
その選択を仮に間違えていてもRustコンパイラが指摘してくれるので必ず正解を選択できて楽勝
Rustはプログラマーへの責任圧力や負荷が非常に少ない
間違えてもコンパイラが賢くて教えてくれるし次第に慣れて間違いも激減
509デフォルトの名無しさん
2022/08/16(火) 00:25:36.99ID:ixQkAKAb510デフォルトの名無しさん
2022/08/16(火) 00:31:52.46ID:FJ3wHtGm >>505
全部refcell相当にしてランタイムでよしなに処理できないかね?
全部refcell相当にしてランタイムでよしなに処理できないかね?
511デフォルトの名無しさん
2022/08/16(火) 00:45:43.29ID:OuJTqPA4512デフォルトの名無しさん
2022/08/16(火) 01:34:09.32ID:VwgHy53B RefCellは無視してCellを使うのがコツかなと思ってる
513デフォルトの名無しさん
2022/08/16(火) 01:41:29.91ID:tWxob/nJ514デフォルトの名無しさん
2022/08/16(火) 02:21:22.55ID:QGAuy2Qq Rustは便利でプログラミングしやすくて良いね
間違えてもコンパイラが必ず阻止して親切に教えてくれる
他の言語だと同じように間違えていても見かけの文法さえ合っていればコンパイラが通してしまう
間違えてもコンパイラが必ず阻止して親切に教えてくれる
他の言語だと同じように間違えていても見かけの文法さえ合っていればコンパイラが通してしまう
515デフォルトの名無しさん
2022/08/16(火) 05:56:45.08ID:yor5shok とにかくRustさえ使っとけば安心安全だよね
516デフォルトの名無しさん
2022/08/16(火) 06:08:59.99ID:QGAuy2Qq いやRustはプログラミングしやすいことが感想
たまたま安全も付いてきた
あとなぜか高速も付いてきてラッキー
たまたま安全も付いてきた
あとなぜか高速も付いてきてラッキー
517デフォルトの名無しさん
2022/08/16(火) 06:09:39.15ID:weNk37uO xor mutabilityを実装するとライフタイムの解析みたいなことが必要になるから結局GC要らなくね?みたいなことになりそう
518デフォルトの名無しさん
2022/08/16(火) 06:47:45.38ID:tUBxw7eu 3種類あると言ってたのに
xorとかいって2種類を意識してるのは違和感がある
意識の外にあるmoveの方が実は革新的だったりして
xorとかいって2種類を意識してるのは違和感がある
意識の外にあるmoveの方が実は革新的だったりして
519デフォルトの名無しさん
2022/08/16(火) 07:59:13.38ID:sSvGV+9Q520デフォルトの名無しさん
2022/08/16(火) 08:09:09.89ID:QGAuy2Qq521デフォルトの名無しさん
2022/08/16(火) 10:10:30.02ID:R/XB+eZ/522デフォルトの名無しさん
2022/08/16(火) 11:21:12.43ID:qWFX9EwW そもそもRustとかの新しい言語は演算子の途中とかで改行できるようにするためにセミコロンを用意したわけじゃないし…
523デフォルトの名無しさん
2022/08/16(火) 11:34:08.30ID:2x3mrzZQ ;ない言語(例えば
python)で途中で改行したいなら(
)
python)で途中で改行したいなら(
)
524デフォルトの名無しさん
2022/08/16(火) 12:15:04.38ID:rcGuvRNd525デフォルトの名無しさん
2022/08/16(火) 13:22:47.54ID:lhfuWNrE >>522
まさにそう。見る角度によって美点を見出すのは人それぞれだがセミコロンなんてものを挙げて長い行が複数行で書けるなどと
長大なくだらない例を別言語叩きにしようとする腐った根性がまず気に入らない。公式すら見えてない白痴
まさにそう。見る角度によって美点を見出すのは人それぞれだがセミコロンなんてものを挙げて長い行が複数行で書けるなどと
長大なくだらない例を別言語叩きにしようとする腐った根性がまず気に入らない。公式すら見えてない白痴
526デフォルトの名無しさん
2022/08/16(火) 13:53:44.58ID:oZyv9MO8 うむ
セミコロンの有無で気に入らない言語を叩き出したやつはキチガイ
それぞれにメリットはあるしプログラマーにとってもどうでもいい誤差
セミコロンの有無で気に入らない言語を叩き出したやつはキチガイ
それぞれにメリットはあるしプログラマーにとってもどうでもいい誤差
527デフォルトの名無しさん
2022/08/16(火) 14:40:34.16ID:R/XB+eZ/ 分類するとこんな感じかな。
1. 改行を文デリミタとして、文を途中で折り返したい場合には行継続を明示する (FORTRANなど)
2. 改行に空白以上の文法的意味を持たせずに文分離記号、終端器具を用いる (ALGOLなど)
3. 1.の変形で、構文解析と組み合わせることで行継続の明示を不要とする (Pythonなど)
当然ながらどれも一長一短あるわな。
1. 改行を文デリミタとして、文を途中で折り返したい場合には行継続を明示する (FORTRANなど)
2. 改行に空白以上の文法的意味を持たせずに文分離記号、終端器具を用いる (ALGOLなど)
3. 1.の変形で、構文解析と組み合わせることで行継続の明示を不要とする (Pythonなど)
当然ながらどれも一長一短あるわな。
528デフォルトの名無しさん
2022/08/16(火) 14:55:33.84ID:oZyv9MO8 セミコロンが有ったり無かったり些細なことで各プログラミング言語を批判する人は間違いなくキチガイ
529デフォルトの名無しさん
2022/08/16(火) 15:00:16.01ID:rvHyZbYe 技術的な話が理解できないからセミコロンくらいしか口出しできないんだろ
530デフォルトの名無しさん
2022/08/16(火) 17:28:09.35ID:a2udn/hF 言語を作る側と使う側の視点が噛み合ってないように見えるし、なんかマニアックな方向に議論が進んでるな
531デフォルトの名無しさん
2022/08/16(火) 17:59:37.32ID:olQxb0zT ASTとプレゼンテーション層としてのテキスト表現でしかないから内容と見た目の分離をすれば…みたいに考えてしまうが、htmlとcssの関係みたいにすぐそばに地獄の例もあるからなぁ。
532デフォルトの名無しさん
2022/08/16(火) 18:09:52.12ID:tUBxw7eu533デフォルトの名無しさん
2022/08/16(火) 18:11:37.15ID:pgEfkacG なんで母国語の文法でプログラミングできないの?
っていう質問と大差ないぐらいにはナンセンスなんだよなあ
っていう質問と大差ないぐらいにはナンセンスなんだよなあ
534デフォルトの名無しさん
2022/08/16(火) 18:32:26.44ID:m9HqH8W6 >>527
その分類だとRustのセミコロンの特殊性が埋没する
その分類だとRustのセミコロンの特殊性が埋没する
535デフォルトの名無しさん
2022/08/16(火) 18:53:59.07ID:wpAgGEI5536デフォルトの名無しさん
2022/08/16(火) 19:09:03.56ID:R/XB+eZ/ >>534
構文的には特殊なことなどなくPascal等と同じ.だろう。評価結果が違うだけ。
構文的には特殊なことなどなくPascal等と同じ.だろう。評価結果が違うだけ。
537デフォルトの名無しさん
2022/08/16(火) 21:15:03.57ID:I6WTAUR3 プログラム言語の長短を議論したいなら、最低限、構文解析と型理論ぐらいは勉強しなよww
自分の使えるプログラミング言語の表層だけ見てあれこれ言っても仕方がない
せめて基礎知識ぐらいは身につけないと、自分の得意な言語こそが最強!レベルの話し合いにしかならない
自分の使えるプログラミング言語の表層だけ見てあれこれ言っても仕方がない
せめて基礎知識ぐらいは身につけないと、自分の得意な言語こそが最強!レベルの話し合いにしかならない
538デフォルトの名無しさん
2022/08/16(火) 21:27:16.28ID:tUBxw7eu マイナス金利政策みたいに
何かを変えたいという目標が達成されるまで全く同じことを続ける人が一定数いる
何かを変えたいという目標が達成されるまで全く同じことを続ける人が一定数いる
539デフォルトの名無しさん
2022/08/16(火) 21:55:08.25ID:AvaBHQVi このスレ、次流行る言語について考察するスレだと思ったらなんか違う感じか
540デフォルトの名無しさん
2022/08/16(火) 22:17:21.80ID:6Bs0qU/k >>539
Rustが覇権したから推進派とアンチとの攻防戦の場となっているw
Rustが覇権したから推進派とアンチとの攻防戦の場となっているw
541デフォルトの名無しさん
2022/08/16(火) 22:22:22.73ID:bk3ffD66 プログラミング言語のアンチをしてる人は精神的に何か病があるんじゃないか
542デフォルトの名無しさん
2022/08/16(火) 22:23:06.14ID:LmkLABMk NoSQLの謎の信仰で無知が露呈したRust信者w
543デフォルトの名無しさん
2022/08/16(火) 22:25:20.93ID:LmkLABMk544デフォルトの名無しさん
2022/08/16(火) 22:34:52.91ID:LmkLABMk 別にRustを批判しているわけではない
どんな用途でもRustが最強で他の言語はゴミとかほざいてるRust信者を批判しているだけ
NoSQLは万能でRDBは不要とかほざいてるようにただの無知で適材適所という言葉を知らない馬鹿ってのが証明されてるわけだが
だからRustは低レイヤーには適しているがバックエンドやWebといった用途ではさほど適していないので流行らないってのに反論できずに発狂しているのが現実
やたらクラウドのコストガーメモリ効率ガーだとか主張するが運用する上での人件費のことを一切考えられないキチガイ
どんな用途でもRustが最強で他の言語はゴミとかほざいてるRust信者を批判しているだけ
NoSQLは万能でRDBは不要とかほざいてるようにただの無知で適材適所という言葉を知らない馬鹿ってのが証明されてるわけだが
だからRustは低レイヤーには適しているがバックエンドやWebといった用途ではさほど適していないので流行らないってのに反論できずに発狂しているのが現実
やたらクラウドのコストガーメモリ効率ガーだとか主張するが運用する上での人件費のことを一切考えられないキチガイ
545デフォルトの名無しさん
2022/08/16(火) 22:39:39.43ID:bczdNrJL プログラマーは社会不適合者しかいないんだから仲良くせいや
546デフォルトの名無しさん
2022/08/16(火) 22:42:24.87ID:LmkLABMk 簡単に言うとRustはCやC++を置き換える言語
だからCやC++が通常使わなれない用途で流行ることはまずない
これが現実、いくら信者が発狂しても現実は変わらんよ
だからCやC++が通常使わなれない用途で流行ることはまずない
これが現実、いくら信者が発狂しても現実は変わらんよ
547デフォルトの名無しさん
2022/08/16(火) 22:43:33.40ID:bk3ffD66548デフォルトの名無しさん
2022/08/16(火) 22:45:57.82ID:R/XB+eZ/ ID:8YjBNSEW が自分のことを棚に上げて藁人形を持ち出した
549デフォルトの名無しさん
2022/08/16(火) 22:48:22.06ID:l1mRFV/Y >>544
調べてみたが『RDBは不要』と主張している人はこのスレに一人もいない
あなたが狂っているから全く存在しないものをあなただけが見えているのだろう
あなたは自分が狂っていることにそろそろ気付くべきだ
調べてみたが『RDBは不要』と主張している人はこのスレに一人もいない
あなたが狂っているから全く存在しないものをあなただけが見えているのだろう
あなたは自分が狂っていることにそろそろ気付くべきだ
550デフォルトの名無しさん
2022/08/16(火) 22:53:09.15ID:LmkLABMk551デフォルトの名無しさん
2022/08/16(火) 22:53:32.19ID:aPDXDhC0 >>546
そういう嘘はよくないなあ
流れとしては明らかに2系統あって
『自動メモリ解放で安全なのに、C言語と同じ省メモリ&同じ速さが出る言語』として
スクリプト言語を含む様々なGC言語からRustへ、という流れが多い
そういう嘘はよくないなあ
流れとしては明らかに2系統あって
『自動メモリ解放で安全なのに、C言語と同じ省メモリ&同じ速さが出る言語』として
スクリプト言語を含む様々なGC言語からRustへ、という流れが多い
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★12 [蚤の市★]
- 女性天皇「賛成」69%、将来の皇位継承「不安」68%…読売世論調査 [蚤の市★]
- 不倫疑惑の永野芽郁さん、CM削除ドミノの違約金“やはり発生は免れない”可能性 約10億円になる見込み、本人は全額支払う覚悟 [牛丼★]
- 旧姓使用拡大に連合会長が反発 「何の説明もない。選択的夫婦別氏制度導入を」 男女共同参画会議 ★2 [ぐれ★]
- 開業4ヵ月でこれは…“国民の税金”投入の『ジャングリア沖縄』で見た衝撃的な光景と、モチベーションが低い一部スタッフの現状 ★2 [ぐれ★]
- 【芸能】『女芸人No.1決定戦THE W』 粗品が最後にバッサリ「優勝賞金1000万円にしてはレベル低い大会」 [冬月記者★]
- 【悲報】中学受験、意味がなかった…「中学受験をやっても大部分の子供は無勉で入れるMARCH地方国立大に行くのが精一杯です [483447288]
- ジムでインターバルの時にウロウロ歩くやつなんなの?
- レイプはとっても気持ちがいい
- 【悲報】ドイツ人「なんで日本人って自炊するの?出来合の惣菜や冷食食った方が楽でコスパいいやん。そんなんだから低生産性なんだよ [786648259]
- 大阪行くわよーーーッ!!!
- 近所の騒音おじさんが俺にだけ優しくしてくる
