次世代言語27 Nim Zig Pony Carbon Gleam

2022/08/05(金) 09:40:50.22ID:/hLfNpmA0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512

スレタイ(順番はRedMonk準拠)以外の言語もok

前スレ

次世代言語26 TypeScript Swift Go Kotlin Nim
https://mevius.5ch.net/test/read.cgi/tech/1655771266/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2023/05/21(日) 01:17:46.07ID:CmXU6CGz0
https://docs.python.org/3/reference/lexical_analysis.html#indentation
Pythonの場合はここに書かれてるようにlexerの時点でスタックを使って処理できるという仕様だけど
他の言語のオフサイドルールはもっと複雑になるの?
2023/05/21(日) 15:37:31.99ID:7unpu3NzM
>>146
lexerの能力は高いだろ。
PDAは(Lexerとかと比べると)大したことできないよ。
2023/06/12(月) 15:08:29.37ID:kB7As+JK0
Zigの単行tryとcatchは馴染みないから怪訝してたけど使ってみるとtry-catchブロックよりフローが明確になって良いね
これって他言語にもある言語仕様なのかな
149デフォルトの名無しさん (スプッッ Sd73-fEz/)
垢版 |
2023/06/12(月) 18:10:45.80ID:7lxvOpjdd
>>148
つ アダムタッチ
150デフォルトの名無しさん (スッップ Sd33-kZ0E)
垢版 |
2023/06/13(火) 16:03:31.28ID:xDyMFOGFd
NimってPythonのライブラリにアクセスしてfor文回すともはやNimに求めてた性能ははpythonよりになってしまうのでは?型推論できないからねぇ。
2023/06/13(火) 18:32:28.49ID:yeDPLuAI0
>>150
型推論は無関係な気がする
単にPythonライブラリの性能に律速されるだけ
2023/06/14(水) 07:40:07.84ID:8mvudo25M
pythonのダメ記法を捨てられるだけでもメリットデカイね。
2023/06/14(水) 11:21:50.21ID:iWYHYN4ra
for を python で描くと遅い
for は Nim で描いて
中身だけ python ならまだマシ
もちろんネイティブの速度ではないがそんなの Nim だからじゃなくて
C++ でも Rust でも python 呼べば同じ結果になるぞ
154デフォルトの名無しさん (ワッチョイ 315f-kZ0E)
垢版 |
2023/06/14(水) 14:43:32.26ID:NMm4TZav0
>>153
for文をNimで書いて、中身をpythonにして実行速度を計測してみたらpythonオンリーとあまり変わらなくてがっかりしたという経験がある。ただ、自分のコーディングが悪かった可能性もあるけど。
2023/06/14(水) 16:19:12.32ID:rOshoQaM0
>>154
中身の計算コストがforループ自体のコストと比べて大きければNimでもpythonでも変わらないんじゃない?
156デフォルトの名無しさん (ワッチョイ 4f5f-JtsX)
垢版 |
2023/07/04(火) 03:53:42.95ID:ZyJ9aZuM0
病∞!!!!
症∞!!!!!
漠∞!!!!!!
西∞!!!!!!!
卵∞!!!!!!!!
多∞!!!!!!!!!
2023/07/04(火) 09:47:08.65ID:c7VqsKCG0
待望の新言語

Apache Sparkのための新しいプログラミング言語としての「英語」
https://www.databricks.com/jp/blog/introducing-english-new-programming-language-apache-spark
Data & AIのサミットで発表された新機能:DatabricksのEnglish SDK for Apache Sparkを試してみた
https://qiita.com/maroon-db/items/89f7a1aae11a112f9700
2023/07/20(木) 05:33:25.43ID:LIvlv7Wc0
Zig 0.11.0のマイルストーンが7月17日から8月3日に延期されてしまった
やはり未解決のissue多すぎて再延長もあり得るかこれは
159デフォルトの名無しさん (スプッッ Sd7f-NY88)
垢版 |
2023/07/25(火) 11:52:50.13ID:yYWffJVbd
>>158
1.0も遠のいた?
2023/07/26(水) 00:31:41.04ID:gfwPzIhn0
>>159
1.0も遠のいた…

今回のリリースは目玉のasync関連も見送りっぽいし内容的には実質0.10.6くらいなイメージ
残ってた300前後のissueは未解決のまま公式Newsのとおり0.11.1から1.0.0の各マイルストーンへ再分配中
(大半を単に先延ばしするだけなのでそのまま1.0もズレる)

そんな中で脱LLVM構想も再浮上してるし1.0到達は当初の3年後どころか5年以内目処も危うい
161デフォルトの名無しさん (ワッチョイ df7c-NY88)
垢版 |
2023/07/27(木) 10:40:07.68ID:2IasxSCw0
>>160
おぅ、、、orz
2023/08/01(火) 22:10:07.65ID:FfTXTju00
しばらくスレに来なかったらスレタイの言語知らんのばっかになっててわろた
2023/08/01(火) 22:28:49.01ID:ZDoiR0FV0
Nim 2.0が出たっぽい
しかしぜんぜん話題になってないな…
2023/08/01(火) 22:52:38.66ID:IyAK+cNZ0
そもそも、nimを宣伝しているようなblog記事以外で見かけたことがないしな。
2023/08/02(水) 01:14:41.81ID:4aCNkU8+0
Nimを使っている組織一覧:
https://github.com/nim-lang/Nim/wiki/Organizations-using-Nim
2023/08/02(水) 06:48:11.72ID:eH9ezqro0
>>165
RustよりもNimは実用的っぽいな
167デフォルトの名無しさん (アウアウウー Sa1f-IPSQ)
垢版 |
2023/08/02(水) 09:34:06.72ID:4pI1Wfnva
nim良いよね
2023/08/02(水) 21:45:09.21ID:9rX+LYDX0
本当、nimの話題って「nimは良い」しかないよな。
2023/08/02(水) 22:26:10.11ID:eH9ezqro0
nim以外ほとんど何か創ってないからな
170デフォルトの名無しさん (ワッチョイ 6a4b-WXhB)
垢版 |
2023/08/03(木) 11:22:28.95ID:MLrVFD850
Nim 2.0がリリースされました。
https://nim-lang.org/blog/2023/08/01/nim-v20-released.html
2023/08/25(金) 08:02:23.50ID:fA2wbq8J0
JavaScriptランタイム「Bun」がバージョン1.0に到達へ、9月7日にローンチイベント開催
https://www.publickey1.jp/blog/23/javascriptbun1097.html

主な開発言語としてZigを採用し、メモリ管理などを含む低レイヤでの実装を実現することで、Node.jsやDenoよりも高速な動作を実現していると説明しています。
2023/08/25(金) 11:01:59.13ID:ssb8Cd/m0
>>171
v1.0の目玉だったWindowsネイティブサポートは結局実現できないままでリリース押し切ることにしたのか
173デフォルトの名無しさん (ワッチョイ 7101-YAjS)
垢版 |
2023/08/25(金) 12:13:30.13ID:8Q06WpC+0
Rust製のDeno遅すぎw
https://dev.to/codesphere/bun-the-new-javascript-runtime-competing-with-deno-and-node-115d
174デフォルトの名無しさん (ワッチョイ b302-5XGt)
垢版 |
2023/09/02(土) 16:19:08.80ID:yAII5uv80
それベンチによってはNodeが勝ってたりDenoが勝ってたりするから当てにならん
175デフォルトの名無しさん (ワッチョイ ff7c-AIuG)
垢版 |
2023/09/02(土) 16:39:16.86ID:aKZIxXWD0
>>171
元言語のzigはいつ1.0になるんですかねぇ
2023/09/02(土) 18:20:03.74ID:8yObFq2T0
>>174
どのベンチ?w
177デフォルトの名無しさん (スフッ Sd1f-ETx6)
垢版 |
2023/09/07(木) 10:00:28.15ID:K6fFrmXfd
雨の日にうっかりベンチに座るとパンツがビショビショ濡れ濡れ
2023/09/12(火) 20:59:08.32ID:/qNKcCZu0
>>131 続報

Pythonの高速なスーパーセットをうたう新言語「Mojo」、コンパイラなど公開、ローカル環境で利用可能に
https://www.publickey1.jp/blog/23/pythonmojo.html
179デフォルトの名無しさん (ワッチョイ 3f7c-/qTM)
垢版 |
2023/09/21(木) 00:39:19.15ID:hd16Ksmk0
Zigに頑張ってほしい
2023/09/22(金) 01:57:24.98ID:e0xvgrYz0
Zigはかなり期待してるので頑張って欲しいな
長いこと指摘されてるissueのclose速度が1日平均5件なのに増加速度は1日平均10件で
ずっと次のリリースにたどり着けないよ問題を結局どう解決する方針にしたんだろう
181デフォルトの名無しさん (スッップ Sd5f-/qTM)
垢版 |
2023/09/22(金) 12:28:56.47ID:FCvezg2jd
>>180
こんなんでBunはよく1.0にしたな。
2023/10/04(水) 15:32:29.96ID:N8iC4Qef0
https://harelang.org/
(海外の)FOSS、ミニマリスト、アンチRust界隈で流行ってる言語 Hare
C言語プログラマのために作られたとのこと
メモリ管理は自前だがいろいろ安全対策がされてるっぽい
Windows, Macは対応しないと宣言
183デフォルトの名無しさん (ワッチョイ a37c-X5bY)
垢版 |
2023/10/04(水) 16:37:22.64ID:2V79m8iF0
Cの代替言語オーディン
https://odin-lang.org/
184デフォルトの名無しさん (ワッチョイ a37c-X5bY)
垢版 |
2023/10/04(水) 16:42:29.89ID:2V79m8iF0
Cの代替言語オーディン
データ指向、カスタムアロケータ
https://odin-lang.org/

GitHubリポジトリ
https://github.com/odin-lang/Odin
185デフォルトの名無しさん (アウアウウー Sa89-5C2y)
垢版 |
2023/10/05(木) 17:09:32.57ID:WXXGTjkDa
Are
186デフォルトの名無しさん (ワッチョイ 937c-cQ99)
垢版 |
2023/10/30(月) 01:15:43.08ID:SHIqNVOV0
ちょっとOdin触ってみた。
Zigより気に入った。
最適化がまだC/C++より弱いからエッジケースではC/C++,Rustにはパフォーマンスかなわないようがた、ぶっちゃけRustよりOdinのほうが書きやすい。
2023/11/02(木) 09:20:24.55ID:+8WanLaR0
WebAssemblyのガベージコレクションが正式機能に、最新版のChrome 119で。Firefoxも今月リリースのFirefox 120で正式機能になる見通し
https://www.publickey1.jp/blog/23/webassemblychrome_119firefoxfirefox_120.html
188デフォルトの名無しさん (ワッチョイ 22f1-rrr/)
垢版 |
2023/11/21(火) 03:00:21.16ID:60zWiP9n0
zigのcompiletはCのatoi、atofみたいなのを1関数にまとめれるということ?
189デフォルトの名無しさん (ワッチョイ 22f1-rrr/)
垢版 |
2023/11/21(火) 03:09:25.53ID:60zWiP9n0
wasmはどうせgcを採用するんだろうなと思ってたがやっぱりか
jdkと変わらん
190デフォルトの名無しさん (ワッチョイ 22f1-rrr/)
垢版 |
2023/11/21(火) 03:12:08.32ID:60zWiP9n0
wasmは初期の頃jdkと何が違うの?と言われてた
jdkはバグが多いからとか説明してたが、実際そうでもない
なぜかその界隈の人達が漠然とjavaを嫌ってるだけだな
191188 (ワッチョイ 22f1-rrr/)
垢版 |
2023/11/21(火) 04:46:48.83ID:60zWiP9n0
compiletじゃなくてcomptimeだった
192デフォルトの名無しさん (ワッチョイ 22f1-rrr/)
垢版 |
2023/11/21(火) 05:27:43.98ID:60zWiP9n0
zigのジェネリック、やりたいことは分かるんだけど構文がよく分からん
https://ziglang.org/documentation/master/#Generic-Data-Structures
fn List(comptime T: type) type {
return struct {
items: []T,
len: usize,
};
}

// The generic List data structure can be instantiated by passing in a type:
var buffer: [10]i32 = undefined;
var list = List(i32){
.items = &buffer,
.len = 0,
};
List()の返値はList型じゃなくてi32型なの?
でもi32の変数があったときにいつもその構造体への初期化処理みたいなのかけるわけじゃないでしょ。
でもfn Listの宣言によれば返値の型はtype=i32なんでしょ?謎すぎ
193デフォルトの名無しさん (ワッチョイ 22f1-rrr/)
垢版 |
2023/11/21(火) 05:34:22.13ID:60zWiP9n0
List()の型は匿名のstructだな
でもじゃあこれはなに?っていう
fn List(comptime T: type) type
引数に入力されたtypeの型が返値の型じゃないの?
2023/11/21(火) 10:29:25.70ID:Z3uiTyFT0
>>193
>>192の例で説明すると、引数として渡されたtypeはitemsフィールドの要素の型。
戻り値のtypeは匿名structの型。

引数の方のtypeは、匿名struct内の関数の引数や戻り値、その関数の戻り値を組み立てるための型引数などにも使える(文字で書くとややこしい)。

戻り値の方のtypeは、builtin.Typeでサポートされてるものが返せる。

あと引数に渡されるtypeは、戻り値を組み立てる型の中で、例えば「T.foo()」と書くことでT型はfoo関数の存在を制約として与えることもできる(foo関数を持たない型が渡されたらコンパイルエラー)。
195デフォルトの名無しさん (ワッチョイ 22f1-rrr/)
垢版 |
2023/11/21(火) 11:43:47.98ID:60zWiP9n0
ありがとう分かった。
typeはzig標準型全体を指すものということか。
任意の標準型を受け取って、任意の標準型を返す総称型関数ということね。

ダックタイピングも分かった。
宣言じゃなくコードの内容から推論してコンパイルエラー出してくということね。
196デフォルトの名無しさん (ワッチョイ 226b-rrr/)
垢版 |
2023/11/21(火) 14:41:07.08ID:60zWiP9n0
チュートリアル読んでるけどzig良い。
Cの代替としては最有力かな?
世の中はメモリ安全のためにRust推奨なんだろうけど。
本当はそっちに進んじゃいけない、と思ってる。
2023/11/21(火) 21:16:37.31ID:NcXE8D4H0
Zigのマイルストーン見ると先送りしてきたv0.11.1のバグ180件以上残ったままv0.12.0側のissueばっかり片付けてるな
これはついにマイナーバージョンアップ近づいて来たのかな
198デフォルトの名無しさん (ワッチョイ 22f8-rrr/)
垢版 |
2023/11/22(水) 01:53:36.06ID:bjqLP0h40
linux kernelがrustのサポートを確定したという記事を読んだ。
だったらrustなのかなあ。googleもandroidをrustで書くらしい。
rustなのか。
199デフォルトの名無しさん (ワッチョイ 22f8-rrr/)
垢版 |
2023/11/22(水) 03:30:03.94ID:bjqLP0h40
俺はzigやってこう・・・。
200デフォルトの名無しさん (ワッチョイ 22f8-rrr/)
垢版 |
2023/11/22(水) 07:56:27.67ID:bjqLP0h40
いや、やっぱりrustかなあ。
将来のベアメタルプログラマーは抽象的な言語概念から逃げられないね。
そうなると、初学者はむしろマネージド言語から入るのかな。
2023/11/22(水) 12:13:14.04ID:Xn3ar1UbM
Cの後継としてZigは結構ありだと思うけど、
Cが残ってる分野ってISO標準とか組み込みベンダーサポートとかが必須な分野が多くて
Zigがそこまでたどり着くには10年とかかかりそうだよな…
202デフォルトの名無しさん (スプッッ Sd82-ts/j)
垢版 |
2023/11/22(水) 12:17:19.10ID:o4kbjPDBd
Odinはいかが?
203デフォルトの名無しさん (アウアウウー Sa85-UHOz)
垢版 |
2023/11/23(木) 09:55:21.62ID:mHKDjshta
>>196
わかります
204デフォルトの名無しさん (アウアウウー Sa85-UHOz)
垢版 |
2023/11/23(木) 09:55:57.11ID:mHKDjshta
>>201
10年待てない人はNimで
205デフォルトの名無しさん (ワッチョイ 226d-rrr/)
垢版 |
2023/11/23(木) 10:39:32.37ID:h/UsGTLS0
nimは概要を読む限り全然いいと思えない。
C++をさらに悪化させたような言語じゃないの?
206デフォルトの名無しさん (ワッチョイ 226d-rrr/)
垢版 |
2023/11/23(木) 10:41:14.18ID:h/UsGTLS0
nim使うならC++で良いはずだよ。既に多用されてて信頼性あるし。
207デフォルトの名無しさん (ワッチョイ 226d-rrr/)
垢版 |
2023/11/23(木) 10:53:59.84ID:h/UsGTLS0
odinのアイデアはほぼzigと同じじゃないか?
zigの方が先に出てきて、その直後にodinが出てきたようだ
メモリ安全と言われているようだが全くそうではないというレビューも見かけた。
後出し追いかけ言語で政治力とエンジニアリングのパワーで優っているのがodinということじゃないか?
Cの代替がzigのようなものであるべきという着眼点を最初にもたらしたのはzigじゃないだろうか
他にそういう方向性の言語がzigより先にあったのだろうか
208デフォルトの名無しさん (ワッチョイ 226d-rrr/)
垢版 |
2023/11/23(木) 11:21:12.37ID:h/UsGTLS0
zigのwikipedia読んでたらCからの変更点という観点でzigが説明されてる。
Cを出発点としていくつかの改善点を加えた言語というのが重要なんだ。
その中でもメモリ安全とcomptimeによる類似関数をひとまとめにするというアイデアが重要と思う。
209デフォルトの名無しさん (ワッチョイ 226d-rrr/)
垢版 |
2023/11/23(木) 12:21:13.00ID:h/UsGTLS0
fn () err!val
みたいな共用体を返す構文はCのerrnoとかC#のoutとかの代用になるのかな
共用体はenumと連携させてswitchで使えるようだから中身に応じて処理を分けれる
実際使ってみないと分からんが、まあ学習は順調に進むし良い印象がある
2023/11/23(木) 12:50:09.22ID:45eqFX8V0
>>205
>>206
Nimのどこがダメなんでしょうか?
少なくともC++よりシンプルな言語だし読みやすく書きやすい言語だと思うのですが。
2023/11/23(木) 13:59:38.28ID:/UTIXb+w0
NimはまぁPythonっぽい構文が好きな人にはいいかもねって感じなだけで
わざわざ他言語から乗り換えるような特徴がないんだよね
212デフォルトの名無しさん (ワッチョイ 225b-rrr/)
垢版 |
2023/11/23(木) 14:59:02.66ID:h/UsGTLS0
NimはJavaとかC#みたいなクロスプラットフォーム性があるわけではないし
Cが使われているような領域で使えるものでもない
だからそういった領域では論外

C++と競合するが、置き換えれるほどの何かがない
恐らくC++から置き換えるならRustになる

という認識。Nimの言語仕様がJavaやCと比較して優れてる!とか言ってみても仕方ない。
競争相手になり得ない。
C++かRustと比較して総合的に優れてると言えたら重要なものになるだろうけど。
213デフォルトの名無しさん (ワッチョイ 225b-rrr/)
垢版 |
2023/11/23(木) 15:03:11.78ID:h/UsGTLS0
nimはgcありとなしモードあるけどライブラリちゃんと動くの?
gcありじゃないとほとんどのライブラリが動かないということになるなら、
C++にもRustにも到底比較対象にならない
どの領域に入るつもりなんだという印象
214デフォルトの名無しさん (ワッチョイ 225b-rrr/)
垢版 |
2023/11/23(木) 15:16:17.32ID:h/UsGTLS0
要するに、総合的に優れてるように思えても「あらゆる領域でちょっと負ける言語」は使われない。
戦略は?ということ。

C#やjavaと比較→ネイティブコード作れる!エレガントな文法!→java使ってる人達には全くどうでもいいです
Cと比較→たくさんの抽象的な言語概念!大規模開発に強い!→C使ってる人達には全くどうでもいいです
C++やRustと比較→GCがあって簡単にコーディングできるぞ!→彼らにはGCは不要あるいは邪魔です
2023/11/23(木) 15:46:50.74ID:o2OM8ETk0
NimのライバルはZigじゃなくてV言語だと思う
ベターCっぽいけどCの置き換えできないしC++にも届かないって立ち位置の点でね
(文法もC系ではなくPython系って側面も込み)
216デフォルトの名無しさん (ワッチョイ 427c-ts/j)
垢版 |
2023/11/23(木) 18:39:43.19ID:AGqDCJM/0
>>207
>odinのアイデアはほぼzigと同じじゃないか?

違うな。
zigはcをそのまま取り込む感じだが、odinはあくまでもodin。
cとの連携もzigみたいにそのままでは無い。

>メモリ安全と言われているようだが全くそうではないというレビューも見かけた。

odinはメモリ安全なんかじゃ全くないぞ。別なもの見てないか?


>後出し追いかけ言語で政治力とエンジニアリングのパワーで優っているのがodinということじゃないか?

政治力っていったいなんのことよ。
イチャモン着けたいだけか?


>Cの代替がzigのようなものであるべきと

「zigのようなものであるべき」って言ったらzigしかないじゃん。
言ってることがメチャクチャ。
217デフォルトの名無しさん (ワッチョイ 427c-ts/j)
垢版 |
2023/11/23(木) 18:51:14.02ID:AGqDCJM/0
>>212
>NimはJavaとかC#みたいなクロスプラットフォーム性があるわけではないし

JavaとかC#はマルチプラットフォームという。
マルチプラットフォームとクロスプラットフォームの違いは自分で調べてね。

>C++と競合するが、置き換えれるほどの何かがない

GCあるから置き換えは無理だね。
使わないようにも出きるし、その方向に向かってるけど既にあるライブラリがGC前提だったりするし。

nimはトランスレーター系で、出力がcだったりjavascriptへだったりして、そこでリソース消費しちゃってる感あるのがな。
かつてhaxeという言語があったが結局流行らなかった。
218デフォルトの名無しさん (ワッチョイ 427c-ts/j)
垢版 |
2023/11/23(木) 18:53:19.90ID:AGqDCJM/0
>>208
zigはメモリ安全なんかじゃねーぞ
219デフォルトの名無しさん (ワッチョイ 427c-ts/j)
垢版 |
2023/11/23(木) 18:54:51.91ID:AGqDCJM/0
odinについて知りたかったらhacker newsを見てくれ。
2023/11/23(木) 19:18:19.30ID:HQ3SaqO80
>>209
Error Union はペイロードを持てないので、erronoと同じと見て差し支えない。
ニュアンスとしてはgo言語のエラーと値を返すスタイルが近いかな。
go言語と違って、エラーがなければ値が保証される(毎度のエラーチェック不要)のと、エラーハンドリング不要ならtryで呼び出し元に押しつけられる楽さはある。

C#のTry〜メソッドのout引数を戻り値で扱えるが、zigはポインタ渡しもできるのでさらに強力。
2023/11/23(木) 19:25:49.77ID:HQ3SaqO80
>>218
deferの使用を癖づけしておけば、おおむね安全だから・・・。

動的確保したu8のスライスを別の変数にも持たせ、
元の変数の破棄によるダングリングポインタで自分の足を撃ち抜くくらいかな?
よく事故るところは。
2023/11/23(木) 19:28:51.80ID:HQ3SaqO80
>>217
haxeは構文マクロ書きやすくて好きなだけに悲しい
223デフォルトの名無しさん (ワッチョイ 427c-ts/j)
垢版 |
2023/11/23(木) 21:24:37.29ID:AGqDCJM/0
>>222
haxe知ってる人がいて嬉しい。
マイナーで終わったのが残念。
224デフォルトの名無しさん (アウアウウー Sa85-UHOz)
垢版 |
2023/11/23(木) 22:52:57.39ID:38VIgpCLa
>>212
おまえなんも判ってないな

>Cが使われているような領域で使えるものでもない

使えるだろ

>C++と競合するが、置き換えれるほどの何かがない

NimはC++とは競合しないC++と共存する

>恐らくC++から置き換えるならRustになる

RustにCの置き換えはあっても
RustがC++を置き換えることは無いわ
225デフォルトの名無しさん (アウアウウー Sa85-UHOz)
垢版 |
2023/11/23(木) 22:57:33.95ID:38VIgpCLa
>>215
>文法もC系ではなくPython系って側面も込み

事実誤認だ
よくそんな平気で嘘が吐けるな
226デフォルトの名無しさん (アウアウウー Sa85-UHOz)
垢版 |
2023/11/23(木) 22:58:53.23ID:38VIgpCLa
>>214
君は表面的なところしか観れないhusianasann
2023/11/23(木) 23:16:34.09ID:45eqFX8V0
Nim言語はC言語やJavascript言語を出力するのでそれらの言語が動くプラットフォームならほぼ動く。
Raspberry Pi zeroやTermux上でもNimコンパイラが動くし
Goodboy GalaxyっていうNim言語で書かれたGame boy advanceで動くゲームもあるしRaspberry Pi Picoで動くプログラムも作れる。

GC付き言語だとすべてのオブジェクトがヒープに作成されると勘違いする人がいるけどNimでもC++のようにオブジェクトをヒープに確保するかスタックに確保するか選ぶことができる。
NimではGCの代わりにARCっていうメモリ管理方法を選択できてこれはC++のshared_ptrやRustのRcと同じ参照カウンタ方式でヒープを管理する。
なのでARCが使えるかどうかは循環参照があるかないかで決まる。
Nim2.0からはORC(循環参照があっても解放できるようにARCに機能を追加したもの)がデフォルトになっている。

Nimのマクロは式や文のASTを受け取ってそのASTを読んだりASTを生成して返すのでいろんなことができる。
例えばNimの標準機能にあるstrformatモジュールを使えばfmt"x*y={x*y}"のように文字列の中の{}で囲まれた部分に直接式を書くことができる。
fmtマクロはコンパイル時に文字列リテラルを読んで"x*y="という文字列にx*yの結果を文字列化したものを付け足すコードを生成する。
C++やRustで言語に備わった機能だけでfmtマクロのようなものを作ることは無理じゃない?
2023/11/24(金) 00:02:43.09ID:cA/HuquY0
俺も>>211と同じような印象を持ってるけど、一方でこうやって熱心に布教してくるユーザーが目につくんだよね。
温度差が面白い。
pythonスレで宣伝するのはさすがにスレチだからやめてほしいが。
229デフォルトの名無しさん (ワッチョイ 22fa-rrr/)
垢版 |
2023/11/24(金) 00:24:17.65ID:Wcn967L80
>>218
rustほどではないけどcと比較すればかなりメモリ安全な言語
230デフォルトの名無しさん (ワッチョイ 427c-ts/j)
垢版 |
2023/11/24(金) 00:45:17.10ID:6OrpRj0R0
>>227
nimのマクロはASTいじれるから強いよな。
俺もnim好きだし。
一方で >>217 で書いたようにまだライブラリに旧いGC使ってるの混じってるのと、CだけじゃなくJavaScriptへのトランスレートとかして開発リソースを消費してるのが懸念。

あとRustのマクロならたぶん近いことできるんじゃないかね?
あれは hygienicマクロうたってるし。ただ複雑過ぎるとも思う。
231デフォルトの名無しさん (ワッチョイ 22fa-rrr/)
垢版 |
2023/11/24(金) 00:56:07.29ID:Wcn967L80
C++もGCありの開発可能だからnimはC++と近いのでは?
主にC++が使われてるのはミドルウェア、webブラウザ、ゲームとかだけど
いずれもGCが動かない環境ではない
232デフォルトの名無しさん (ワッチョイ 22fa-rrr/)
垢版 |
2023/11/24(金) 01:04:25.73ID:Wcn967L80
nimがcと競合すると考えるなら、
nimがカーネルやデバドラで使われると思うのか
2023/11/24(金) 08:28:38.02ID:ksIXeJJJ0
>>228
熱心に布教するユーザが目に付くというのがまさにとりたてて特徴がないということの証明になっているかもね
他言語だと多少気にいらなくても〇〇のために使っている、となるがNimはその思想に完全にマッチした人しか残っていないという
2023/11/24(金) 13:19:56.18ID:+HdIulh/0
Nimユーザーから見るとRustなどの他の言語はいちいち;とか{}を入力したりそれらの文字で少し見づらくなるがそれを大きく上回るメリットがあるとは思えない。
RustやC++やZigで書いたコードがNimより速くなるわけではない。
NimはGC使ってるから遅いみたいに言う人はいるがヒープメモリを使わないようにするとかヒープメモリをループの外側でのみ確保するようにすればメモリ管理のコストがボトルネックにならない。
どうしてもヒープ確保が必要になる場合でもARCかORCを使えばshared_ptrやRcと同じように参照数が0になったら即解放するようになる。
Rustはメモリ安全だというが普通にNimのコードを書いていてメモリ関係のバグで困ったことは無い。
Win32 APIとかLinuxのシステムコールを呼ぶときはポインタを使うからメモリ安全性に気を付けないといけなくなるがRustでもそういう関数を呼ぶときにはunsafeコードを書かないといけないらしいし。
C/C++はライブラリが豊富にあるがNimからその殆どが使える。
NimはCかC++を出力するからCのマクロとかC++のテンプレートクラス/関数まで呼べる。
C++言語はC++14,17,2xと言語仕様がどんどん複雑になっているから完全に対応は難しいかもしれんが。
2023/11/27(月) 09:37:28.94ID:BB7NmH0K0
>>234
Rustのいいところはコンパイルが通らないから誰が書いてもある程度同じようなコードが出来上がることだと思う
とても極端な話すればレビューもいらない
めちゃくちゃチーム開発に向いてる
Nimは既存の資産を活かせるかつ自由度が高いから小、中規模向けなのかな
2023/11/27(月) 12:16:24.67ID:0LRMXswf0
>>235
> 誰が書いてもある程度同じようなコードが出来上がる

これは幻想がひどい気がする。コンパイル通らない時にどう解決するか結構個性が出ると思う。
無限に unsafe 指摘されて切れたwebフレームワークのメンテナ居なかったか?
237デフォルトの名無しさん (アウアウウー Sa0b-6V65)
垢版 |
2023/11/29(水) 06:07:56.97ID:n75oaT1ga
>>236
>無限に unsafe 指摘されて切れた
このひとのことかな
https://wolfbash.hateblo.jp/entry/2017/07/30/193412
2023/11/29(水) 12:33:39.58ID:fVcl6vAK0
>>237
そこまでレベル低い人の話はしていない。

掘り直したら actix-web だった。
以下のページが日本語で問題まとまってる。
ttps://scrapbox.io/nekketsuuu/actix-web%E4%BA%8B%E4%BB%B6
2023/12/06(水) 14:35:16.69ID:FgD2yr5e0
Rust2006年、Nim2008年(or 2005年生誕説)、Go2009年にそれぞれオープン化して同期の中でNimの言語コンセプトだけ主要な席を取れなかったのはおかしい。
Nim好きユーザーとしてはここからの巻き返しを超絶妄想してる。
現世代言語の仕様に引けを取ってないし8月に本体2.0.0に上がったし周辺パッケージも育って熱心な布教者まで揃ってるのにそもそもの認知度が低すぎるままなのは不思議でならない。
いまNimで書いてる人たちは何用途で使ってる?まずは特定用途で知名度を上げることに突破口があると思うんだよね結局は。
240デフォルトの名無しさん (ワッチョイ 2a7c-1JZ4)
垢版 |
2023/12/06(水) 15:24:48.70ID:MT5mgeUa0
>>239
個人で始めたか、法人所属の人が始めたか。
pythonはメジャーになるまで30年以上かかってる。
法人の後ろ楯あると早いね。
何かキラーアプリがでることを期待してる。俺はそんなスキル無い。
2023/12/06(水) 15:53:12.48ID:KVh/UeYmM
>>239
同期だからこそ、潜在ユーザをみんなGoとRustに取られた感はある
企業がついてない分エコシステムとかはどうしても負けるし

あとはC系の人にPython風構文はあまり歓迎されないというのはあるかも
MojoみたくPythonユーザを直接取りに行ったほうが良かったかもね
242デフォルトの名無しさん (ワッチョイ 2a7c-1JZ4)
垢版 |
2023/12/06(水) 16:40:19.51ID:MT5mgeUa0
>>240
30年以上は言い過ぎ?30年近く。
2023/12/06(水) 18:39:52.78ID:Lg+sIo970
pythonは2000年代初頭にはperlよりメジャーになってただろ。
244デフォルトの名無しさん (ワッチョイ 8ab6-yDrh)
垢版 |
2023/12/08(金) 03:22:50.77ID:OHR+wWxR0
やっぱりrustなんだろうね
OSも徐々にRustになってくっぽい
主要OSが完全に移行するには100年かかるだろうけど
2023/12/08(金) 05:55:14.09ID:xBCOoZoU0
LinuxカーネルのコードがRustに置き換わるとコンパイル時間が大幅に増加しないか心配。
Cだけのカーネルでもビルドに一時間くらいかかるのに
2023/12/08(金) 09:48:35.93ID:k3Bpg+TDa
コンパイルよりCargoのdb更新に時間掛かってるんだよないっつも
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況