次世代言語27 Nim Zig Pony Carbon Gleam (308レス)
上下前次1-新
136(1): (テテンテンテン MM7f-+ffB) 2023/05/19(金)12:22 ID:fk0Gpq/FM(1)調 AAS
>>135
前後のインデントによってブロックが決まるから文脈依存じゃね?
137: (ワッチョイ ff7c-OaH6) 2023/05/19(金)18:44 ID:fagGQhCY0(1)調 AAS
YAML拡張してifとかの制御構造入れるやつもいるからな。
138: (ワッチョイ 03cf-Np+b) 2023/05/19(金)22:29 ID:O8g/UjD80(1)調 AAS
>>136
後ろのインデントには依存しないんじゃね
139: (ワッチョイ a7a4-A5UL) 2023/05/20(土)12:03 ID:Ok/r6Mln0(1)調 AAS
オフサイドルールでブロック表すのも、ブレースでブロック表すのも、構文解析的にはは同じことでしょ
140: (テテンテンテン MM86-uVPi) 2023/05/20(土)16:28 ID:/tIrPGWZM(1/3)調 AAS
インデントの深さに依存するから、フレーズみたいに「現在のブロックを閉じる」だけの操作では済まない。
オフサイドルールのプッシュダウンオートマトン実装例あったっけ?
141(1): (ブーイモ MM86-F7IQ) 2023/05/20(土)16:36 ID:A/kRENRgM(1)調 AAS
構文解析的にはほぼ同じ
間違ってても検出できない(ケースが多い)
オートフォーマットができない
のがデメリット
142(1): (テテンテンテン MM86-uVPi) 2023/05/20(土)16:40 ID:/tIrPGWZM(2/3)調 AAS
>>141
PDAの実装は?
143(2): (ワッチョイ 6f5f-u1DA) 2023/05/20(土)16:43 ID:PfZyfbnf0(1)調 AAS
前処理でブレース挿入して処理するから実際のパーサ部分は似たようなものって言いたいんだろうか
144: (テテンテンテン MM86-uVPi) 2023/05/20(土)16:48 ID:/tIrPGWZM(3/3)調 AAS
>>143
そりゃ乱暴すぎる。
145: (ブーイモ MM27-F7IQ) 2023/05/20(土)18:06 ID:EUGtogADM(1)調 AAS
>>142
GHCとか
Pythonとかはlexerの段階でDEDENTトークンを生成してるから>>143の言う通り
146(1): (ワッチョイ a7a4-A5UL) 2023/05/21(日)01:17 ID:CmXU6CGz0(1)調 AAS
https://docs.python.org/3/reference/lexical_analysis.html#indentation
Pythonの場合はここに書かれてるようにlexerの時点でスタックを使って処理できるという仕様だけど
他の言語のオフサイドルールはもっと複雑になるの?
147: (テテンテンテン MM86-uVPi) 2023/05/21(日)15:37 ID:7unpu3NzM(1)調 AAS
>>146
lexerの能力は高いだろ。
PDAは(Lexerとかと比べると)大したことできないよ。
148(1): (ワッチョイ 1302-mVGR) 2023/06/12(月)15:08 ID:kB7As+JK0(1)調 AAS
Zigの単行tryとcatchは馴染みないから怪訝してたけど使ってみるとtry-catchブロックよりフローが明確になって良いね
これって他言語にもある言語仕様なのかな
149: (スプッッ Sd73-fEz/) 2023/06/12(月)18:10 ID:7lxvOpjdd(1)調 AAS
>>148
つ アダムタッチ
150(1): (スッップ Sd33-kZ0E) 2023/06/13(火)16:03 ID:xDyMFOGFd(1)調 AAS
NimってPythonのライブラリにアクセスしてfor文回すともはやNimに求めてた性能ははpythonよりになってしまうのでは?型推論できないからねぇ。
151: (ワッチョイ 534b-2rqm) 2023/06/13(火)18:32 ID:yeDPLuAI0(1)調 AAS
>>150
型推論は無関係な気がする
単にPythonライブラリの性能に律速されるだけ
152: (テテンテンテン MMeb-jufV) 2023/06/14(水)07:40 ID:8mvudo25M(1)調 AAS
pythonのダメ記法を捨てられるだけでもメリットデカイね。
153(1): (アウアウウー Sadd-g1CP) 2023/06/14(水)11:21 ID:iWYHYN4ra(1)調 AAS
for を python で描くと遅い
for は Nim で描いて
中身だけ python ならまだマシ
もちろんネイティブの速度ではないがそんなの Nim だからじゃなくて
C++ でも Rust でも python 呼べば同じ結果になるぞ
154(1): (ワッチョイ 315f-kZ0E) 2023/06/14(水)14:43 ID:NMm4TZav0(1)調 AAS
>>153
for文をNimで書いて、中身をpythonにして実行速度を計測してみたらpythonオンリーとあまり変わらなくてがっかりしたという経験がある。ただ、自分のコーディングが悪かった可能性もあるけど。
155: (ワッチョイ 3961-dT3e) 2023/06/14(水)16:19 ID:rOshoQaM0(1)調 AAS
>>154
中身の計算コストがforループ自体のコストと比べて大きければNimでもpythonでも変わらないんじゃない?
156: (ワッチョイ 4f5f-JtsX) 2023/07/04(火)03:53 ID:ZyJ9aZuM0(1)調 AAS
病∞!!!!
症∞!!!!!
漠∞!!!!!!
西∞!!!!!!!
卵∞!!!!!!!!
多∞!!!!!!!!!
157: (ワッチョイ 4f5f-JtsX) 2023/07/04(火)09:47 ID:c7VqsKCG0(1)調 AAS
待望の新言語
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
158(1): (ワッチョイ e202-5LlG) 2023/07/20(木)05:33 ID:LIvlv7Wc0(1)調 AAS
Zig 0.11.0のマイルストーンが7月17日から8月3日に延期されてしまった
やはり未解決のissue多すぎて再延長もあり得るかこれは
159(1): (スプッッ Sd7f-NY88) 2023/07/25(火)11:52 ID:yYWffJVbd(1)調 AAS
>>158
1.0も遠のいた?
160(1): (ワッチョイ df02-rRCM) 2023/07/26(水)00:31 ID:gfwPzIhn0(1)調 AAS
>>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 ID:2IasxSCw0(1)調 AAS
>>160
おぅ、、、orz
162: (ワッチョイ 2603-6THS) 2023/08/01(火)22:10 ID:FfTXTju00(1)調 AAS
しばらくスレに来なかったらスレタイの言語知らんのばっかになっててわろた
163: (ワッチョイ d3e6-6THS) 2023/08/01(火)22:28 ID:ZDoiR0FV0(1)調 AAS
Nim 2.0が出たっぽい
しかしぜんぜん話題になってないな…
164: (ワッチョイ becf-TJCF) 2023/08/01(火)22:52 ID:IyAK+cNZ0(1)調 AAS
そもそも、nimを宣伝しているようなblog記事以外で見かけたことがないしな。
165(1): (ワッチョイ 0b61-TR8s) 2023/08/02(水)01:14 ID:4aCNkU8+0(1)調 AAS
Nimを使っている組織一覧:
https://github.com/nim-lang/Nim/wiki/Organizations-using-Nim
166: (ワッチョイ 2301-0TAO) 2023/08/02(水)06:48 ID:eH9ezqro0(1/2)調 AAS
>>165
RustよりもNimは実用的っぽいな
167: (アウアウウー Sa1f-IPSQ) 2023/08/02(水)09:34 ID:4pI1Wfnva(1)調 AAS
nim良いよね
168: (ワッチョイ becf-TJCF) 2023/08/02(水)21:45 ID:9rX+LYDX0(1)調 AAS
本当、nimの話題って「nimは良い」しかないよな。
169: (ワッチョイ 2301-0TAO) 2023/08/02(水)22:26 ID:eH9ezqro0(2/2)調 AAS
nim以外ほとんど何か創ってないからな
170: (ワッチョイ 6a4b-WXhB) 2023/08/03(木)11:22 ID:MLrVFD850(1)調 AAS
Nim 2.0がリリースされました。
https://nim-lang.org/blog/2023/08/01/nim-v20-released.html
171(2): (ワッチョイ 115f-Ck4D) 2023/08/25(金)08:02 ID:fA2wbq8J0(1)調 AAS
JavaScriptランタイム「Bun」がバージョン1.0に到達へ、9月7日にローンチイベント開催
https://www.publickey1.jp/blog/23/javascriptbun1097.html
主な開発言語としてZigを採用し、メモリ管理などを含む低レイヤでの実装を実現することで、Node.jsやDenoよりも高速な動作を実現していると説明しています。
172: (ワッチョイ 9302-q59E) 2023/08/25(金)11:01 ID:ssb8Cd/m0(1)調 AAS
>>171
v1.0の目玉だったWindowsネイティブサポートは結局実現できないままでリリース押し切ることにしたのか
173: (ワッチョイ 7101-YAjS) 2023/08/25(金)12:13 ID:8Q06WpC+0(1)調 AAS
Rust製のDeno遅すぎw
https://dev.to/codesphere/bun-the-new-javascript-runtime-competing-with-deno-and-node-115d
174(1): (ワッチョイ b302-5XGt) 2023/09/02(土)16:19 ID:yAII5uv80(1)調 AAS
それベンチによってはNodeが勝ってたりDenoが勝ってたりするから当てにならん
175: (ワッチョイ ff7c-AIuG) 2023/09/02(土)16:39 ID:aKZIxXWD0(1)調 AAS
>>171
元言語のzigはいつ1.0になるんですかねぇ
176: (ワッチョイ 4301-yzHn) 2023/09/02(土)18:20 ID:8yObFq2T0(1)調 AAS
>>174
どのベンチ?w
177: (スフッ Sd1f-ETx6) 2023/09/07(木)10:00 ID:K6fFrmXfd(1)調 AAS
雨の日にうっかりベンチに座るとパンツがビショビショ濡れ濡れ
178: (ワッチョイ 3b5f-rlb/) 2023/09/12(火)20:59 ID:/qNKcCZu0(1)調 AAS
>>131 続報
Pythonの高速なスーパーセットをうたう新言語「Mojo」、コンパイラなど公開、ローカル環境で利用可能に
https://www.publickey1.jp/blog/23/pythonmojo.html
179: (ワッチョイ 3f7c-/qTM) 2023/09/21(木)00:39 ID:hd16Ksmk0(1)調 AAS
Zigに頑張ってほしい
180(1): (ワッチョイ 7f29-sMWx) 2023/09/22(金)01:57 ID:e0xvgrYz0(1)調 AAS
Zigはかなり期待してるので頑張って欲しいな
長いこと指摘されてるissueのclose速度が1日平均5件なのに増加速度は1日平均10件で
ずっと次のリリースにたどり着けないよ問題を結局どう解決する方針にしたんだろう
181: (スッップ Sd5f-/qTM) 2023/09/22(金)12:28 ID:FCvezg2jd(1)調 AAS
>>180
こんなんでBunはよく1.0にしたな。
182: (ワッチョイ 8501-8Mb1) 2023/10/04(水)15:32 ID:N8iC4Qef0(1)調 AAS
https://harelang.org/
(海外の)FOSS、ミニマリスト、アンチRust界隈で流行ってる言語 Hare
C言語プログラマのために作られたとのこと
メモリ管理は自前だがいろいろ安全対策がされてるっぽい
Windows, Macは対応しないと宣言
183: (ワッチョイ a37c-X5bY) 2023/10/04(水)16:37 ID:2V79m8iF0(1/2)調 AAS
Cの代替言語オーディン
https://odin-lang.org/
184: (ワッチョイ a37c-X5bY) 2023/10/04(水)16:42 ID:2V79m8iF0(2/2)調 AAS
Cの代替言語オーディン
データ指向、カスタムアロケータ
https://odin-lang.org/
GitHubリポジトリ
https://github.com/odin-lang/Odin
185: (アウアウウー Sa89-5C2y) 2023/10/05(木)17:09 ID:WXXGTjkDa(1)調 AAS
Are
186: (ワッチョイ 937c-cQ99) 2023/10/30(月)01:15 ID:SHIqNVOV0(1)調 AAS
ちょっとOdin触ってみた。
Zigより気に入った。
最適化がまだC/C++より弱いからエッジケースではC/C++,Rustにはパフォーマンスかなわないようがた、ぶっちゃけRustよりOdinのほうが書きやすい。
187: (ワッチョイ b137-eepm) 2023/11/02(木)09:20 ID:+8WanLaR0(1)調 AAS
WebAssemblyのガベージコレクションが正式機能に、最新版のChrome 119で。Firefoxも今月リリースのFirefox 120で正式機能になる見通し
https://www.publickey1.jp/blog/23/webassemblychrome_119firefoxfirefox_120.html
188: (ワッチョイ 22f1-rrr/) 2023/11/21(火)03:00 ID:60zWiP9n0(1/8)調 AAS
zigのcompiletはCのatoi、atofみたいなのを1関数にまとめれるということ?
189: (ワッチョイ 22f1-rrr/) 2023/11/21(火)03:09 ID:60zWiP9n0(2/8)調 AAS
wasmはどうせgcを採用するんだろうなと思ってたがやっぱりか
jdkと変わらん
190: (ワッチョイ 22f1-rrr/) 2023/11/21(火)03:12 ID:60zWiP9n0(3/8)調 AAS
wasmは初期の頃jdkと何が違うの?と言われてた
jdkはバグが多いからとか説明してたが、実際そうでもない
なぜかその界隈の人達が漠然とjavaを嫌ってるだけだな
191: 188 (ワッチョイ 22f1-rrr/) 2023/11/21(火)04:46 ID:60zWiP9n0(4/8)調 AAS
compiletじゃなくてcomptimeだった
192(1): (ワッチョイ 22f1-rrr/) 2023/11/21(火)05:27 ID:60zWiP9n0(5/8)調 AAS
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(1): (ワッチョイ 22f1-rrr/) 2023/11/21(火)05:34 ID:60zWiP9n0(6/8)調 AAS
List()の型は匿名のstructだな
でもじゃあこれはなに?っていう
fn List(comptime T: type) type
引数に入力されたtypeの型が返値の型じゃないの?
194: (ワッチョイ cd26-1See) 2023/11/21(火)10:29 ID:Z3uiTyFT0(1)調 AAS
>>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 ID:60zWiP9n0(7/8)調 AAS
ありがとう分かった。
typeはzig標準型全体を指すものということか。
任意の標準型を受け取って、任意の標準型を返す総称型関数ということね。
ダックタイピングも分かった。
宣言じゃなくコードの内容から推論してコンパイルエラー出してくということね。
196(1): (ワッチョイ 226b-rrr/) 2023/11/21(火)14:41 ID:60zWiP9n0(8/8)調 AAS
チュートリアル読んでるけどzig良い。
Cの代替としては最有力かな?
世の中はメモリ安全のためにRust推奨なんだろうけど。
本当はそっちに進んじゃいけない、と思ってる。
197: (ワッチョイ aedc-f5/H) 2023/11/21(火)21:16 ID:NcXE8D4H0(1)調 AAS
Zigのマイルストーン見ると先送りしてきたv0.11.1のバグ180件以上残ったままv0.12.0側のissueばっかり片付けてるな
これはついにマイナーバージョンアップ近づいて来たのかな
198: (ワッチョイ 22f8-rrr/) 2023/11/22(水)01:53 ID:bjqLP0h40(1/3)調 AAS
linux kernelがrustのサポートを確定したという記事を読んだ。
だったらrustなのかなあ。googleもandroidをrustで書くらしい。
rustなのか。
199: (ワッチョイ 22f8-rrr/) 2023/11/22(水)03:30 ID:bjqLP0h40(2/3)調 AAS
俺はzigやってこう・・・。
200: (ワッチョイ 22f8-rrr/) 2023/11/22(水)07:56 ID:bjqLP0h40(3/3)調 AAS
いや、やっぱりrustかなあ。
将来のベアメタルプログラマーは抽象的な言語概念から逃げられないね。
そうなると、初学者はむしろマネージド言語から入るのかな。
201(1): (ブーイモ MM66-OZuz) 2023/11/22(水)12:13 ID:Xn3ar1UbM(1)調 AAS
Cの後継としてZigは結構ありだと思うけど、
Cが残ってる分野ってISO標準とか組み込みベンダーサポートとかが必須な分野が多くて
Zigがそこまでたどり着くには10年とかかかりそうだよな…
202: (スプッッ Sd82-ts/j) 2023/11/22(水)12:17 ID:o4kbjPDBd(1)調 AAS
Odinはいかが?
203: (アウアウウー Sa85-UHOz) 2023/11/23(木)09:55 ID:mHKDjshta(1/2)調 AAS
>>196
わかります
204: (アウアウウー Sa85-UHOz) 2023/11/23(木)09:55 ID:mHKDjshta(2/2)調 AAS
>>201
10年待てない人はNimで
205(1): (ワッチョイ 226d-rrr/) 2023/11/23(木)10:39 ID:h/UsGTLS0(1/8)調 AAS
nimは概要を読む限り全然いいと思えない。
C++をさらに悪化させたような言語じゃないの?
206(1): (ワッチョイ 226d-rrr/) 2023/11/23(木)10:41 ID:h/UsGTLS0(2/8)調 AAS
nim使うならC++で良いはずだよ。既に多用されてて信頼性あるし。
207(1): (ワッチョイ 226d-rrr/) 2023/11/23(木)10:53 ID:h/UsGTLS0(3/8)調 AAS
odinのアイデアはほぼzigと同じじゃないか?
zigの方が先に出てきて、その直後にodinが出てきたようだ
メモリ安全と言われているようだが全くそうではないというレビューも見かけた。
後出し追いかけ言語で政治力とエンジニアリングのパワーで優っているのがodinということじゃないか?
Cの代替がzigのようなものであるべきという着眼点を最初にもたらしたのはzigじゃないだろうか
他にそういう方向性の言語がzigより先にあったのだろうか
208(1): (ワッチョイ 226d-rrr/) 2023/11/23(木)11:21 ID:h/UsGTLS0(4/8)調 AAS
zigのwikipedia読んでたらCからの変更点という観点でzigが説明されてる。
Cを出発点としていくつかの改善点を加えた言語というのが重要なんだ。
その中でもメモリ安全とcomptimeによる類似関数をひとまとめにするというアイデアが重要と思う。
209(1): (ワッチョイ 226d-rrr/) 2023/11/23(木)12:21 ID:h/UsGTLS0(5/8)調 AAS
fn () err!val
みたいな共用体を返す構文はCのerrnoとかC#のoutとかの代用になるのかな
共用体はenumと連携させてswitchで使えるようだから中身に応じて処理を分けれる
実際使ってみないと分からんが、まあ学習は順調に進むし良い印象がある
210: (ワッチョイ 6e83-aicd) 2023/11/23(木)12:50 ID:45eqFX8V0(1/2)調 AAS
>>205
>>206
Nimのどこがダメなんでしょうか?
少なくともC++よりシンプルな言語だし読みやすく書きやすい言語だと思うのですが。
211(1): (ワッチョイ aeb4-OZuz) 2023/11/23(木)13:59 ID:/UTIXb+w0(1)調 AAS
NimはまぁPythonっぽい構文が好きな人にはいいかもねって感じなだけで
わざわざ他言語から乗り換えるような特徴がないんだよね
212(2): (ワッチョイ 225b-rrr/) 2023/11/23(木)14:59 ID:h/UsGTLS0(6/8)調 AAS
NimはJavaとかC#みたいなクロスプラットフォーム性があるわけではないし
Cが使われているような領域で使えるものでもない
だからそういった領域では論外
C++と競合するが、置き換えれるほどの何かがない
恐らくC++から置き換えるならRustになる
という認識。Nimの言語仕様がJavaやCと比較して優れてる!とか言ってみても仕方ない。
競争相手になり得ない。
C++かRustと比較して総合的に優れてると言えたら重要なものになるだろうけど。
213: (ワッチョイ 225b-rrr/) 2023/11/23(木)15:03 ID:h/UsGTLS0(7/8)調 AAS
nimはgcありとなしモードあるけどライブラリちゃんと動くの?
gcありじゃないとほとんどのライブラリが動かないということになるなら、
C++にもRustにも到底比較対象にならない
どの領域に入るつもりなんだという印象
214(1): (ワッチョイ 225b-rrr/) 2023/11/23(木)15:16 ID:h/UsGTLS0(8/8)調 AAS
要するに、総合的に優れてるように思えても「あらゆる領域でちょっと負ける言語」は使われない。
戦略は?ということ。
C#やjavaと比較→ネイティブコード作れる!エレガントな文法!→java使ってる人達には全くどうでもいいです
Cと比較→たくさんの抽象的な言語概念!大規模開発に強い!→C使ってる人達には全くどうでもいいです
C++やRustと比較→GCがあって簡単にコーディングできるぞ!→彼らにはGCは不要あるいは邪魔です
215(1): (ワッチョイ ae6b-f5/H) 2023/11/23(木)15:46 ID:o2OM8ETk0(1)調 AAS
NimのライバルはZigじゃなくてV言語だと思う
ベターCっぽいけどCの置き換えできないしC++にも届かないって立ち位置の点でね
(文法もC系ではなくPython系って側面も込み)
216: (ワッチョイ 427c-ts/j) 2023/11/23(木)18:39 ID:AGqDCJM/0(1/5)調 AAS
>>207
>odinのアイデアはほぼzigと同じじゃないか?
違うな。
zigはcをそのまま取り込む感じだが、odinはあくまでもodin。
cとの連携もzigみたいにそのままでは無い。
>メモリ安全と言われているようだが全くそうではないというレビューも見かけた。
odinはメモリ安全なんかじゃ全くないぞ。別なもの見てないか?
>後出し追いかけ言語で政治力とエンジニアリングのパワーで優っているのがodinということじゃないか?
政治力っていったいなんのことよ。
イチャモン着けたいだけか?
>Cの代替がzigのようなものであるべきと
「zigのようなものであるべき」って言ったらzigしかないじゃん。
言ってることがメチャクチャ。
217(2): (ワッチョイ 427c-ts/j) 2023/11/23(木)18:51 ID:AGqDCJM/0(2/5)調 AAS
>>212
>NimはJavaとかC#みたいなクロスプラットフォーム性があるわけではないし
JavaとかC#はマルチプラットフォームという。
マルチプラットフォームとクロスプラットフォームの違いは自分で調べてね。
>C++と競合するが、置き換えれるほどの何かがない
GCあるから置き換えは無理だね。
使わないようにも出きるし、その方向に向かってるけど既にあるライブラリがGC前提だったりするし。
nimはトランスレーター系で、出力がcだったりjavascriptへだったりして、そこでリソース消費しちゃってる感あるのがな。
かつてhaxeという言語があったが結局流行らなかった。
218(2): (ワッチョイ 427c-ts/j) 2023/11/23(木)18:53 ID:AGqDCJM/0(3/5)調 AAS
>>208
zigはメモリ安全なんかじゃねーぞ
219: (ワッチョイ 427c-ts/j) 2023/11/23(木)18:54 ID:AGqDCJM/0(4/5)調 AAS
odinについて知りたかったらhacker newsを見てくれ。
220: (ワッチョイ a111-1See) 2023/11/23(木)19:18 ID:HQ3SaqO80(1/3)調 AAS
>>209
Error Union はペイロードを持てないので、erronoと同じと見て差し支えない。
ニュアンスとしてはgo言語のエラーと値を返すスタイルが近いかな。
go言語と違って、エラーがなければ値が保証される(毎度のエラーチェック不要)のと、エラーハンドリング不要ならtryで呼び出し元に押しつけられる楽さはある。
C#のTry〜メソッドのout引数を戻り値で扱えるが、zigはポインタ渡しもできるのでさらに強力。
221: (ワッチョイ a111-1See) 2023/11/23(木)19:25 ID:HQ3SaqO80(2/3)調 AAS
>>218
deferの使用を癖づけしておけば、おおむね安全だから・・・。
動的確保したu8のスライスを別の変数にも持たせ、
元の変数の破棄によるダングリングポインタで自分の足を撃ち抜くくらいかな?
よく事故るところは。
222(1): (ワッチョイ a111-1See) 2023/11/23(木)19:28 ID:HQ3SaqO80(3/3)調 AAS
>>217
haxeは構文マクロ書きやすくて好きなだけに悲しい
223: (ワッチョイ 427c-ts/j) 2023/11/23(木)21:24 ID:AGqDCJM/0(5/5)調 AAS
>>222
haxe知ってる人がいて嬉しい。
マイナーで終わったのが残念。
224: (アウアウウー Sa85-UHOz) 2023/11/23(木)22:52 ID:38VIgpCLa(1/3)調 AAS
>>212
おまえなんも判ってないな
>Cが使われているような領域で使えるものでもない
使えるだろ
>C++と競合するが、置き換えれるほどの何かがない
NimはC++とは競合しないC++と共存する
>恐らくC++から置き換えるならRustになる
RustにCの置き換えはあっても
RustがC++を置き換えることは無いわ
225: (アウアウウー Sa85-UHOz) 2023/11/23(木)22:57 ID:38VIgpCLa(2/3)調 AAS
>>215
>文法もC系ではなくPython系って側面も込み
事実誤認だ
よくそんな平気で嘘が吐けるな
226: (アウアウウー Sa85-UHOz) 2023/11/23(木)22:58 ID:38VIgpCLa(3/3)調 AAS
>>214
君は表面的なところしか観れないhusianasann
227(1): (ワッチョイ 6e83-aicd) 2023/11/23(木)23:16 ID:45eqFX8V0(2/2)調 AAS
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マクロのようなものを作ることは無理じゃない?
228(1): (ワッチョイ 6ecf-ekUX) 2023/11/24(金)00:02 ID:cA/HuquY0(1)調 AAS
俺も>>211と同じような印象を持ってるけど、一方でこうやって熱心に布教してくるユーザーが目につくんだよね。
温度差が面白い。
pythonスレで宣伝するのはさすがにスレチだからやめてほしいが。
229(1): (ワッチョイ 22fa-rrr/) 2023/11/24(金)00:24 ID:Wcn967L80(1/3)調 AAS
>>218
rustほどではないけどcと比較すればかなりメモリ安全な言語
230: (ワッチョイ 427c-ts/j) 2023/11/24(金)00:45 ID:6OrpRj0R0(1)調 AAS
>>227
nimのマクロはASTいじれるから強いよな。
俺もnim好きだし。
一方で >>217 で書いたようにまだライブラリに旧いGC使ってるの混じってるのと、CだけじゃなくJavaScriptへのトランスレートとかして開発リソースを消費してるのが懸念。
あとRustのマクロならたぶん近いことできるんじゃないかね?
あれは hygienicマクロうたってるし。ただ複雑過ぎるとも思う。
231: (ワッチョイ 22fa-rrr/) 2023/11/24(金)00:56 ID:Wcn967L80(2/3)調 AAS
C++もGCありの開発可能だからnimはC++と近いのでは?
主にC++が使われてるのはミドルウェア、webブラウザ、ゲームとかだけど
いずれもGCが動かない環境ではない
232: (ワッチョイ 22fa-rrr/) 2023/11/24(金)01:04 ID:Wcn967L80(3/3)調 AAS
nimがcと競合すると考えるなら、
nimがカーネルやデバドラで使われると思うのか
233: (ワッチョイ e97e-OZuz) 2023/11/24(金)08:28 ID:ksIXeJJJ0(1)調 AAS
>>228
熱心に布教するユーザが目に付くというのがまさにとりたてて特徴がないということの証明になっているかもね
他言語だと多少気にいらなくても〇〇のために使っている、となるがNimはその思想に完全にマッチした人しか残っていないという
234(1): (ワッチョイ 6e83-aicd) 2023/11/24(金)13:19 ID:+HdIulh/0(1)調 AAS
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と言語仕様がどんどん複雑になっているから完全に対応は難しいかもしれんが。
235(1): (ワッチョイ 075f-fzX6) 2023/11/27(月)09:37 ID:BB7NmH0K0(1)調 AAS
>>234
Rustのいいところはコンパイルが通らないから誰が書いてもある程度同じようなコードが出来上がることだと思う
とても極端な話すればレビューもいらない
めちゃくちゃチーム開発に向いてる
Nimは既存の資産を活かせるかつ自由度が高いから小、中規模向けなのかな
上下前次1-新書関写板覧索設栞歴
あと 73 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.022s