スレタイ以外の言語もok
前スレ
次世代言語18 Go Rust Elixir Kotlin TypeScript (実質20)
https://mevius.5ch.net/test/read.cgi/tech/1569866283/
探検
次世代言語21 Go Nim Rust Swift Kotlin TypeScript
レス数が1000を超えています。これ以上書き込みはできません。
2020/04/19(日) 15:06:02.92ID:jAOW5aqE
978デフォルトの名無しさん
2021/08/22(日) 03:07:42.15ID:0Cz6ueFz >>970
type Point = object
x: int
y: int
proc print(this: Point) =
echo "x = ", this.x, ", y = ", this.y
var p = Point(x: 10, y: 15)
p.print()
echo "x = ", p.x, ", y = ", p.y
まぁ普通はこうですよね・・・。Rust がぶっ飛んで異常なだけです。ありえないです。
ちなみに Nim の場合 print(p) と p.print() は書き方が違うだけで意味は同じです。
type Point = object
x: int
y: int
proc print(this: Point) =
echo "x = ", this.x, ", y = ", this.y
var p = Point(x: 10, y: 15)
p.print()
echo "x = ", p.x, ", y = ", p.y
まぁ普通はこうですよね・・・。Rust がぶっ飛んで異常なだけです。ありえないです。
ちなみに Nim の場合 print(p) と p.print() は書き方が違うだけで意味は同じです。
979デフォルトの名無しさん
2021/08/22(日) 03:10:25.68ID:0Cz6ueFz >>862
参照で渡す場合はこうなります。
type Point = object
x: int
y: int
proc print(this: ref Point) =
echo "x = ", this.x, ", y = ", this.y
this.x = 100
var p = Point.new
p.x = 10
p.y = 15
p.print()
echo "x = ", p.x, ", y = ", p.y
new で Point object を作成すると参照のオブジェクトが出来ます。これを渡すために print 側の引数には ref をつけてあげます。new 関数でメンバに値を割り当てることは出来ないので後から渡してやります。
つっても上のやつはあくまで Rust と似せて書いたらこうなるよって話でこんな書き方しません。
参照で渡す場合はこうなります。
type Point = object
x: int
y: int
proc print(this: ref Point) =
echo "x = ", this.x, ", y = ", this.y
this.x = 100
var p = Point.new
p.x = 10
p.y = 15
p.print()
echo "x = ", p.x, ", y = ", p.y
new で Point object を作成すると参照のオブジェクトが出来ます。これを渡すために print 側の引数には ref をつけてあげます。new 関数でメンバに値を割り当てることは出来ないので後から渡してやります。
つっても上のやつはあくまで Rust と似せて書いたらこうなるよって話でこんな書き方しません。
980デフォルトの名無しさん
2021/08/22(日) 03:12:56.27ID:0Cz6ueFz >>970
普通オブジェクトなんて参照だろ、って事で Nim では以下のように書くのが慣例化しています。
type
Point = ref PointObj
PointObj = object
x: int
y: int
proc print(this: Point) =
echo "x = ", this.x, ", y = ", this.y
this.x = 100
var p = Point(x: 10, y: 15)
p.print()
echo "x = ", p.x, ", y = ", p.y
オブジェクトとそのリファレンスを同時に定義して、通常使わない方のオブジェクト側にサフィックスをつけておくと、まぁ素のオブジェクトも作りたきゃ作れるし、って話です。
自分は正直リファレンスだけで良いので更に手を抜いてこう書きますけどね。
type
Point = ref object
x: int
y: int
普通オブジェクトなんて参照だろ、って事で Nim では以下のように書くのが慣例化しています。
type
Point = ref PointObj
PointObj = object
x: int
y: int
proc print(this: Point) =
echo "x = ", this.x, ", y = ", this.y
this.x = 100
var p = Point(x: 10, y: 15)
p.print()
echo "x = ", p.x, ", y = ", p.y
オブジェクトとそのリファレンスを同時に定義して、通常使わない方のオブジェクト側にサフィックスをつけておくと、まぁ素のオブジェクトも作りたきゃ作れるし、って話です。
自分は正直リファレンスだけで良いので更に手を抜いてこう書きますけどね。
type
Point = ref object
x: int
y: int
981デフォルトの名無しさん
2021/08/22(日) 03:18:37.68ID:0Cz6ueFz >>970
パターンマッチ?case でしょ?
Nim も case でそれっぽく書けます。
複式パターン
fn main() {
let x = 1;
match x {
1 | 2 => println!("1 | 2"),
3 => println!("3"),
_ => println!("other"),
}
}
let x = 1
case x
of 1, 2: echo "1 | 2"
of 3: echo "3"
else: echo "other"
パターンマッチ?case でしょ?
Nim も case でそれっぽく書けます。
複式パターン
fn main() {
let x = 1;
match x {
1 | 2 => println!("1 | 2"),
3 => println!("3"),
_ => println!("other"),
}
}
let x = 1
case x
of 1, 2: echo "1 | 2"
of 3: echo "3"
else: echo "other"
982デフォルトの名無しさん
2021/08/22(日) 03:20:54.62ID:0Cz6ueFz >>970
範囲
fn main() {
let x = 1;
match x {
1...5 => println!("1...5"),
_ => println!("other"),
};
}
let x = 1
case x
of 1..5: echo "1..5"
else: echo "other"
範囲
fn main() {
let x = 1;
match x {
1...5 => println!("1...5"),
_ => println!("other"),
};
}
let x = 1
case x
of 1..5: echo "1..5"
else: echo "other"
983デフォルトの名無しさん
2021/08/22(日) 03:23:47.86ID:0Cz6ueFz >>970
case の返りを受け取る
fn main() {
let x = 1;
let s = match x {
1 => "one",
2 => "two",
_ => "other",
};
println!("{}", s)
}
let x = 1
let s = case x
of 1: "one"
of 2: "two"
else: "other"
echo s
case の返りを受け取る
fn main() {
let x = 1;
let s = match x {
1 => "one",
2 => "two",
_ => "other",
};
println!("{}", s)
}
let x = 1
let s = case x
of 1: "one"
of 2: "two"
else: "other"
echo s
984デフォルトの名無しさん
2021/08/22(日) 03:25:32.61ID:0Cz6ueFz985デフォルトの名無しさん
2021/08/22(日) 03:27:54.79ID:0Cz6ueFz >>970
仕様バグがない
Rust の以下の挙動は全く理解ができません。
fn main() {
let x = 'x';
let c = 'c';
match c {
// x: c c: c
x => println!("x: {} c: {}", x, c),
}
// x: x
println!("x: {}", x)
}
普通 x にマッチすると思わないでしょこれ。
さらにその直後 x が 'c' に変わってるとか予想だにしませんよ。
まぁ普通はこんな書き方しないと思いますがこんな調子ではどこでどうハマるか予測不可能です恐ろしすぎます。
Nim はこんな書き方そもそも出来ません。
仕様バグがない
Rust の以下の挙動は全く理解ができません。
fn main() {
let x = 'x';
let c = 'c';
match c {
// x: c c: c
x => println!("x: {} c: {}", x, c),
}
// x: x
println!("x: {}", x)
}
普通 x にマッチすると思わないでしょこれ。
さらにその直後 x が 'c' に変わってるとか予想だにしませんよ。
まぁ普通はこんな書き方しないと思いますがこんな調子ではどこでどうハマるか予測不可能です恐ろしすぎます。
Nim はこんな書き方そもそも出来ません。
986デフォルトの名無しさん
2021/08/22(日) 03:29:07.58ID:Tp7nysKx 必死にならないといけないほどゴミってことだろう
987デフォルトの名無しさん
2021/08/22(日) 03:31:48.58ID:0Cz6ueFz >>970
コンパイラがケチくさくない
nim c -r hoge
これで hoge.nim をコンパイルします。
拡張子なんて指定する必要ありません。
-r で実行もします。
Rust の場合
rustc hoge <- ダメ
コンパイルと同時に実行しようと思ったら
rustc hoge.rs && ./hoge
うーん・・・
コンパイラがケチくさくない
nim c -r hoge
これで hoge.nim をコンパイルします。
拡張子なんて指定する必要ありません。
-r で実行もします。
Rust の場合
rustc hoge <- ダメ
コンパイルと同時に実行しようと思ったら
rustc hoge.rs && ./hoge
うーん・・・
988デフォルトの名無しさん
2021/08/22(日) 03:35:33.10ID:XDtR+zkG989デフォルトの名無しさん
2021/08/22(日) 03:35:43.46ID:JES5Vdct 某ブログのコピペじゃん
あのブログ主に恨みでもあるの?
あのブログ主に恨みでもあるの?
990デフォルトの名無しさん
2021/08/22(日) 03:39:33.33ID:0Cz6ueFz >>970
実行速度・メモリ使用量・ファイルサイズが小さい
Rust と比べて Nim の実効速度はどっこいかむしろ速いです。
Rust はこんだけイライラする書き方を強制されるにも関わらずたいして速くないとかもう哀れすぎます。
コンパイル後のファイルサイズは話にならないレベルで比べ物になりません。
fizzbuzz の例(FizzBuzz を無駄にベンチマークしてみた By Nim、golang、Rust、Crystal、その他 - 強まっていこう)で言うと
項目 Nim Rust
実行速度 0.37s 0.44s
ファイルサイズ 82K 3.4M
メモリ 356K 900K
こんな感じです。
実行速度・メモリ使用量・ファイルサイズが小さい
Rust と比べて Nim の実効速度はどっこいかむしろ速いです。
Rust はこんだけイライラする書き方を強制されるにも関わらずたいして速くないとかもう哀れすぎます。
コンパイル後のファイルサイズは話にならないレベルで比べ物になりません。
fizzbuzz の例(FizzBuzz を無駄にベンチマークしてみた By Nim、golang、Rust、Crystal、その他 - 強まっていこう)で言うと
項目 Nim Rust
実行速度 0.37s 0.44s
ファイルサイズ 82K 3.4M
メモリ 356K 900K
こんな感じです。
991デフォルトの名無しさん
2021/08/22(日) 03:47:12.59ID:hHgYpZEm992デフォルトの名無しさん
2021/08/22(日) 05:36:27.85ID:oQP1YKwm Nimいいじゃん
993デフォルトの名無しさん
2021/08/22(日) 06:37:58.59ID:4TxjgFbr さすがに騙される人はいないでしょう
ここまで荒らしがひどいなら次スレはNimを外した方がいいかもね
ここまで荒らしがひどいなら次スレはNimを外した方がいいかもね
994デフォルトの名無しさん
2021/08/22(日) 06:41:37.05ID:JES5Vdct 第二プログラミング言語として Rust はオススメしません Nim をやるのです
っていう2017年のクソブログ記事のコピペ
っていう2017年のクソブログ記事のコピペ
995デフォルトの名無しさん
2021/08/22(日) 07:47:29.46ID:U2zX42Ts 流れぶった切って悪いけど
TypeScriptとかいうクソ言語みんなよく使えるねあんなに気持ち悪い型付けなのに
こんなクソ言語使うならvanillaのが遥かにマシだからPureScript行った
TypeScriptとかいうクソ言語みんなよく使えるねあんなに気持ち悪い型付けなのに
こんなクソ言語使うならvanillaのが遥かにマシだからPureScript行った
996デフォルトの名無しさん
2021/08/22(日) 07:52:45.12ID:U2zX42Ts Reason or RescriptがOCaml構文まんまで使えたら使ってたのにRescriptの開発者本当ろくな事しない
これからWebViewアプリ全般がPWA当たり前になるだろうけど
もしPureScriptが廃れるならもうjs諦めてWebASM系に行くしかないな…
これからWebViewアプリ全般がPWA当たり前になるだろうけど
もしPureScriptが廃れるならもうjs諦めてWebASM系に行くしかないな…
997デフォルトの名無しさん
2021/08/22(日) 08:25:10.09ID:ZD+Tc3uA 普通にバニラ+WASMでPWAの時代ですよ
998デフォルトの名無しさん
2021/08/22(日) 08:28:08.71ID:U2zX42Ts999デフォルトの名無しさん
2021/08/22(日) 08:30:16.05ID:ksVD5eTg みなさんWasmは何で書いていますか?
あたしはRust
あたしはRust
1000デフォルトの名無しさん
2021/08/22(日) 08:35:54.12ID:0Cz6ueFz >>991
>Rustはバイナリサイズも小さく出来ます
>だから組み込み分野でもRustが強いわけです
バカ丸出し
Nimは標準実装されたnimコンパイラが強力なマクロで
最適化されたCのソースコードを吐き出して、Cコンパイラ
で極小バイナリまで生成するから、コンパイルするだけで
後はプログラマがする仕事が無いので怠けててもいい
Rustは標準実装されたコンパイラでコンパイルするだけでは
超巨大なバイナリを生成するので、最適化せれたチューニング
を施して小さなバイナリを生成しなければならないから
プログラマの仕事が増えて怠けられない
>Rustはバイナリサイズも小さく出来ます
>だから組み込み分野でもRustが強いわけです
バカ丸出し
Nimは標準実装されたnimコンパイラが強力なマクロで
最適化されたCのソースコードを吐き出して、Cコンパイラ
で極小バイナリまで生成するから、コンパイルするだけで
後はプログラマがする仕事が無いので怠けててもいい
Rustは標準実装されたコンパイラでコンパイルするだけでは
超巨大なバイナリを生成するので、最適化せれたチューニング
を施して小さなバイナリを生成しなければならないから
プログラマの仕事が増えて怠けられない
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 489日 17時間 29分 52秒
新しいスレッドを立ててください。
life time: 489日 17時間 29分 52秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 【制服】中高生の「制服代」が中1は約8000円、高1は約1万円上昇…授業料無償でも重い「教育費の家計負担」とどう向き合えばいい? [少考さん★]
- 【東京】赤坂サウナ火事2人死亡 サウナ室のドアノブ外れ閉じ込められた可能性 ★8 [nita★]
- EU、エンジン車禁止見直しへ 35年以降も条件付き販売容認―日本勢に追い風 [蚤の市★]
- 中国国防省が再反論 SNSで公開した音声とは“別の通報”で日本に訓練の時間や海域を通報したと主張★4 [夜のけいちゃん★]
- 「机の裏に変なものがくっついてる!」「ほんとだね(カメラ回収)」→6日後に男性教員(40)を逮捕「10年以上前から女児盗撮繰り返した」 [Hitzeschleier★]
- 【ドアノブ外れ】東京・赤坂の“個室サウナ店夫婦死亡火災” 非常用ボタンの電源が切れていた可能性 [nita★]
- どうせこれもベトナム人
- 🏡👊😅👊なにここ珍百景👊😅👊🏡
- テストケース作るの楽しい
- 高市早苗「国連で中国がまた撤回しろ言ってきたからその場で反論したった」反論内容が全然反論になってない件 [624898991]
- たまにAV女優にガチ恋してる人いるでしょ
- 檜山沙耶(おさや)「夫にダメ出しばかりされて、疲れちゃったな…😢」離婚危機か? [153490809]
