スレタイ以外の言語もok
前スレ
次世代言語21 Go Nim Rust Swift Kotlin TypeScript
https://mevius.5ch.net/test/read.cgi/tech/1587276362/
次世代言語22 Go Nim Rust Swift Kotlin TypeScript
■ このスレッドは過去ログ倉庫に格納されています
2021/08/22(日) 08:59:03.31ID:QorwbXcj
376デフォルトの名無しさん
2021/11/02(火) 08:27:57.62ID:65SbHznP377デフォルトの名無しさん
2021/11/02(火) 08:34:53.92ID:dHCyhX6F >>375
せや、あんたが優勝や
せや、あんたが優勝や
378デフォルトの名無しさん
2021/11/02(火) 08:39:57.46ID:yi7goDxw このクズは誰も言って無い事を言い出す、「他の言語のtraitとは同じ」「Rustで実装できない」
こんなことは誰も言ってない。
おまえはさ、Rustの発展にも、会社にも、社会にも邪魔だから消えろよ?おまえみたいのは、まだ技術が
浅く新しい人が入ってくる障害だからね
こんなことは誰も言ってない。
おまえはさ、Rustの発展にも、会社にも、社会にも邪魔だから消えろよ?おまえみたいのは、まだ技術が
浅く新しい人が入ってくる障害だからね
379デフォルトの名無しさん
2021/11/02(火) 10:07:28.88ID:A2ISzYRE380デフォルトの名無しさん
2021/11/02(火) 11:09:50.76ID:cXpPn69w 人の話を聞くのは正しいことかもしれないが
つまらない話を禁止したり面白い話を強制するぐらいなら人の話を聞かない方が正しい
つまらない話を禁止したり面白い話を強制するぐらいなら人の話を聞かない方が正しい
381デフォルトの名無しさん
2021/11/02(火) 11:15:37.18ID:Svesn2Xo 両方とも気持ち悪いなと思ってたら
もう一人気持ち悪いのが出てきたww
いつもの次世代wスレ
もう一人気持ち悪いのが出てきたww
いつもの次世代wスレ
382デフォルトの名無しさん
2021/11/02(火) 11:48:12.43ID:Hfhc0VzY また違う人物のふりして出現か、傍から見てる人が「お前は」なんてイキナリ怒り心頭顔真っ赤で言うかよ。
おめーがつまんねえから
おめーがつまんねえから
383デフォルトの名無しさん
2021/11/02(火) 12:12:25.90ID:cXpPn69w C++のtemplate引数はダックタイピング
ダックタイピングは気持ち悪い
HaskellとRustは気持ち悪くない
マクロ引数の問題はtemplate引数よりも更に気持ち悪い
ダックタイピングは気持ち悪い
HaskellとRustは気持ち悪くない
マクロ引数の問題はtemplate引数よりも更に気持ち悪い
384デフォルトの名無しさん
2021/11/02(火) 12:29:54.01ID:LR6fq+wY Haskellを悪く言うやつを見たことがない
もう全部Haskellでいいよ
もう全部Haskellでいいよ
385デフォルトの名無しさん
2021/11/02(火) 13:43:18.32ID:aJCYG77w C++もね、conceptでだいぶマシになったんだけどね
そもそもどれだけの環境でC++20が使えるんだという話をされるとぐうの音も出なくなる
そもそもどれだけの環境でC++20が使えるんだという話をされるとぐうの音も出なくなる
386デフォルトの名無しさん
2021/11/02(火) 14:57:01.19ID:jqcpDrr+387デフォルトの名無しさん
2021/11/02(火) 15:36:03.35ID:px0qcy1y 3人いようが4人いようがそれ以上でも
描き込み全部気持ち悪い事実は変わらない
描き込み全部気持ち悪い事実は変わらない
388デフォルトの名無しさん
2021/11/02(火) 16:14:12.44ID:TM2Ai9P9 お前らが気持ち悪さに敏感なのは良いことだと思う
気持ち悪さの応酬をして平気なツラしてるような地獄のスレもある
気持ち悪さの応酬をして平気なツラしてるような地獄のスレもある
389デフォルトの名無しさん
2021/11/02(火) 18:13:46.42ID:4qET4FIO Nim言語にもconceptがあります。(まだexperimentalだけど)
https://nim-lang.org/docs/manual_experimental.html#concepts
conceptやtype classを使ってgenerics(c++のtemplateに相当)の引数に指定できる型を制限すれば気持ち悪さを軽減できるか思います。
けどNimのseq[T](C++のstd:::vector<T>、Rustのstd::Vec<T>に相当)のようなコンテナ型にはコピー可能な型なら何でも指定できるわけですが、こういうのが気持ち悪いと言われても指定できる型を限定すれば不便になるだけだと思うのですが。
https://nim-lang.org/docs/manual_experimental.html#concepts
conceptやtype classを使ってgenerics(c++のtemplateに相当)の引数に指定できる型を制限すれば気持ち悪さを軽減できるか思います。
けどNimのseq[T](C++のstd:::vector<T>、Rustのstd::Vec<T>に相当)のようなコンテナ型にはコピー可能な型なら何でも指定できるわけですが、こういうのが気持ち悪いと言われても指定できる型を限定すれば不便になるだけだと思うのですが。
390デフォルトの名無しさん
2021/11/02(火) 22:59:17.06ID:N6sgsEFk Nimの並列ってどうなん?何か特徴有ったりする?
391デフォルトの名無しさん
2021/11/03(水) 11:54:22.69ID:Klx8o89d ポケモンしか見つからんのですが
392デフォルトの名無しさん
2021/11/03(水) 12:42:45.74ID:JMRJWcyj キミに決め・・・られないw
393デフォルトの名無しさん
2021/11/03(水) 15:41:03.34ID:M0DzS1St 言語が気持ち悪いんじゃない
俺も含めおまいらが全員気持ち悪いんです。次世代言語と銘打ってるのにあの言語はこの機能がないからゴミだ
あの言語は(高尚な)Haskellが元だ、などなど。ポジティブな意見ではなく、ネガティブ丸出し全開なんです。
RFC for anonymous variant types, a minimal ad-hoc sum type
https://github.com/rust-lang/rfcs/pull/2587
高速ゼロコスト言語の次世代言語Rustだってこういう提案はされて、別言語の悪口なんて出てこないんです
俺も含めおまいらが全員気持ち悪いんです。次世代言語と銘打ってるのにあの言語はこの機能がないからゴミだ
あの言語は(高尚な)Haskellが元だ、などなど。ポジティブな意見ではなく、ネガティブ丸出し全開なんです。
RFC for anonymous variant types, a minimal ad-hoc sum type
https://github.com/rust-lang/rfcs/pull/2587
高速ゼロコスト言語の次世代言語Rustだってこういう提案はされて、別言語の悪口なんて出てこないんです
394デフォルトの名無しさん
2021/11/03(水) 15:54:38.31ID:JMRJWcyj ネガってるのとそのレスに極端な反応してるのは他人を基地外呼ばわりしてる1人しかいないと思うんだけどw
他の人は他言語と正確に比較してるだけで否定的な論調もなく他人の趣味・嗜好を尊重してるw
他の人は他言語と正確に比較してるだけで否定的な論調もなく他人の趣味・嗜好を尊重してるw
395デフォルトの名無しさん
2021/11/03(水) 21:11:03.58ID:Jc+nuIwU バグ報告したら不正アクセスだって言われるのと似たような現象
396デフォルトの名無しさん
2021/11/03(水) 23:58:41.87ID:UFPQir4N まあ仕事で使う上では言語の強みより弱みや落とし穴を知っとく方が価値あるわな。
どうせ選ぶ権利ない場合がほとんどだし。
その辺が学生、アマチュアなんかとの差だろうね。
どうせ選ぶ権利ない場合がほとんどだし。
その辺が学生、アマチュアなんかとの差だろうね。
397デフォルトの名無しさん
2021/11/04(木) 03:09:20.83ID:DB49gC4z >>390
Nimでは競合状態を防ぐためにスレッド毎にガーベージコレクタで管理されたヒープメモリを持っていて、
グローバル変数以外スレッド間で共有できなくなっています。
そのおかげでガーベージコレクタが効率よく動きます。
コンパイル時にスレッド間でヒープメモリを共有していないかチェックします。
詳しくはこちら
nim-lang.org/docs/manual.html#threads
Channelを使ってスレッド間でデータのやりとりができます。
nim-lang.org/docs/channels_builtin.html
試験段階ですがthreadpoolモジュールにあるParallelとSpawnを使って並列処理できます。
nim-lang.org/docs/manual_experimental.html#parallel-amp-spawn
nim-lang.org/docs/threadpool.html
Nimの標準ライブラリじゃないのですがWeaveというパフォーマンス重視なライブラリもあります。
github.com/mratsim/weave
Nimでは競合状態を防ぐためにスレッド毎にガーベージコレクタで管理されたヒープメモリを持っていて、
グローバル変数以外スレッド間で共有できなくなっています。
そのおかげでガーベージコレクタが効率よく動きます。
コンパイル時にスレッド間でヒープメモリを共有していないかチェックします。
詳しくはこちら
nim-lang.org/docs/manual.html#threads
Channelを使ってスレッド間でデータのやりとりができます。
nim-lang.org/docs/channels_builtin.html
試験段階ですがthreadpoolモジュールにあるParallelとSpawnを使って並列処理できます。
nim-lang.org/docs/manual_experimental.html#parallel-amp-spawn
nim-lang.org/docs/threadpool.html
Nimの標準ライブラリじゃないのですがWeaveというパフォーマンス重視なライブラリもあります。
github.com/mratsim/weave
398デフォルトの名無しさん
2021/11/04(木) 07:19:03.96ID:6aa/TylF >>397
スドップザワールドもスレッド単位でしか起こらんということなん?
スドップザワールドもスレッド単位でしか起こらんということなん?
399デフォルトの名無しさん
2021/11/04(木) 08:00:34.54ID:iBQltfW1 >>385
現場で使えわせてくれるのはあと2,3年はかかりそうだな
現場で使えわせてくれるのはあと2,3年はかかりそうだな
400デフォルトの名無しさん
2021/11/04(木) 08:47:03.06ID:GROwH+E9 >>398
基本的にはストップザワールドは発生しないマーク&スイープガーベージコレクタが今はデフォルト(refc)
ガーベージコレクタを選べるのでARC(rustと同じ)を選べばストップザワールドは無いが循環参照はリークする。
(これはrustも同じ)循環参照をガーベージコレクションするARC+サイクルコレクターがORCなって、ストップ
は起こらないが、少しパフォーマンスが落ちる。C系と相性の良いboehmとか、dllを作ってgoとリンクさせる
ようならストップザワールドが発生するガーベージコレクタを使用する場合がある
Multi-paradigm Memory Management Strategies(中段当たりの表)
https://nim-lang.org/docs/gc.html
基本的にはストップザワールドは発生しないマーク&スイープガーベージコレクタが今はデフォルト(refc)
ガーベージコレクタを選べるのでARC(rustと同じ)を選べばストップザワールドは無いが循環参照はリークする。
(これはrustも同じ)循環参照をガーベージコレクションするARC+サイクルコレクターがORCなって、ストップ
は起こらないが、少しパフォーマンスが落ちる。C系と相性の良いboehmとか、dllを作ってgoとリンクさせる
ようならストップザワールドが発生するガーベージコレクタを使用する場合がある
Multi-paradigm Memory Management Strategies(中段当たりの表)
https://nim-lang.org/docs/gc.html
401デフォルトの名無しさん
2021/11/04(木) 10:57:37.34ID:lAAyXHqu 何を見ても聞いてもnimには一切興味がわかない・・・
なんというか特徴がなさすぎる
なんというか特徴がなさすぎる
402デフォルトの名無しさん
2021/11/04(木) 11:41:59.42ID:vVwsjj5J Haskellとかもそうだけどオタクの中のオタクの間だけで持て囃されてる言語には近寄らない方が吉
403デフォルトの名無しさん
2021/11/04(木) 12:00:51.59ID:tx1xmHYz Rustこそ至高の言語、NimとHaskellなんて糞、GoはまあGoogleがやってるから認めるけど
言語的にはジェネリクスも無い90年代の時代遅れ
NimだとかHaskellだとか、糞気持ち悪いオタクの匂いがする。どっちもゴミ
SwiftとKotlin、そしてTypeScriptともにスマホで使う
言語的にはジェネリクスも無い90年代の時代遅れ
NimだとかHaskellだとか、糞気持ち悪いオタクの匂いがする。どっちもゴミ
SwiftとKotlin、そしてTypeScriptともにスマホで使う
404デフォルトの名無しさん
2021/11/04(木) 12:19:18.72ID:wrxqAvPZ rustはこれからjavaになるんだろ
405デフォルトの名無しさん
2021/11/04(木) 13:07:01.54ID:UnTZr4yd >>403
Nimも悪くないとは思うけど
欲しい基本がまだexperimentalなど多いのと人口の少なさ
あと競合しているRustがコンパイル通ればメモリ安全性保証してるので
結論はRustでいいじゃんとなりました
Nimも悪くないとは思うけど
欲しい基本がまだexperimentalなど多いのと人口の少なさ
あと競合しているRustがコンパイル通ればメモリ安全性保証してるので
結論はRustでいいじゃんとなりました
406デフォルトの名無しさん
2021/11/04(木) 13:17:36.87ID:fybR+JX+ Goが良いのは、関連エコシステムと、あと強いていうなら並列処理らへんぐらいかな。
プログラミング言語としてはさすがにしょぼすぎるけど、エコシステムが優れてるからなんだかんだ便利。
PythonとかJavaScriptとかはエコシステムが最強な言語の一つだよね。
逆にD言語とかはエコシステムがウンコすぎて使い物にならなかった。
プログラミング言語としてはさすがにしょぼすぎるけど、エコシステムが優れてるからなんだかんだ便利。
PythonとかJavaScriptとかはエコシステムが最強な言語の一つだよね。
逆にD言語とかはエコシステムがウンコすぎて使い物にならなかった。
407デフォルトの名無しさん
2021/11/04(木) 13:19:04.19ID:bqbD3Nhm Nimはなんか中庸って感じがする
そこにピッタリはまる人にはいいんだろうけど
もっと楽に書きたい人はGo、ちゃんと書きたい人はRustに流れてしまって
あまりユーザが増えないのではないかな
そこにピッタリはまる人にはいいんだろうけど
もっと楽に書きたい人はGo、ちゃんと書きたい人はRustに流れてしまって
あまりユーザが増えないのではないかな
408デフォルトの名無しさん
2021/11/04(木) 15:00:22.37ID:OXP1jNWB オタク臭いやつと臭くないやつの違いは一般人でもわかる
TypescriptとGoとNimの違いがわかるのは重度のオタクだけだろ
TypescriptとGoとNimの違いがわかるのは重度のオタクだけだろ
409デフォルトの名無しさん
2021/11/04(木) 15:11:34.22ID:lAAyXHqu やっぱ言語の普及には有名企業の後押しがいるんか?でもrustってなんか後押しあったっけ?
まあ案件レベルだと全然ないけどw
まあ案件レベルだと全然ないけどw
410デフォルトの名無しさん
2021/11/04(木) 15:13:41.91ID:F8fi5yeE Nim少し見てみたけどインデントか、ちょっと苦手かも
411デフォルトの名無しさん
2021/11/04(木) 15:18:21.88ID:fybR+JX+ 大企業の後押しは必須ではないだろうけど、後押しあると強い、というか、やっぱエコシステムが育ちやすいと思う。
すぐに潰されない言語だ、って思って他の企業とかも投資できるからかな。
TypeScriptが人気あるせいか、Dartはなんかイマイチ広まりきれてない感じだったけどね。
Rustは新規ミドルウェアを作るような現場では需要あるんじゃないの?
すぐに潰されない言語だ、って思って他の企業とかも投資できるからかな。
TypeScriptが人気あるせいか、Dartはなんかイマイチ広まりきれてない感じだったけどね。
Rustは新規ミドルウェアを作るような現場では需要あるんじゃないの?
412デフォルトの名無しさん
2021/11/04(木) 15:26:36.67ID:8l/Jusr1 いまRust推しの大企業といえばAmazonだな
MozillaからリストラされたRustコミッタを相当取り込んでるし
影響力が強すぎるんじゃないかと不安視されるくらい
MozillaからリストラされたRustコミッタを相当取り込んでるし
影響力が強すぎるんじゃないかと不安視されるくらい
413デフォルトの名無しさん
2021/11/04(木) 15:26:54.42ID:DB49gC4z これは他のコンパイル言語にはあまりない特徴だと思うけど、Nim言語はスクリプト言語のように使うこともできる。
Nimはコンパイル時に実行されるコードをNimに埋め込まれたvirtual machine上で実行するんだが
このVMを他の用途にも使うことができる。
コンパイルに使う設定ファイルやnimble(RustのCargoのようなもの)ファイルをNimScriptで記述できる。
nim-lang.org/docs/nims.html
github.com/nim-lang/nimble
Nimのコードを拡張子がnimsとなるようにファイルに保存してnim myscript.nimsと実行すれば
実行ファイルを生成せずに実行される。
NimScriptにはFFIが使えないとか制限があるがファイル操作や他の実行ファイルを呼ぶことができるので
shellスクリプトやバッチファイルの代わりに使うことができる。
C/C++だとプログラムにスクリプト言語を埋め込むときはPythonとかLuaを使うことが多いと思うけど
Nim言語ではNimScriptを埋め込むことが可能。
github.com/beef331/nimscripter
Nimはコンパイル時に実行されるコードをNimに埋め込まれたvirtual machine上で実行するんだが
このVMを他の用途にも使うことができる。
コンパイルに使う設定ファイルやnimble(RustのCargoのようなもの)ファイルをNimScriptで記述できる。
nim-lang.org/docs/nims.html
github.com/nim-lang/nimble
Nimのコードを拡張子がnimsとなるようにファイルに保存してnim myscript.nimsと実行すれば
実行ファイルを生成せずに実行される。
NimScriptにはFFIが使えないとか制限があるがファイル操作や他の実行ファイルを呼ぶことができるので
shellスクリプトやバッチファイルの代わりに使うことができる。
C/C++だとプログラムにスクリプト言語を埋め込むときはPythonとかLuaを使うことが多いと思うけど
Nim言語ではNimScriptを埋め込むことが可能。
github.com/beef331/nimscripter
414デフォルトの名無しさん
2021/11/04(木) 15:32:39.45ID:DB49gC4z >>410
どの言語を書く時でも基本的にはインデントするから
インデントでコードブロックを作ることによってソースコードの中に
{}とか;が頻繁にでてこないようにしたほうがソースコードがすっきりして読みやすくなると思うんだけどな。
どの言語を書く時でも基本的にはインデントするから
インデントでコードブロックを作ることによってソースコードの中に
{}とか;が頻繁にでてこないようにしたほうがソースコードがすっきりして読みやすくなると思うんだけどな。
415デフォルトの名無しさん
2021/11/04(木) 15:46:29.06ID:4stXfNK+ >>414
ルールで言うならyamlみたいなインデント or カッコの両対応がいいんだけどねぇ。そんなの無いけど。
ルールで言うならyamlみたいなインデント or カッコの両対応がいいんだけどねぇ。そんなの無いけど。
416デフォルトの名無しさん
2021/11/04(木) 15:47:23.54ID:eo9m+3ij 行頭に } って書いてあると終わった感がある
417デフォルトの名無しさん
2021/11/04(木) 15:51:50.87ID:fybR+JX+ Rubyみたいな do end もそんなに悪くなかったし、エディタのサポートがあれば慣れの問題かなあ、って気がしてしまう
418デフォルトの名無しさん
2021/11/04(木) 16:30:26.61ID:62sZMwyh419デフォルトの名無しさん
2021/11/04(木) 16:40:09.48ID:oJ9Lbupd int hoge = 1;
int hage = 2;
if ... {
hoge += 3;
hage = 4;
}
理論上は見た目とコンピューター的なパース処理を一致させる考えがPythonやNim、CoffeeScriptなどの
オフサイドルールという書き方。
上記の例でCなどから、主流で余分な空白を無視して波括弧 { と } でブロックを表すという記法が、C#や
Java、Rust、Javascriptなど。もう1つは、begin-endでブロック的なスコープを表す記法で、これは
Pascal/Delphi、Ruby、PL/SQL・TSQLなど。他は純関数言語でErlangやHaskellなどはこの限りではない。
Cなどの記法は、空白あるいはタブがどのような形でも{}が対応していて、;が1手続きの終わりであり
プログラマの好みによって、字下げ・字上げ・空白することが可能であるという利点がある。しかしながら
上のように書く人は居ない。{}の対応するかっこを上下位置で揃える古いK&R的な書き方をする人はいるが
近年のgolangのように、きっちりフォーマットする(goだとエラーになる場合もある)
Python的な見た目に拒否感が起こる人は、「空白字下げの入れ忘れがバグにつながるのでは?」と言う。
for ... :
hoge += 6
hage = 7
しかしながら、上のように書く人は存在するがあまり読みづらく、ループに入れるなら字下げすべきだし
入れないのであれば、forの終わりに1行空行を入れる。Rubyは厳密にはxxx-endだけではなく、{}も
あって意味が違うのだが長くなりすぎるので説明しない。
もう1つはIDEなどがソースコードを勝手に整形するので、スペースではない明確な表示文字で区切りたい
という人もいる。当然このようなことを言い出したらキリがないが、最終的には好みで言語を選ぶわけで
無く仕事なら無条件であり、慈悲も和解もない。
int hage = 2;
if ... {
hoge += 3;
hage = 4;
}
理論上は見た目とコンピューター的なパース処理を一致させる考えがPythonやNim、CoffeeScriptなどの
オフサイドルールという書き方。
上記の例でCなどから、主流で余分な空白を無視して波括弧 { と } でブロックを表すという記法が、C#や
Java、Rust、Javascriptなど。もう1つは、begin-endでブロック的なスコープを表す記法で、これは
Pascal/Delphi、Ruby、PL/SQL・TSQLなど。他は純関数言語でErlangやHaskellなどはこの限りではない。
Cなどの記法は、空白あるいはタブがどのような形でも{}が対応していて、;が1手続きの終わりであり
プログラマの好みによって、字下げ・字上げ・空白することが可能であるという利点がある。しかしながら
上のように書く人は居ない。{}の対応するかっこを上下位置で揃える古いK&R的な書き方をする人はいるが
近年のgolangのように、きっちりフォーマットする(goだとエラーになる場合もある)
Python的な見た目に拒否感が起こる人は、「空白字下げの入れ忘れがバグにつながるのでは?」と言う。
for ... :
hoge += 6
hage = 7
しかしながら、上のように書く人は存在するがあまり読みづらく、ループに入れるなら字下げすべきだし
入れないのであれば、forの終わりに1行空行を入れる。Rubyは厳密にはxxx-endだけではなく、{}も
あって意味が違うのだが長くなりすぎるので説明しない。
もう1つはIDEなどがソースコードを勝手に整形するので、スペースではない明確な表示文字で区切りたい
という人もいる。当然このようなことを言い出したらキリがないが、最終的には好みで言語を選ぶわけで
無く仕事なら無条件であり、慈悲も和解もない。
420デフォルトの名無しさん
2021/11/04(木) 16:51:58.52ID:F8fi5yeE >>414
インデントはフォーマッターに任せる温い環境に慣れすぎて自分でやるのは辛ぽよ
インデントはフォーマッターに任せる温い環境に慣れすぎて自分でやるのは辛ぽよ
421デフォルトの名無しさん
2021/11/04(木) 17:02:13.15ID:oJ9Lbupd そしてなぜPythonのようなCとC++の、ある意味で伝統を受け継がない物が出来たかと言えば演算子の順序で
a = b + c * dと書いた場合、c * d が優先されるのだが、ニワカは a = b + ( c * d )と書いたりする。
これをプログラマは冗長、あるいはダサいと言う風潮が出来て、「余計なカッコはカッコ悪い」となった。
ここから、whileやifに普通の丸カッコを付けない言語が多くなる。v = if true { 5 } else { 6 };
このように評価式にはtrueで、()を付けない、これが長い評価式の行になったとしても同じ
いわばカッコ言語と称される言語は、Pythonから見るとカッコ(悪い)言語になり、逆に伝統的なプログラマから
見ると、空白がブロックを左右するいい加減な言語に見える。よって又しても慈悲も和解もない
a = b + c * dと書いた場合、c * d が優先されるのだが、ニワカは a = b + ( c * d )と書いたりする。
これをプログラマは冗長、あるいはダサいと言う風潮が出来て、「余計なカッコはカッコ悪い」となった。
ここから、whileやifに普通の丸カッコを付けない言語が多くなる。v = if true { 5 } else { 6 };
このように評価式にはtrueで、()を付けない、これが長い評価式の行になったとしても同じ
いわばカッコ言語と称される言語は、Pythonから見るとカッコ(悪い)言語になり、逆に伝統的なプログラマから
見ると、空白がブロックを左右するいい加減な言語に見える。よって又しても慈悲も和解もない
422デフォルトの名無しさん
2021/11/04(木) 17:14:28.06ID:MjRPJM3Z { } な言語ばかりやってきたので
インデント言語について素朴な質問です
スコープブロックはどのように作るのですか?
例えばスコープブロック作成のために数行だけを { } の中に閉じ込めたりするのですが
インデント言語では括弧も何もなく数行だけを深くインデントするのですか?
インデント言語について素朴な質問です
スコープブロックはどのように作るのですか?
例えばスコープブロック作成のために数行だけを { } の中に閉じ込めたりするのですが
インデント言語では括弧も何もなく数行だけを深くインデントするのですか?
423デフォルトの名無しさん
2021/11/04(木) 17:15:03.57ID:DB49gC4z >>406
>>411
NimはC, C++, pythonで書かれた豊富なライブラリを簡単に使うことができるようにすることで
ライブラリの少なさを補っている。
Cのライブラリを使える言語は結構あるけどNimはバックエンドにC++コンパイラを使うこともできるので
C++で書かれたライブラリも使うことができる。
c2nimを使えばC/C++のヘッダーファイルを自動的にNimのコードに変換してくれる。
C/C++のコードを完全にNimのコードに変換できるわけではないが
NimからC/C++のコードを呼び出すのに必要なコードを出してくれる。
github.com/nim-lang/c2nim
ここにあるコードのようにimportcppプラグマを使えば
C++のstd::mapやstd::vectorのようなテンプレートクラスをNimのgenericsのように使うことも可能。
nim-lang.org/docs/manual.html#importcpp-pragma-importcpp-for-objects
NimからPythonの関数を読んだりNimでPythonモジュールを作れるようにするライブラリ
github.com/yglukhov/nimpy
Nimのコードをマクロを使ってコンパイル時にGLSLのコードに変換するライブラリ
github.com/treeform/shady
>>411
NimはC, C++, pythonで書かれた豊富なライブラリを簡単に使うことができるようにすることで
ライブラリの少なさを補っている。
Cのライブラリを使える言語は結構あるけどNimはバックエンドにC++コンパイラを使うこともできるので
C++で書かれたライブラリも使うことができる。
c2nimを使えばC/C++のヘッダーファイルを自動的にNimのコードに変換してくれる。
C/C++のコードを完全にNimのコードに変換できるわけではないが
NimからC/C++のコードを呼び出すのに必要なコードを出してくれる。
github.com/nim-lang/c2nim
ここにあるコードのようにimportcppプラグマを使えば
C++のstd::mapやstd::vectorのようなテンプレートクラスをNimのgenericsのように使うことも可能。
nim-lang.org/docs/manual.html#importcpp-pragma-importcpp-for-objects
NimからPythonの関数を読んだりNimでPythonモジュールを作れるようにするライブラリ
github.com/yglukhov/nimpy
Nimのコードをマクロを使ってコンパイル時にGLSLのコードに変換するライブラリ
github.com/treeform/shady
424デフォルトの名無しさん
2021/11/04(木) 17:36:48.75ID:d2BeURFt >>422
Pythonだと、PEP340という、Anonymous Block Statementsの提案がなされていたが
block expr as x: # expr as x はおそらく省略できる
...
このように書ける提案だったがリジェクトされて、PEP343となりwithブロックになった。
with open(path) as f:
...
ほかの言語だとこのblockという無名または名前付きのスコープが作れるものが多いと思う
block "A sealed": # 文字列は名前で省略できる
...
そうはいっても、以下のようにすればブロックは勝手にできるあまり意味はない。どこかでBLOCK = true
if BLOCK:
...
Pythonだと、PEP340という、Anonymous Block Statementsの提案がなされていたが
block expr as x: # expr as x はおそらく省略できる
...
このように書ける提案だったがリジェクトされて、PEP343となりwithブロックになった。
with open(path) as f:
...
ほかの言語だとこのblockという無名または名前付きのスコープが作れるものが多いと思う
block "A sealed": # 文字列は名前で省略できる
...
そうはいっても、以下のようにすればブロックは勝手にできるあまり意味はない。どこかでBLOCK = true
if BLOCK:
...
425デフォルトの名無しさん
2021/11/04(木) 17:40:02.16ID:d2BeURFt 他にもlabel(?だったか)として名前付きのものもあったな、これは、多重のforなどのbreakで名前が指定できる
426デフォルトの名無しさん
2021/11/04(木) 17:40:29.24ID:lAAyXHqu bindingはどの言語でもあるし簡単に作れるよ
ただ純正コードで書くのと同じくらい適切に運用させるのが困難な場合が多いので、誰もそれが簡単だとは言わない
個人的には正直nimアピールいらんw 何か書かれる度にどんどんnimから離れて行きたくなるw
ただ純正コードで書くのと同じくらい適切に運用させるのが困難な場合が多いので、誰もそれが簡単だとは言わない
個人的には正直nimアピールいらんw 何か書かれる度にどんどんnimから離れて行きたくなるw
427デフォルトの名無しさん
2021/11/04(木) 17:40:46.86ID:DB49gC4z >>422
Nimではblock文/block式というのがあります。
nim-lang.org/docs/manual.html#statements-and-expressions-block-statement
nim-lang.org/docs/manual.html#statements-and-expressions-block-expression
変数aはblock:の下のインデントされたブロッグ内のスコープ内でのみ使えます。
block:
let a = 1
echo a
こんな感じでblockに名前を付けてbreak文を使っていっきにblockから抜けることもできます。
var found = false
block myblock:
for i in 0..3:
for j in 0..3:
if a[j][i] == 7:
found = true
break myblock #forループの上にあるmyblockから抜ける。
echo found
block式を使うとblock文と同じように新しいスコープを作りますがblock内の最後の式がblock式の値になります。
let a = block:
var fib = @[0, 1]
for i in 0..10:
fib.add fib[^1] + fib[^2]
fib # fibの値がこのblock式の値になってaに代入される。
echo a # @[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144] が出力される
Nimではblock文/block式というのがあります。
nim-lang.org/docs/manual.html#statements-and-expressions-block-statement
nim-lang.org/docs/manual.html#statements-and-expressions-block-expression
変数aはblock:の下のインデントされたブロッグ内のスコープ内でのみ使えます。
block:
let a = 1
echo a
こんな感じでblockに名前を付けてbreak文を使っていっきにblockから抜けることもできます。
var found = false
block myblock:
for i in 0..3:
for j in 0..3:
if a[j][i] == 7:
found = true
break myblock #forループの上にあるmyblockから抜ける。
echo found
block式を使うとblock文と同じように新しいスコープを作りますがblock内の最後の式がblock式の値になります。
let a = block:
var fib = @[0, 1]
for i in 0..10:
fib.add fib[^1] + fib[^2]
fib # fibの値がこのblock式の値になってaに代入される。
echo a # @[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144] が出力される
428デフォルトの名無しさん
2021/11/04(木) 17:44:36.59ID:fybR+JX+ nimアピールすごいな。
宣伝したいならQiitaとかでいっぱい記事書いたほうがいいんじゃないかな・・・。
宣伝したいならQiitaとかでいっぱい記事書いたほうがいいんじゃないかな・・・。
429デフォルトの名無しさん
2021/11/04(木) 17:50:32.91ID:d2BeURFt 言語なんて日本だけで流行っても、しょーがないし、流行るとしたら海外で流行らないと、Pythonだって
海外で流行っていて、Rubyの作者が日本人だから、日本ではRubyというかRoRが一色になりかけたのに
Pythonなんて誰もやってなかった(言い杉か)
海外で流行っていて、Rubyの作者が日本人だから、日本ではRubyというかRoRが一色になりかけたのに
Pythonなんて誰もやってなかった(言い杉か)
430デフォルトの名無しさん
2021/11/04(木) 17:54:52.55ID:eo9m+3ij pythonで
a = b*c + d
というスペースの空け方を推奨してて、なるほどと思った
a = b*c + d
というスペースの空け方を推奨してて、なるほどと思った
431デフォルトの名無しさん
2021/11/04(木) 18:01:05.24ID:UnTZr4yd >>427
ブロックも式になって最後の値を返すとか
ブロックで変数スコープがあらたにつくられるとか
Rustなどと一緒だね
あとはRustみたいに変数スコープブロックを抜けると(または変数のライフタイムが尽きると)
ファイルオープン変数だった場合に自動クローズとかもあるのかな?
具体的には、Pythonだとwith、C#だとusing、Goだとdefer、などそれそれ必要なところ
Rustはそういう特殊構文なくて
変数が解放されると自動closeされる
ブロックも式になって最後の値を返すとか
ブロックで変数スコープがあらたにつくられるとか
Rustなどと一緒だね
あとはRustみたいに変数スコープブロックを抜けると(または変数のライフタイムが尽きると)
ファイルオープン変数だった場合に自動クローズとかもあるのかな?
具体的には、Pythonだとwith、C#だとusing、Goだとdefer、などそれそれ必要なところ
Rustはそういう特殊構文なくて
変数が解放されると自動closeされる
432デフォルトの名無しさん
2021/11/04(木) 18:13:51.03ID:DB49gC4z >>431
defer文でcloseできます。
nim-lang.org/docs/manual.html#exception-handling-defer-statement
コードを書けばデストラクタからcloseできるようになるけどNimにデストラクタができたのが最近なんで
標準ライブラリのFileはdefer文使うか自分でcloseを呼ぶ必要があります。
defer文でcloseできます。
nim-lang.org/docs/manual.html#exception-handling-defer-statement
コードを書けばデストラクタからcloseできるようになるけどNimにデストラクタができたのが最近なんで
標準ライブラリのFileはdefer文使うか自分でcloseを呼ぶ必要があります。
433デフォルトの名無しさん
2021/11/04(木) 18:30:25.81ID:MjRPJM3Z Rustはファイルディスクリプタ類を関数を超えて持ち回ったり複雑化しても使い終わると即座に確実にクローズが自動的にされるのが凄いよね
434デフォルトの名無しさん
2021/11/04(木) 18:37:46.92ID:7RmUj5cL それは標準ライブラリがDropトレイとで成り立ってるだけの話で、openとcloseが完全対になるような
リソースならそれで良いがBufWriterの場合とかflushしなければならないし、何回もopen呼んでも良い
ようなリソース管理は、結局は自分で実装しないとならない
リソースならそれで良いがBufWriterの場合とかflushしなければならないし、何回もopen呼んでも良い
ようなリソース管理は、結局は自分で実装しないとならない
435デフォルトの名無しさん
2021/11/04(木) 19:00:18.43ID:UnTZr4yd436デフォルトの名無しさん
2021/11/04(木) 19:33:56.36ID:lAAyXHqu その分とっつきにくいけどな
437デフォルトの名無しさん
2021/11/04(木) 19:53:06.80ID:UnTZr4yd >>436
え?他の言語よりはわかりやすくてとっつきやすい
え?他の言語よりはわかりやすくてとっつきやすい
438デフォルトの名無しさん
2021/11/04(木) 20:10:30.05ID:lAAyXHqu 「rust 難しい」とかで検索すれば出てくるけど、残念ながら世の人々はそうは思わんのだよ
比較的進歩的な人でもそういう意見をよく聞くし、所有権は理解しないわけにいかない基礎だから端折れない
逆にgoではほとんどそういうことがない
比較的進歩的な人でもそういう意見をよく聞くし、所有権は理解しないわけにいかない基礎だから端折れない
逆にgoではほとんどそういうことがない
439デフォルトの名無しさん
2021/11/04(木) 20:22:55.80ID:MjRPJM3Z Goはガベージコレクション言語だから比較の土俵が違うような
さらにGoはプログラミング言語として様々な機能を失いすぎてプログラミングしにくいのが辛いですね
さらにGoはプログラミング言語として様々な機能を失いすぎてプログラミングしにくいのが辛いですね
440デフォルトの名無しさん
2021/11/04(木) 20:26:36.52ID:lAAyXHqu 比較的守備範囲の近い、とっつきやすい言語の例w
441デフォルトの名無しさん
2021/11/04(木) 20:33:45.40ID:iRkMc3Gk 失い過ぎたw
意図して実装してないだけだがw
意図して実装してないだけだがw
442デフォルトの名無しさん
2021/11/04(木) 20:42:10.69ID:UnTZr4yd >>440
Goは守備範囲が狭すぎて違う
Rustの元々の守備範囲はC/C++が使われている領域
その領域に加えてGC無くメモリ安全性の保証によりJavaなどの置き換えにも使われつつある
さらに加えてイテレータ等の現代的なプログラミングスタイルがメインとなってコーディングしやすいためスクリプト言語を含めた幅広い方面からの移行/兼用が起きている
いずれもGoは満たせない要件
Goは守備範囲が狭すぎて違う
Rustの元々の守備範囲はC/C++が使われている領域
その領域に加えてGC無くメモリ安全性の保証によりJavaなどの置き換えにも使われつつある
さらに加えてイテレータ等の現代的なプログラミングスタイルがメインとなってコーディングしやすいためスクリプト言語を含めた幅広い方面からの移行/兼用が起きている
いずれもGoは満たせない要件
443デフォルトの名無しさん
2021/11/04(木) 20:55:34.08ID:wrxqAvPZ だからこれからのコーディングの奴隷はRustで決まりってことなんだろ
444デフォルトの名無しさん
2021/11/04(木) 21:00:15.23ID:lAAyXHqu goとrustならrustの方が守備範囲狭いよw
ひとえに難しいからw
OS周りならC/C++でいいし
現状ではweb周りのごくごく一部の超高速領域を除きrustには置き換わっていない
javaからの置き換えならgoでいい
ひとえに難しいからw
OS周りならC/C++でいいし
現状ではweb周りのごくごく一部の超高速領域を除きrustには置き換わっていない
javaからの置き換えならgoでいい
445デフォルトの名無しさん
2021/11/04(木) 21:09:43.64ID:MjRPJM3Z446デフォルトの名無しさん
2021/11/04(木) 21:16:55.71ID:lAAyXHqu 他rust向きの領域だとdatabaseかなぁ・・・
ただ既存のDBを置き換えるのはなかなか厳しそうw
何かに特化したやつならいいかもねw
ただ既存のDBを置き換えるのはなかなか厳しそうw
何かに特化したやつならいいかもねw
447デフォルトの名無しさん
2021/11/04(木) 21:31:58.67ID:7+L798k8 RustがJavaの代わりってマジか
Scalaみたいな負債の再来か
Scalaみたいな負債の再来か
448デフォルトの名無しさん
2021/11/04(木) 21:36:42.56ID:UnTZr4yd449デフォルトの名無しさん
2021/11/04(木) 21:42:25.68ID:lAAyXHqu450デフォルトの名無しさん
2021/11/04(木) 22:03:32.17ID:C83Gt3We ビルドシステムでGCの動きを気にすることってほぼないけどな。
なんかやばい方向いってるね。
なんかやばい方向いってるね。
451デフォルトの名無しさん
2021/11/04(木) 22:27:26.54ID:lAAyXHqu rustのスポンサー企業一覧
https://foundation.rust-lang.org/members/
プラチナメンバが錚々たる顔ぶれw リンゴおらんw
nimのスポンサー企業一覧
https://nim-lang.org/sponsors.html
https://foundation.rust-lang.org/members/
プラチナメンバが錚々たる顔ぶれw リンゴおらんw
nimのスポンサー企業一覧
https://nim-lang.org/sponsors.html
452デフォルトの名無しさん
2021/11/04(木) 22:47:21.35ID:3s9ShBm/ まあrustは天才向け言語と思うので、コアなところがrust縛りになってくれると安心なところはあるね。goとかnimとかはちょろい分野で頑張れば良い
453デフォルトの名無しさん
2021/11/04(木) 22:51:16.80ID:kgE3GEs9 て、天才ww
454デフォルトの名無しさん
2021/11/04(木) 22:53:26.72ID:fybR+JX+ nimも良い言語だと思うけど、GAFAMみたいなとこがバックアップしてるわけじゃないし、仕事では使う気せえへんなあ。もったいない。
趣味ユーザが使いまくってエコシステムが充実するまで待つしかないな。
趣味ユーザが使いまくってエコシステムが充実するまで待つしかないな。
455デフォルトの名無しさん
2021/11/04(木) 23:11:49.09ID:mYdjk53s >>451
リンゴにはswiftがあるからなあ
リンゴにはswiftがあるからなあ
456デフォルトの名無しさん
2021/11/05(金) 02:15:48.45ID:KGYxGlBy python嫌いだからnimも嫌いなんだわ
457デフォルトの名無しさん
2021/11/05(金) 05:25:56.07ID:Q0weZe1J 嫌いっていうより、ウチの爺らはPythonすら出来なそうだけどね
458デフォルトの名無しさん
2021/11/05(金) 06:52:06.45ID:0gW7V402459デフォルトの名無しさん
2021/11/05(金) 09:11:02.86ID:pAK9gvBl しょーもない見栄張ってるだけだな
460デフォルトの名無しさん
2021/11/05(金) 09:40:04.97ID:ZsL5S5NL サーバーサイドに企業のバックアップなどいらぬ
趣味で弄れない仕様になってる車の内部やスマホのアプリを企業がしっかり作れよ
趣味で弄れない仕様になってる車の内部やスマホのアプリを企業がしっかり作れよ
461デフォルトの名無しさん
2021/11/05(金) 10:28:44.23ID:ShfctMVX Node.jsの話?
462デフォルトの名無しさん
2021/11/05(金) 11:30:58.07ID:pLniUbgZ463デフォルトの名無しさん
2021/11/05(金) 12:57:06.14ID:oXyREoQy 死ぬほど恥ずかしい知ったかだなこれ
464デフォルトの名無しさん
2021/11/05(金) 12:58:33.47ID:MOYeaH5z 新手の自己紹介か?
465デフォルトの名無しさん
2021/11/05(金) 20:37:57.51ID:DvmJ6O3T >>458
国外も国内も大手有名どころはRust採用で大勢が決した感じね
国外も国内も大手有名どころはRust採用で大勢が決した感じね
466デフォルトの名無しさん
2021/11/05(金) 21:28:24.58ID:Xs8oV2Az 国外も国内も全然違うw
467デフォルトの名無しさん
2021/11/06(土) 00:50:02.35ID:iXKnTImN rustもアピールすごいな、内容の無いrust押しもどんどんrustから離れて行きたくなるけど
468デフォルトの名無しさん
2021/11/06(土) 01:56:27.18ID:x0h3LLto YouTube で有名な、雑食系エンジニア・KENTA のサロンでは、
キャリアパスは、Ruby on Rails → Go のみ
Rust, Elixir などは、普及のキャズムを越えなかったので、やる必要なし。
なのに、Rustが再評価され始めたのか
キャリアパスは、Ruby on Rails → Go のみ
Rust, Elixir などは、普及のキャズムを越えなかったので、やる必要なし。
なのに、Rustが再評価され始めたのか
469デフォルトの名無しさん
2021/11/06(土) 02:00:59.99ID:EdP5MzkQ C++でいろんな新規開発する組織ではRustが好評価されてるでしょ
それ以外の現場ではめったに見向きされない
それ以外の現場ではめったに見向きされない
470デフォルトの名無しさん
2021/11/06(土) 06:29:11.65ID:bdG9YXuk 転職サイトとかフリーランスのサイトでRustで検索したら1桁か2桁ぐらいしか求人が出てこないけど国外国内で覇権を握る言語らしい
471デフォルトの名無しさん
2021/11/06(土) 07:32:09.49ID:a2wAz4xJ Rustでもユーチューバーでも国会議員でもそうなるわな
472デフォルトの名無しさん
2021/11/06(土) 12:03:26.15ID:2f1Vgy/C rustが評価されてるのは高速・安全の2点
これらが難しさを無視できるほど重要になる領域では唯一の選択肢になる
世界規模のサービスでは特にクリティカルな問題になるのでこの分野の発展を望む巨人共が投資してる
これらが難しさを無視できるほど重要になる領域では唯一の選択肢になる
世界規模のサービスでは特にクリティカルな問題になるのでこの分野の発展を望む巨人共が投資してる
473デフォルトの名無しさん
2021/11/06(土) 12:24:00.21ID:WoXv+kRZ >>469
転職サイトw
転職サイトw
474デフォルトの名無しさん
2021/11/06(土) 20:58:43.30ID:9KDcj+aF >>468
Goは言語仕様の欠陥により全くオススメ出来ない
Goでは例えばうっかりローカル変数の参照(ポインタ)をそのスコープ外へ持ち出しても
言語仕様としてコンパイラにもチェックされずそして禁止もされず
そのまま通ってしまうため実運用で致命的なバグを引き起こしてしまい
実際に以下のような大事件まで引き起こしている
Go言語で書かれたLet's encryptが300万以上の証明書の失効を迫られた致命的バグはRustで実装していたら防げたの?→Yes
https://qiita.com/komasayuki/items/02785730d486ec4b397f
Goは言語仕様の欠陥により全くオススメ出来ない
Goでは例えばうっかりローカル変数の参照(ポインタ)をそのスコープ外へ持ち出しても
言語仕様としてコンパイラにもチェックされずそして禁止もされず
そのまま通ってしまうため実運用で致命的なバグを引き起こしてしまい
実際に以下のような大事件まで引き起こしている
Go言語で書かれたLet's encryptが300万以上の証明書の失効を迫られた致命的バグはRustで実装していたら防げたの?→Yes
https://qiita.com/komasayuki/items/02785730d486ec4b397f
475デフォルトの名無しさん
2021/11/06(土) 21:25:57.27ID:8rFQ20lW そういう問題じゃねーわ。
そこでポインタを外に出すようなバカはどんな言語使っても同じようにカスなことやってるよ。。
そこでポインタを外に出すようなバカはどんな言語使っても同じようにカスなことやってるよ。。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★5 [七波羅探題★]
- 【速報】 米トランプ政権声明 「中国が台湾を奪おうとする、いかなる試みも阻止する」 中国「レッドラインだ」 ★2 [お断り★]
- 元プロ野球選手・堂上隼人(43)を20代女性2人へのわいせつ未遂容疑で8回目の逮捕…これまでの被害者は10代・20代の女性11人に [Anonymous★]
- 「残業キャンセル界隈」若者が増加?「職務放棄」との批判も…“定時退社の権利”どこまで通用するか [七波羅探題★]
- 【高校野球】なぜ『7回制』は反対多数でも止まらないか… 高野連が「全員の命」守るために貫く伝統より改革の姿勢 [冬月記者★]
- 体調不良で番組欠席続く山里亮太「この度は申し訳ございません」 [ひかり★]
- ヤフコメ民の8割「お米券とか意味ねえよ」どうして… [402859164]
- 【高市悲報】中国軍「公海で空母の発着訓練するって事前通告したのになんで自衛隊機は急接近してきたんだ…?」中国軍困惑 [931948549]
- 【高市悲報】自衛隊「実は事前に現場海域で中国軍から空母での発着訓練をすると通告がありました」え…?😨😨 [931948549]
- 【高市速報】中国「このままだと日本が先制攻撃してくる」 [583597859]
- ケンモメンが多分一番読んでる小説って普通にこれだよな [126644339]
- 【悲報】Vtuberさん、大炎上時代に突入する
