スレタイ以外の言語も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/
251デフォルトの名無しさん
2022/02/16(水) 19:24:55.51ID:9J2Avx3b そもそもがさあ
他の言語のライブラリにあるファイルオープン時に指定したファイルがなければ作って開いてくれるようなオプションないのか?
他の言語のライブラリにあるファイルオープン時に指定したファイルがなければ作って開いてくれるようなオプションないのか?
252デフォルトの名無しさん
2022/02/16(水) 19:38:23.34ID:J05fEVeY253デフォルトの名無しさん
2022/02/16(水) 19:40:31.24ID:9J2Avx3b C#とかだと複数のプロパティ値を使ったマッチングも当たり前にやっている
254デフォルトの名無しさん
2022/02/16(水) 20:09:46.22ID:4BNkCNLv >>250
Errはenum Resultのタグだからそれは理解が間違っている
>>251
無くても必要なら一瞬で書けるから困らない
例えば関数にするならこのようになる
fn open_or_create(path: impl AsRef<Path>) -> io::Result<File> {
File::open(&path)
.or_else(|err|
if err.kind() == ErrorKind::NotFound {
File::create(path)
} else {
Err(err)
}
)
}
このようにorを使う方が見やすく分かりやすい
matchでOk(x) => x, となったらorと覚えればよい
Errはenum Resultのタグだからそれは理解が間違っている
>>251
無くても必要なら一瞬で書けるから困らない
例えば関数にするならこのようになる
fn open_or_create(path: impl AsRef<Path>) -> io::Result<File> {
File::open(&path)
.or_else(|err|
if err.kind() == ErrorKind::NotFound {
File::create(path)
} else {
Err(err)
}
)
}
このようにorを使う方が見やすく分かりやすい
matchでOk(x) => x, となったらorと覚えればよい
255デフォルトの名無しさん
2022/02/16(水) 20:25:14.55ID:9J2Avx3b なにかミスってない?
256デフォルトの名無しさん
2022/02/16(水) 20:58:53.96ID:bx/iMnwF C#はここ十年さわってないので分からんけど
> Err(ref error.kind() == ErrorKind::NotFound) => {
みたいに書けるってこと?
そもそもC#にパターンマッチなんかあったやろか?
switchがせいぜいあるだけでは?
あと型もletでdestructできるやつじゃなくて
せいぜい (変数 is 型) でシコシコ調べていくだけでは?
> Err(ref error.kind() == ErrorKind::NotFound) => {
みたいに書けるってこと?
そもそもC#にパターンマッチなんかあったやろか?
switchがせいぜいあるだけでは?
あと型もletでdestructできるやつじゃなくて
せいぜい (変数 is 型) でシコシコ調べていくだけでは?
257デフォルトの名無しさん
2022/02/16(水) 21:00:56.89ID:UmvV858q >>250 のkind() は構造体のフィールドとのマッチじゃなくてメソッドの戻り値との比較だから
パターンとして取り扱えるようになるべきではないと思う
構造体のフィールドなら普通にパターンマッチできるよ
パターンとして取り扱えるようになるべきではないと思う
構造体のフィールドなら普通にパターンマッチできるよ
258デフォルトの名無しさん
2022/02/16(水) 21:07:22.97ID:UmvV858q259デフォルトの名無しさん
2022/02/16(水) 21:19:06.45ID:9J2Avx3b 見返してみると
Err(ref error.kind() == ErrorKind::NotFound)ではなく
Err( ErrorKind::NotFound)
とかけたほうがいいなと
Err(ref error.kind() == ErrorKind::NotFound)ではなく
Err( ErrorKind::NotFound)
とかけたほうがいいなと
260デフォルトの名無しさん
2022/02/16(水) 21:25:48.26ID:9J2Avx3b 上のソースは海外の有名なサイト???からほぼ丸パクリなんだな
そっちも突っ込みどころ満載のソースなんだけどパクったほうはさらにおかしくなってる
変なところだらけ
これとか
let f = File::open("hello.txt");
let f = match f {
それに引き続いたこれ
match File::create("hello.txt") {
そして
Err(e) => panic!("Tried to create file but there was a problem: {:?}", e),
と
これ
Err(error) => {
panic!("There was a problem opening the file: {:?}", error)
},
そっちも突っ込みどころ満載のソースなんだけどパクったほうはさらにおかしくなってる
変なところだらけ
これとか
let f = File::open("hello.txt");
let f = match f {
それに引き続いたこれ
match File::create("hello.txt") {
そして
Err(e) => panic!("Tried to create file but there was a problem: {:?}", e),
と
これ
Err(error) => {
panic!("There was a problem opening the file: {:?}", error)
},
261デフォルトの名無しさん
2022/02/16(水) 21:30:10.73ID:9J2Avx3b262デフォルトの名無しさん
2022/02/16(水) 21:41:12.68ID:oWbPDf/g >>253
Rustでも複数マッチングは当然できる
例えばorの概念
let v = match (p, q) {
(true, _) => "前者",
(_, true) => "後者",
(_, _) => "失敗",
};
>>255
matchをorで書き換えなら254で合ってる
目的達成だけならoptionsを使う258で合ってる
>>259
そういう単純なエラー型を自分で設計して使うならそれでOK
今回は std::io が返すエラーだから Err(struct io::Error { ...(フィールド非公開) }) となる
つまり Err(err) で受けて err.kind() で種別を取り出すことになる
なぜこうなっているのかは理由があるのでソース std/io/error.rs を読むべし
Rustでも複数マッチングは当然できる
例えばorの概念
let v = match (p, q) {
(true, _) => "前者",
(_, true) => "後者",
(_, _) => "失敗",
};
>>255
matchをorで書き換えなら254で合ってる
目的達成だけならoptionsを使う258で合ってる
>>259
そういう単純なエラー型を自分で設計して使うならそれでOK
今回は std::io が返すエラーだから Err(struct io::Error { ...(フィールド非公開) }) となる
つまり Err(err) で受けて err.kind() で種別を取り出すことになる
なぜこうなっているのかは理由があるのでソース std/io/error.rs を読むべし
263デフォルトの名無しさん
2022/02/16(水) 21:51:01.16ID:4BNkCNLv264デフォルトの名無しさん
2022/02/16(水) 23:07:11.77ID:9J2Avx3b 視点がずれてる
変なところが多い=美しくないと言ってるんだけど
意味のあるシャドーイングならわかる
変数使って受けてるのに次ではmatchダイレクト
panicを一行で書いたりブロックをつけて書いたりちぐはぐ
書いた奴は馬鹿なんだろう
変なところが多い=美しくないと言ってるんだけど
意味のあるシャドーイングならわかる
変数使って受けてるのに次ではmatchダイレクト
panicを一行で書いたりブロックをつけて書いたりちぐはぐ
書いた奴は馬鹿なんだろう
265デフォルトの名無しさん
2022/02/16(水) 23:09:17.43ID:9J2Avx3b クソど素人にこれだけ書かれるのは馬鹿なんだろうしそれも理解できないのはどうなんだ?
266デフォルトの名無しさん
2022/02/16(水) 23:12:09.22ID:4BNkCNLv 批判だけならバカでもできる
具体的な代案を出せるかどうかが全て
これはどの世界でも同じ
具体的な代案を出せるかどうかが全て
これはどの世界でも同じ
267デフォルトの名無しさん
2022/02/16(水) 23:14:11.42ID:9J2Avx3b いやいや
何を例としてるか全然わかってなかったろ?
具体的に書かれて初めてわかったろ?
そういうところだよ
汚いソースすらわからないんだろ?
何を例としてるか全然わかってなかったろ?
具体的に書かれて初めてわかったろ?
そういうところだよ
汚いソースすらわからないんだろ?
268デフォルトの名無しさん
2022/02/16(水) 23:18:14.63ID:9J2Avx3b rust入門サイトにこんなクソみたいなコード乗せるな
Rustの品格が下がる
Rustの品格が下がる
269デフォルトの名無しさん
2022/02/16(水) 23:18:35.44ID:4BNkCNLv270デフォルトの名無しさん
2022/02/17(木) 01:06:25.84ID:se607RqK rustが汚いって話からサンプルコードが汚いって話にすり替わってるな
271デフォルトの名無しさん
2022/02/17(木) 08:14:31.32ID:eL25V27g272デフォルトの名無しさん
2022/02/17(木) 08:14:54.96ID:2OHfN1Ec もう十分だよ
初心者にありがちな「言語仕様が汚い発言」でしかないのがわかったからもういいよw
初心者にありがちな「言語仕様が汚い発言」でしかないのがわかったからもういいよw
273デフォルトの名無しさん
2022/02/17(木) 23:22:49.91ID:S7RVNfva 彼は当初Rustの言語仕様が汚いと主張
それが無理筋だとわかると誰か個人が書いたサンプルコードが汚いと主張を変更
ところがそれも修正案すら示せず敗走か
それが無理筋だとわかると誰か個人が書いたサンプルコードが汚いと主張を変更
ところがそれも修正案すら示せず敗走か
274デフォルトの名無しさん
2022/02/18(金) 11:21:48.86ID:TQ4wtLA6 初心者にありがちな発言
「コンパイラのバグ」
「言語仕様が汚い」
「バリバリ書く」
「コンパイラのバグ」
「言語仕様が汚い」
「バリバリ書く」
275デフォルトの名無しさん
2022/02/18(金) 11:53:36.75ID:Oiotkhzs276デフォルトの名無しさん
2022/02/18(金) 23:43:37.82ID:dAarluib まだ富士山2合目な発言「美しい言語、感銘を受ける」 「コンパイラが教師」 「初心者にありがち」
277デフォルトの名無しさん
2022/02/19(土) 06:12:57.32ID:TtXtFDlb >>274
Objective-Cだけはマジ言語仕様汚ねーなって思った
Objective-Cだけはマジ言語仕様汚ねーなって思った
278デフォルトの名無しさん
2022/02/19(土) 09:03:05.11ID:Wd6uYUeM Objective-Cはちょっとしか触ったことないけどすこ
mac開発で使ってる人からすると欠点が見えてくるのかな?
mac開発で使ってる人からすると欠点が見えてくるのかな?
279デフォルトの名無しさん
2022/02/19(土) 11:31:16.52ID:R5yjbcGL 記号呪文のオンパレード
280デフォルトの名無しさん
2022/02/19(土) 12:43:55.20ID:gklR0OPN Objective-Cは、あの突き抜けたキメラ感が好きかな。
281デフォルトの名無しさん
2022/02/19(土) 15:13:03.46ID:PBw8xajc Obj-Cそんなに悪くないぞ
RubyのC拡張書いてる感覚に近い
RubyのC拡張書いてる感覚に近い
282デフォルトの名無しさん
2022/02/19(土) 18:59:30.44ID:ukdLXHKY283デフォルトの名無しさん
2022/02/19(土) 20:52:26.77ID:TtXtFDlb そういえばC#やってからJavaに触ると.NETフレームワークの設計が如何によく出来てるかを思い知る
284デフォルトの名無しさん
2022/02/19(土) 21:05:14.30ID:Wd6uYUeM OSXが出てから一般向けの参考書が本屋に並ぶとか信じられないことになったが
昔は図書館の奥底まで潜らないと本が出てこなかったり
興味あるけどなんか手を出せる状況になかったなObjectice-Cは
linuxにgnustep入れてちょこちょこっとサンプル動かして満足してた
いやほんとAppleのおかげでだいぶ脚光当たったなマジで
昔は図書館の奥底まで潜らないと本が出てこなかったり
興味あるけどなんか手を出せる状況になかったなObjectice-Cは
linuxにgnustep入れてちょこちょこっとサンプル動かして満足してた
いやほんとAppleのおかげでだいぶ脚光当たったなマジで
285デフォルトの名無しさん
2022/02/19(土) 23:02:34.03ID:MxDJywIC Obj-CはどうかしらんけどSwiftはまあ良いと思う
依存がでかいときのビルドはつらすぎだけど
依存がでかいときのビルドはつらすぎだけど
286デフォルトの名無しさん
2022/02/20(日) 09:06:02.64ID:42OaaAY/287デフォルトの名無しさん
2022/02/20(日) 23:34:18.52ID:wG3ApFzh288デフォルトの名無しさん
2022/02/21(月) 03:36:10.49ID:pjmAL47q そいつはC#おじさんだから触っちゃダメ、Goスレでも暴れてる
289デフォルトの名無しさん
2022/02/21(月) 15:07:07.57ID:WLj3vt4d 波かっこによるブロックのため、
}
}
}
}
でディスプレイを無駄に占有されて可読性が減る事と
文末のセミコロン(C系)やコロン(Python等)強制で無駄にタイピング量が増えるのが嫌なのですが(強制でなければむしろ好き)、
あれらって、どんな魅力が有るのですか?
javascriptでデータ量を減らせて難読化できるメリットはわかりますが・・・・。
ちなみに自分は{}もpython.nimの様なインデントによるブロックで良いと思うし、
function()はfn()で良いし、println()はp()で良いし、arrayOf(1,2,3)は(1,2,3)で良いと思います。
}
}
}
}
でディスプレイを無駄に占有されて可読性が減る事と
文末のセミコロン(C系)やコロン(Python等)強制で無駄にタイピング量が増えるのが嫌なのですが(強制でなければむしろ好き)、
あれらって、どんな魅力が有るのですか?
javascriptでデータ量を減らせて難読化できるメリットはわかりますが・・・・。
ちなみに自分は{}もpython.nimの様なインデントによるブロックで良いと思うし、
function()はfn()で良いし、println()はp()で良いし、arrayOf(1,2,3)は(1,2,3)で良いと思います。
290デフォルトの名無しさん
2022/02/21(月) 15:49:13.16ID:8WYOAA82 C言語の出始めは関数名とか省略していて可読性悪いとか言われてたなぁ。
291デフォルトの名無しさん
2022/02/21(月) 15:58:43.16ID:/1Q8PAGZ C言語が出る前からプログラミングしてたん?
すごい大先輩ですね
すごい大先輩ですね
292デフォルトの名無しさん
2022/02/21(月) 16:38:51.99ID:Y2/ni7CQ 記号=読めない
英単語=読める
みたいな批判は古いけど今でも一理ある
char **argv;
pointer< pointer<char> > argv;
英単語=読める
みたいな批判は古いけど今でも一理ある
char **argv;
pointer< pointer<char> > argv;
293デフォルトの名無しさん
2022/02/21(月) 16:58:48.39ID:hkBHJMBS おいおい
そんなのタイプしたくないよ
そんなのタイプしたくないよ
294デフォルトの名無しさん
2022/02/21(月) 17:32:22.70ID:NEAxhla5 頻度が高いものほど短くていい
意味不明な記号でもいい
*こそがまさにそれで
*こそがまさにC言語の象徴
意味不明な記号でもいい
*こそがまさにそれで
*こそがまさにC言語の象徴
295デフォルトの名無しさん
2022/02/21(月) 18:20:09.87ID:Vy+crfrM296デフォルトの名無しさん
2022/02/21(月) 20:53:51.80ID:QHx0/ciw297デフォルトの名無しさん
2022/02/21(月) 21:43:40.53ID:8WYOAA82 どうせお前らは嫁や彼女のおっぱい見てオッパイソンとか内心思ってるんだろ。
298デフォルトの名無しさん
2022/02/21(月) 23:34:00.09ID:yT3SkRwP Lispは基本すべてが()で
関数の終わりは
))))))
とかなりがち
スーパーカッコ
]
というのも提案されたが流行らなかった
カッコを閉じると対応するカッコを自動で示してくれるのが
よかったのかなあ(viの show match)
プログラムが大きくなるとどっちにしても一画面では
収まらなくなるし
識別子の名前を短くすると一見してなんだか分からないし
プログラムが大きくなるとわけが分からなくなりやすい
一応理由はある。経験則だけど
関数の終わりは
))))))
とかなりがち
スーパーカッコ
]
というのも提案されたが流行らなかった
カッコを閉じると対応するカッコを自動で示してくれるのが
よかったのかなあ(viの show match)
プログラムが大きくなるとどっちにしても一画面では
収まらなくなるし
識別子の名前を短くすると一見してなんだか分からないし
プログラムが大きくなるとわけが分からなくなりやすい
一応理由はある。経験則だけど
299デフォルトの名無しさん
2022/02/22(火) 00:58:19.88ID:A1/uSbXB300デフォルトの名無しさん
2022/02/22(火) 01:37:03.17ID:Uj7UhjXB301デフォルトの名無しさん
2022/02/22(火) 02:06:26.37ID:8W2asJrF 凡人なので Bracket Pair Colorizer みたいなエディタ支援がないと
3階層以上のカッコの対応が正しいかどうか自信が持てない
3階層以上のカッコの対応が正しいかどうか自信が持てない
302デフォルトの名無しさん
2022/02/22(火) 02:20:32.61ID:N60dC/Ri303デフォルトの名無しさん
2022/02/22(火) 12:22:36.19ID:ysWljmej304デフォルトの名無しさん
2022/02/23(水) 16:27:32.36ID:D80BZOr1 >>303
>Bracket Pair Colorizer は、もう必要ない 既に、VSCode に実装されたから
良い世の中になったなぁ。vimでも実装されればいいのに。特に、対応するカッコを線でつなぐ機能はExcelにも無いのでステキ。
>Bracket Pair Colorizer は、もう必要ない 既に、VSCode に実装されたから
良い世の中になったなぁ。vimでも実装されればいいのに。特に、対応するカッコを線でつなぐ機能はExcelにも無いのでステキ。
305デフォルトの名無しさん
2022/02/23(水) 16:40:31.88ID:6S791qLX306デフォルトの名無しさん
2022/02/25(金) 00:55:39.55ID:XW+/SlIV307デフォルトの名無しさん
2022/02/25(金) 02:23:42.73ID:vMVHS55f Cのセミコロンはalgolのセミコロンやcobolのピリオドを引きづっている
ここで一連の処理が終わりという意味でターミネータを置いた
改行を書かずにぎっしり書くときにどこで切っていいか分かるからね
自然の文に近かろうといういい加減な理由
当時はまだ人間にとっての書きやすさとか
人間にとっての読みやすとさかほとんど配慮されてなかった
ここで一連の処理が終わりという意味でターミネータを置いた
改行を書かずにぎっしり書くときにどこで切っていいか分かるからね
自然の文に近かろうといういい加減な理由
当時はまだ人間にとっての書きやすさとか
人間にとっての読みやすとさかほとんど配慮されてなかった
308デフォルトの名無しさん
2022/02/25(金) 04:31:10.49ID:aDhOSI3t Rustはセミコロンの有無で文か式(値)かを分けている
if condition {
a = p + q;
} else {
a = x + y;
}
これをifの中を文ではなく式(値)にすると
a = if condition {
p + q
} else {
x + y
};
もちろん改行やインデントは自由なので
a = if condition { p + q } else { x + y };
こう書いても同じ
波括弧は区切りとして不可欠であり
多重時の対応関係となるだけでなく
波括弧はブロックを形成しスコープの管理にも不可欠
例えば波括弧により新たなブロックを形成することで
ロックを取得した変数がブロック終了時に自動解放され
その時にロックも自動解放されるなど安全設計にも波括弧が活躍
このようにセミコロンと波括弧はRustにおいて非常に重要な意味を持つ
きちんと活用したプログラミングにおいてはセミコロンも波括弧も無駄ではない
if condition {
a = p + q;
} else {
a = x + y;
}
これをifの中を文ではなく式(値)にすると
a = if condition {
p + q
} else {
x + y
};
もちろん改行やインデントは自由なので
a = if condition { p + q } else { x + y };
こう書いても同じ
波括弧は区切りとして不可欠であり
多重時の対応関係となるだけでなく
波括弧はブロックを形成しスコープの管理にも不可欠
例えば波括弧により新たなブロックを形成することで
ロックを取得した変数がブロック終了時に自動解放され
その時にロックも自動解放されるなど安全設計にも波括弧が活躍
このようにセミコロンと波括弧はRustにおいて非常に重要な意味を持つ
きちんと活用したプログラミングにおいてはセミコロンも波括弧も無駄ではない
309デフォルトの名無しさん
2022/02/25(金) 12:38:43.75ID:Eg3DloqN Ruby on Rails で有名な、民泊のAirbnb、JavaScript スタイルガイド
ステートメントを明示的に終了し、
不足しているセミコロンを検知するようにリンターを構成すると、
問題に遭遇するのを防ぐのに役立ちます
一方、Rubyでは、セミコロンを付けない
ステートメントを明示的に終了し、
不足しているセミコロンを検知するようにリンターを構成すると、
問題に遭遇するのを防ぐのに役立ちます
一方、Rubyでは、セミコロンを付けない
310デフォルトの名無しさん
2022/02/25(金) 14:56:07.65ID:S5tvR1Yl JavaScriptはセミコロンを省略しようとすると、ハマる罠がいろいろあるからね
311デフォルトの名無しさん
2022/02/25(金) 17:57:34.96ID:acR8Uc+d 自由な書き方ができるというのは無駄だと思うけど?
”波括弧は区切りとして不可欠であり(略)波括弧はブロックを形成し(略)変数がブロック終了時に自動解放”
これも別に2種の異なる記号文字の波カッコである必要はない。いちいちカッコ対応を合わせる必要もあるし、Pythonのような
オフサイドルールでも実現できるし、Rubyのように{}とbegin/endで意味が違う言語のほうがしっかりしてますよ
もともとのCではセミコロンはソースのパース処理を楽したいだけで、こんなに好意的に信じられるとはw
”波括弧は区切りとして不可欠であり(略)波括弧はブロックを形成し(略)変数がブロック終了時に自動解放”
これも別に2種の異なる記号文字の波カッコである必要はない。いちいちカッコ対応を合わせる必要もあるし、Pythonのような
オフサイドルールでも実現できるし、Rubyのように{}とbegin/endで意味が違う言語のほうがしっかりしてますよ
もともとのCではセミコロンはソースのパース処理を楽したいだけで、こんなに好意的に信じられるとはw
312デフォルトの名無しさん
2022/02/25(金) 18:24:41.24ID:u7rOKKj6313デフォルトの名無しさん
2022/02/25(金) 18:37:10.71ID:acR8Uc+d ErlangもHaskellも波かっこなんて使わないけど? Fortranもないし、Juliaには合併型につかうけどブロックじゃないし
これらをおもちゃと言えるならさぞかし素晴らしいプログラム書いてるんだろうな。私の意見は「最もベスト」ではなく
ただ単に何も考えず人口の多い言語からひきずられただけ
これらをおもちゃと言えるならさぞかし素晴らしいプログラム書いてるんだろうな。私の意見は「最もベスト」ではなく
ただ単に何も考えず人口の多い言語からひきずられただけ
314デフォルトの名無しさん
2022/02/25(金) 18:56:15.50ID:uHAJP23d FORTH最強
315デフォルトの名無しさん
2022/02/25(金) 20:33:35.67ID:RNXuutTC Juliaのendで閉じるのはマジでメリットがわからん
予約語が増えるし、エディタの機能で閉じ括弧にジャンプすることも出来なくなるし
Juliaなんて特にFortran出身のガイジみたいに長いコード書くガイジを招き入れようという言語なのによ
予約語が増えるし、エディタの機能で閉じ括弧にジャンプすることも出来なくなるし
Juliaなんて特にFortran出身のガイジみたいに長いコード書くガイジを招き入れようという言語なのによ
316デフォルトの名無しさん
2022/02/25(金) 20:36:28.34ID:aDhOSI3t 既に書いたようにRustは積極的にセミコロンも波括弧も活用していて無駄がない
波括弧もブロックだけでなく列挙体定義、構造体定義、モジュール定義、トレイト定義、実装定義など多岐にわたる
ブロック自体も様々な制御構文に登場するだけだなく、クロージャや非同期のブロックなどの他に、所有権スコープを別にするためにブロック内ブロックも使うため、開始も終了も1文字で済む波括弧はRustにとってベストとなっている
セミコロンも>>308に書いたようにセミコロンの有無で文となるか値となるか変わってくるなど重要な意味を持っている
このようにセミコロンと波括弧はRustにおいて非常に重要な意味を持つ
これらをきちんと活用したプログラミング言語においてはセミコロンも波括弧も無駄ではない
波括弧もブロックだけでなく列挙体定義、構造体定義、モジュール定義、トレイト定義、実装定義など多岐にわたる
ブロック自体も様々な制御構文に登場するだけだなく、クロージャや非同期のブロックなどの他に、所有権スコープを別にするためにブロック内ブロックも使うため、開始も終了も1文字で済む波括弧はRustにとってベストとなっている
セミコロンも>>308に書いたようにセミコロンの有無で文となるか値となるか変わってくるなど重要な意味を持っている
このようにセミコロンと波括弧はRustにおいて非常に重要な意味を持つ
これらをきちんと活用したプログラミング言語においてはセミコロンも波括弧も無駄ではない
317デフォルトの名無しさん
2022/02/25(金) 20:36:50.10ID:GfqLBiOO rubyでもたまに変数名にend使っちゃって(´・ω・`)ってなるわ
318デフォルトの名無しさん
2022/02/25(金) 21:22:07.17ID:uXH/+tNo 可読性を損なわない範囲で新しい仕組みができればと
319デフォルトの名無しさん
2022/02/25(金) 21:39:31.34ID:LgZQhCZj >>306
FORTRANは行末記号を使わない代わりに行継続を明示しているだけ。
FORTRANは行末記号を使わない代わりに行継続を明示しているだけ。
320デフォルトの名無しさん
2022/02/25(金) 21:41:12.00ID:uXH/+tNo 昔は画面に出せる文字数も少なく見通しが悪くなるのでインデントなど使わなかった
フルスクリーンエディタでもなかった
誰もインデントなど使わず意味の通じる範囲で一行に区切り入れてどんどん文を書いていった
fortranなんて一行の文字数が固定だったし複数行になる場合は非常に見づらかった
フルスクリーンエディタでもなかった
誰もインデントなど使わず意味の通じる範囲で一行に区切り入れてどんどん文を書いていった
fortranなんて一行の文字数が固定だったし複数行になる場合は非常に見づらかった
321デフォルトの名無しさん
2022/02/25(金) 21:43:41.48ID:uXH/+tNo 行末記号を使わない=書きかけか記述バグありの場所
322デフォルトの名無しさん
2022/02/25(金) 21:50:02.35ID:uXH/+tNo 大学でfortranの授業があり友達が勉強のためにと20万ぐらい出してパソコン用のFORTRANのパッケージを買った
俺達が今はFORTRANは実質大学でしか使われておらずモダン()な言語がもっと安く買えることを教えると
もっと先に言ってくれと激怒した
彼は一年の前期しか使わないFORTRANを購入したんだ
後期はPascalだった
Pascalを買っててもそれはそれで…
自分はCのパッケージを買ったんだなあ
俺達が今はFORTRANは実質大学でしか使われておらずモダン()な言語がもっと安く買えることを教えると
もっと先に言ってくれと激怒した
彼は一年の前期しか使わないFORTRANを購入したんだ
後期はPascalだった
Pascalを買っててもそれはそれで…
自分はCのパッケージを買ったんだなあ
323デフォルトの名無しさん
2022/02/25(金) 23:51:11.41ID:q7+lZsL0 インデント言語はコードの自動生成がやりづらいという欠点はあるかな
文を出力するときにその文を含むスコープのインデントレベルだけ空白文字を出力するようなロジックが必要
括弧が必要な言語なら生成後フォーマッタにかけれぱきれいなコードになる
まあたいした差ではないとは思うけど
文を出力するときにその文を含むスコープのインデントレベルだけ空白文字を出力するようなロジックが必要
括弧が必要な言語なら生成後フォーマッタにかけれぱきれいなコードになる
まあたいした差ではないとは思うけど
324デフォルトの名無しさん
2022/02/26(土) 01:49:42.07ID:nCrfqvY1 Rustは配列の1要素の更新参照を渡したら
ほかの配列要素がすべて更新できないという
発狂するような仕組みになっている
ほかの配列要素がすべて更新できないという
発狂するような仕組みになっている
325デフォルトの名無しさん
2022/02/26(土) 02:01:50.91ID:hLp//vsS 本当にそれがやりたくて、かつインデックスが重ならないことを保証できるんならunsafe使っても許されるケースっぽい
326デフォルトの名無しさん
2022/02/26(土) 02:12:02.48ID:ZxQjFH2y 配列の1要素の更新参照をとるときにどの要素が選ばれるかが実行時に決まるとどの要素も変更されうることになるからじゃないの?
327デフォルトの名無しさん
2022/02/26(土) 02:48:53.09ID:kDTLFyam >>308 >>316
>波括弧はブロックを形成しスコープの管理にも不可欠
インデントでブロックを形成する仕様でもスコープの管理できるのでは?
つまり、この時点では波カッコは不可欠ではないのでは?
別の言い方をすれば Rustで波カッコの代わりに、インデントでもブロックやデータの入れ子関係を表せるように言語の設計変更が可能ではないか?と思います。
あと次のnim言語の例の様に「ifの後ろにイコール記号が無ければ値(p + q か x + y)を返し、有れば機能 (bに1か2を代入)を実行」という言語仕様をすれば行末セミコロンは不要になるのでは?
a = if condition:
b = 1
p + q # a = p + q かつ b = 1となる
else
b = 2
x + y # a = x + y かつ b = 2となる
参考:https://2vg.github.io/Nim-World/condition/if.html
>波括弧はブロックを形成しスコープの管理にも不可欠
インデントでブロックを形成する仕様でもスコープの管理できるのでは?
つまり、この時点では波カッコは不可欠ではないのでは?
別の言い方をすれば Rustで波カッコの代わりに、インデントでもブロックやデータの入れ子関係を表せるように言語の設計変更が可能ではないか?と思います。
あと次のnim言語の例の様に「ifの後ろにイコール記号が無ければ値(p + q か x + y)を返し、有れば機能 (bに1か2を代入)を実行」という言語仕様をすれば行末セミコロンは不要になるのでは?
a = if condition:
b = 1
p + q # a = p + q かつ b = 1となる
else
b = 2
x + y # a = x + y かつ b = 2となる
参考:https://2vg.github.io/Nim-World/condition/if.html
328デフォルトの名無しさん
2022/02/26(土) 03:08:20.09ID:ZxQjFH2y CやRustの波括弧とセミコロンはインデントがあろうが無かろうがタブとスペースが混じっていようがインデント幅がバラバラになっていようが一行に式や文がいくつ書かれていようがルールさえ守っていればコンパイルできるようにしろ、自由にコードを書かせろ、というために存在しているんじゃないか。
コーディング規則をきちんと守ってインデントする書き方なら波括弧使わずにインデントでブロックの範囲を指定できる。
コーディング規則をきちんと守ってインデントする書き方なら波括弧使わずにインデントでブロックの範囲を指定できる。
329デフォルトの名無しさん
2022/02/26(土) 03:15:38.69ID:ZxQjFH2y >>327
Nimでは一行に複数ステートメントを書きたいときだけセミコロンでステートメントを区切るようになっている。
Statement list expressionを使えば以下のように書ける。
var b: int
let a = if condition: (b = 1; p + q) else: (b = 2; x + y)
Nimでは一行に複数ステートメントを書きたいときだけセミコロンでステートメントを区切るようになっている。
Statement list expressionを使えば以下のように書ける。
var b: int
let a = if condition: (b = 1; p + q) else: (b = 2; x + y)
330デフォルトの名無しさん
2022/02/26(土) 03:43:46.90ID:Gc6jVciw >>324
かなり習熟が必要だけど、あらかじめそういうことを理解して考慮していれば
そもそもそういう操作が必要ないように設計できるようになってくるので、どんどん困らなくなってくるよ
ライフタイムらへんはもっと難しいから、初心者はしばらくの間悩まされるし、
やはりどうにもこうにもRustの学習曲線はやばいよね
かなり習熟が必要だけど、あらかじめそういうことを理解して考慮していれば
そもそもそういう操作が必要ないように設計できるようになってくるので、どんどん困らなくなってくるよ
ライフタイムらへんはもっと難しいから、初心者はしばらくの間悩まされるし、
やはりどうにもこうにもRustの学習曲線はやばいよね
331デフォルトの名無しさん
2022/02/26(土) 03:47:06.26ID:wj41QPek >>324
split_mut使うなどのworkaroundはあるよ
split_mut使うなどのworkaroundはあるよ
332デフォルトの名無しさん
2022/02/26(土) 06:26:28.15ID:BX4iLvdt >>327
Rustだとブロックの先頭ですぐに別のブロック開始させる場合もあるけど
インデント方式でやるといきなり二段階インデントが深くなるのはわかりくいから波括弧が向いてると思う
あとセミコロンも関数の最後の返り値の場所で別の関数を呼んだとき
セミコロンを付けると文になって呼んだ関数の副作用のみ利用で返り値無しとなり
セミコロンを付けると式(値)となって呼んだ関数の返り値が自分の返り値となる
完全にセミコロンの有無しか違いがないからRustでは波括弧もセミコロンも必須かな
Rustだとブロックの先頭ですぐに別のブロック開始させる場合もあるけど
インデント方式でやるといきなり二段階インデントが深くなるのはわかりくいから波括弧が向いてると思う
あとセミコロンも関数の最後の返り値の場所で別の関数を呼んだとき
セミコロンを付けると文になって呼んだ関数の副作用のみ利用で返り値無しとなり
セミコロンを付けると式(値)となって呼んだ関数の返り値が自分の返り値となる
完全にセミコロンの有無しか違いがないからRustでは波括弧もセミコロンも必須かな
333デフォルトの名無しさん
2022/02/26(土) 08:10:01.51ID:vGz8MbzG 昔とはコーディング環境が違うから何とでもできるけど
本当にRustはコーディング時間と学習時間が他の言語の倍ぐらいかかる
本当にRustはコーディング時間と学習時間が他の言語の倍ぐらいかかる
334デフォルトの名無しさん
2022/02/26(土) 09:10:31.11ID:e5W/1zqv 専用のIDEがあって、インテリセンス使えれば学習曲線が明らかに下がると思うよ
335デフォルトの名無しさん
2022/02/26(土) 14:12:26.25ID:vGz8MbzG 下げてどうする?
336デフォルトの名無しさん
2022/02/26(土) 21:21:46.56ID:6gzH7hBI >>332
>インデント方式でやるといきなり二段階インデントが深くなるのはわかりくいから波括弧が向いてると思う
いきなり二段階インデントは確かに嫌ですね。
そういった場面が思いつけないので例を出して頂けるとありがたいです。
>インデント方式でやるといきなり二段階インデントが深くなるのはわかりくいから波括弧が向いてると思う
いきなり二段階インデントは確かに嫌ですね。
そういった場面が思いつけないので例を出して頂けるとありがたいです。
337デフォルトの名無しさん
2022/02/26(土) 21:23:24.03ID:rDEoBrRU 他の言語はパフォーマンスの改善とタイミングバグの対応に10倍かかんのよ
338デフォルトの名無しさん
2022/02/26(土) 22:44:30.76ID:fRC8OZTs うそばかりだな
339デフォルトの名無しさん
2022/02/27(日) 13:41:36.31ID:+/7Q5xyF 他の言語で1%ぐらいで発生するバグがrustでは発生しにくいように書ける
でもアホだとそもそもそこまでコードが書けないで放り投げる
コードはバグ込みでも動くものが完成しなければいけないと思うけどRustはそこまで到達しにくいかしないか
同じコードでも3倍ぐらいコーディング時間がかかる
でもアホだとそもそもそこまでコードが書けないで放り投げる
コードはバグ込みでも動くものが完成しなければいけないと思うけどRustはそこまで到達しにくいかしないか
同じコードでも3倍ぐらいコーディング時間がかかる
340デフォルトの名無しさん
2022/02/27(日) 14:50:22.24ID:Xl3wWN+O 色んなプログラミングをやってきたがRustが一番プログラミングしやすい
色々と言語仕様が洗練されていて書きやすいことが大きい
それに加えて開発効率が非常に高いことが挙げられる
特に実行しながらのデバッグが激減した
色々と言語仕様が洗練されていて書きやすいことが大きい
それに加えて開発効率が非常に高いことが挙げられる
特に実行しながらのデバッグが激減した
341デフォルトの名無しさん
2022/02/27(日) 16:00:43.26ID:XKAHB4uk >>339
これ
これ
342デフォルトの名無しさん
2022/02/27(日) 16:26:56.85ID:/IzO/XXN rustではブロックも式だから、インデントは向かないだろう?
343デフォルトの名無しさん
2022/02/27(日) 17:46:13.38ID:+/7Q5xyF c++で書いたコードをRustで書き直してると叫びたくなるがしゃあない
344デフォルトの名無しさん
2022/02/27(日) 18:10:09.84ID:nXG/aSfD 静的型付け言語の中だとRustが最も書きやすいかな
特に強力なおかげでデバッグなどでもロジック本体に集中できる点がいいかな
この点は異論があまり聞かれないよね
特に強力なおかげでデバッグなどでもロジック本体に集中できる点がいいかな
この点は異論があまり聞かれないよね
345デフォルトの名無しさん
2022/02/27(日) 18:12:31.33ID:+yReYAPt >>343
どうして?ライブラリがないから?
どうして?ライブラリがないから?
346デフォルトの名無しさん
2022/02/27(日) 18:31:50.94ID:Dwcd+ECL クラス指向じゃないから抽象化の設計が変わってくる
347デフォルトの名無しさん
2022/02/27(日) 18:54:50.37ID:+/7Q5xyF ロジック本体に集中できると書いてる人はjavaかC#あたりでも使っていたら良かったんじゃないかと
348デフォルトの名無しさん
2022/02/27(日) 19:00:54.33ID:gYJlUrmm rustが書きやすい理由は関数シグネチャの情報量が多いこともあると思う
関数の型定義を見るだけでパラメーターや戻り値の値域や、所有権の移動有無が明確に分かるのは大きなメリットかと
関数の型定義を見るだけでパラメーターや戻り値の値域や、所有権の移動有無が明確に分かるのは大きなメリットかと
349デフォルトの名無しさん
2022/02/27(日) 19:02:15.12ID:gYJlUrmm あと関数に渡したオブジェクトの変更可能性の有無が分かるのも良い点 (これはC++などでも分かるが)
350デフォルトの名無しさん
2022/02/27(日) 19:10:22.84ID:+yReYAPt 機械的にやってないからってだけだよね
そりゃ自分でRustっぽく書き直しちゃってたら時間かかるのは仕方ない
そりゃ自分でRustっぽく書き直しちゃってたら時間かかるのは仕方ない
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★11 [樽悶★]
- 【いちご高騰】ヤマザキのクリスマスケーキ、いちご無し販売 [おっさん友の会★]
- 外国人の犯罪率は日本人の1.72倍 警察庁が短期滞在者除いた数字を参院内閣委で答弁★2 [七波羅探題★]
- 【日中対立】 朝日新聞のタイトル修正が中国逆ギレの火種か SNSで批判相次ぐ [♪♪♪★]
- 「ドラゴンボール」初の全世界キャラクター人気投票が開幕!212キャラからナンバーワンが決まる!! [ひかり★]
- ひろゆき氏 高市首相の台湾有事発言 「日本が得たものあまりない。経済的なマイナスは明確に存在」 [冬月記者★]
- 5:55:55:55チャンス🤡🎰
- Redditの外国人たち、なぜか日本の江戸時代の『五人組』システムに興味津々。めっちゃ↑付いてるのに日本人の俺が知らない😰 [718678614]
- 【すべてが】𝗮𝗺͜𝗮͉𝘇𝗼𝗻ブラックフライデーSALE総合【いいだろ!】 [194819832]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【ポケットに手】中国のネトウヨ、「この映像を見ると誇りに思える」 「こういう風に日本を教育すべきだ」 [241672384]
- 【悲報】高市政権、ホタテ輸出の支援検討 [834922174]
