次世代言語27 Nim Zig Pony Carbon Gleam (308レス)
上下前次1-新
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マクロのようなものを作ることは無理じゃない?
上下前次1-新書関写板覧索設栞歴
あと 81 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.014s