次世代言語27 Nim Zig Pony Carbon Gleam (308レス)
次世代言語27 Nim Zig Pony Carbon Gleam http://mevius.5ch.net/test/read.cgi/tech/1659660050/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
207: デフォルトの名無しさん (ワッチョイ 226d-rrr/) [] 2023/11/23(木) 10:53:59.84 ID:h/UsGTLS0 odinのアイデアはほぼzigと同じじゃないか? zigの方が先に出てきて、その直後にodinが出てきたようだ メモリ安全と言われているようだが全くそうではないというレビューも見かけた。 後出し追いかけ言語で政治力とエンジニアリングのパワーで優っているのがodinということじゃないか? Cの代替がzigのようなものであるべきという着眼点を最初にもたらしたのはzigじゃないだろうか 他にそういう方向性の言語がzigより先にあったのだろうか http://mevius.5ch.net/test/read.cgi/tech/1659660050/207
208: デフォルトの名無しさん (ワッチョイ 226d-rrr/) [] 2023/11/23(木) 11:21:12.37 ID:h/UsGTLS0 zigのwikipedia読んでたらCからの変更点という観点でzigが説明されてる。 Cを出発点としていくつかの改善点を加えた言語というのが重要なんだ。 その中でもメモリ安全とcomptimeによる類似関数をひとまとめにするというアイデアが重要と思う。 http://mevius.5ch.net/test/read.cgi/tech/1659660050/208
209: デフォルトの名無しさん (ワッチョイ 226d-rrr/) [] 2023/11/23(木) 12:21:13.00 ID:h/UsGTLS0 fn () err!val みたいな共用体を返す構文はCのerrnoとかC#のoutとかの代用になるのかな 共用体はenumと連携させてswitchで使えるようだから中身に応じて処理を分けれる 実際使ってみないと分からんが、まあ学習は順調に進むし良い印象がある http://mevius.5ch.net/test/read.cgi/tech/1659660050/209
210: デフォルトの名無しさん (ワッチョイ 6e83-aicd) [sage] 2023/11/23(木) 12:50:09.22 ID:45eqFX8V0 >>205 >>206 Nimのどこがダメなんでしょうか? 少なくともC++よりシンプルな言語だし読みやすく書きやすい言語だと思うのですが。 http://mevius.5ch.net/test/read.cgi/tech/1659660050/210
211: デフォルトの名無しさん (ワッチョイ aeb4-OZuz) [sage] 2023/11/23(木) 13:59:38.28 ID:/UTIXb+w0 NimはまぁPythonっぽい構文が好きな人にはいいかもねって感じなだけで わざわざ他言語から乗り換えるような特徴がないんだよね http://mevius.5ch.net/test/read.cgi/tech/1659660050/211
212: デフォルトの名無しさん (ワッチョイ 225b-rrr/) [] 2023/11/23(木) 14:59:02.66 ID:h/UsGTLS0 NimはJavaとかC#みたいなクロスプラットフォーム性があるわけではないし Cが使われているような領域で使えるものでもない だからそういった領域では論外 C++と競合するが、置き換えれるほどの何かがない 恐らくC++から置き換えるならRustになる という認識。Nimの言語仕様がJavaやCと比較して優れてる!とか言ってみても仕方ない。 競争相手になり得ない。 C++かRustと比較して総合的に優れてると言えたら重要なものになるだろうけど。 http://mevius.5ch.net/test/read.cgi/tech/1659660050/212
213: デフォルトの名無しさん (ワッチョイ 225b-rrr/) [] 2023/11/23(木) 15:03:11.78 ID:h/UsGTLS0 nimはgcありとなしモードあるけどライブラリちゃんと動くの? gcありじゃないとほとんどのライブラリが動かないということになるなら、 C++にもRustにも到底比較対象にならない どの領域に入るつもりなんだという印象 http://mevius.5ch.net/test/read.cgi/tech/1659660050/213
214: デフォルトの名無しさん (ワッチョイ 225b-rrr/) [] 2023/11/23(木) 15:16:17.32 ID:h/UsGTLS0 要するに、総合的に優れてるように思えても「あらゆる領域でちょっと負ける言語」は使われない。 戦略は?ということ。 C#やjavaと比較→ネイティブコード作れる!エレガントな文法!→java使ってる人達には全くどうでもいいです Cと比較→たくさんの抽象的な言語概念!大規模開発に強い!→C使ってる人達には全くどうでもいいです C++やRustと比較→GCがあって簡単にコーディングできるぞ!→彼らにはGCは不要あるいは邪魔です http://mevius.5ch.net/test/read.cgi/tech/1659660050/214
215: デフォルトの名無しさん (ワッチョイ ae6b-f5/H) [sage] 2023/11/23(木) 15:46:50.74 ID:o2OM8ETk0 NimのライバルはZigじゃなくてV言語だと思う ベターCっぽいけどCの置き換えできないしC++にも届かないって立ち位置の点でね (文法もC系ではなくPython系って側面も込み) http://mevius.5ch.net/test/read.cgi/tech/1659660050/215
216: デフォルトの名無しさん (ワッチョイ 427c-ts/j) [] 2023/11/23(木) 18:39:43.19 ID:AGqDCJM/0 >>207 >odinのアイデアはほぼzigと同じじゃないか? 違うな。 zigはcをそのまま取り込む感じだが、odinはあくまでもodin。 cとの連携もzigみたいにそのままでは無い。 >メモリ安全と言われているようだが全くそうではないというレビューも見かけた。 odinはメモリ安全なんかじゃ全くないぞ。別なもの見てないか? >後出し追いかけ言語で政治力とエンジニアリングのパワーで優っているのがodinということじゃないか? 政治力っていったいなんのことよ。 イチャモン着けたいだけか? >Cの代替がzigのようなものであるべきと 「zigのようなものであるべき」って言ったらzigしかないじゃん。 言ってることがメチャクチャ。 http://mevius.5ch.net/test/read.cgi/tech/1659660050/216
217: デフォルトの名無しさん (ワッチョイ 427c-ts/j) [] 2023/11/23(木) 18:51:14.02 ID:AGqDCJM/0 >>212 >NimはJavaとかC#みたいなクロスプラットフォーム性があるわけではないし JavaとかC#はマルチプラットフォームという。 マルチプラットフォームとクロスプラットフォームの違いは自分で調べてね。 >C++と競合するが、置き換えれるほどの何かがない GCあるから置き換えは無理だね。 使わないようにも出きるし、その方向に向かってるけど既にあるライブラリがGC前提だったりするし。 nimはトランスレーター系で、出力がcだったりjavascriptへだったりして、そこでリソース消費しちゃってる感あるのがな。 かつてhaxeという言語があったが結局流行らなかった。 http://mevius.5ch.net/test/read.cgi/tech/1659660050/217
218: デフォルトの名無しさん (ワッチョイ 427c-ts/j) [] 2023/11/23(木) 18:53:19.90 ID:AGqDCJM/0 >>208 zigはメモリ安全なんかじゃねーぞ http://mevius.5ch.net/test/read.cgi/tech/1659660050/218
219: デフォルトの名無しさん (ワッチョイ 427c-ts/j) [] 2023/11/23(木) 18:54:51.91 ID:AGqDCJM/0 odinについて知りたかったらhacker newsを見てくれ。 http://mevius.5ch.net/test/read.cgi/tech/1659660050/219
220: デフォルトの名無しさん (ワッチョイ a111-1See) [sage] 2023/11/23(木) 19:18:19.30 ID:HQ3SaqO80 >>209 Error Union はペイロードを持てないので、erronoと同じと見て差し支えない。 ニュアンスとしてはgo言語のエラーと値を返すスタイルが近いかな。 go言語と違って、エラーがなければ値が保証される(毎度のエラーチェック不要)のと、エラーハンドリング不要ならtryで呼び出し元に押しつけられる楽さはある。 C#のTry〜メソッドのout引数を戻り値で扱えるが、zigはポインタ渡しもできるのでさらに強力。 http://mevius.5ch.net/test/read.cgi/tech/1659660050/220
221: デフォルトの名無しさん (ワッチョイ a111-1See) [sage] 2023/11/23(木) 19:25:49.77 ID:HQ3SaqO80 >>218 deferの使用を癖づけしておけば、おおむね安全だから・・・。 動的確保したu8のスライスを別の変数にも持たせ、 元の変数の破棄によるダングリングポインタで自分の足を撃ち抜くくらいかな? よく事故るところは。 http://mevius.5ch.net/test/read.cgi/tech/1659660050/221
222: デフォルトの名無しさん (ワッチョイ a111-1See) [sage] 2023/11/23(木) 19:28:51.80 ID:HQ3SaqO80 >>217 haxeは構文マクロ書きやすくて好きなだけに悲しい http://mevius.5ch.net/test/read.cgi/tech/1659660050/222
223: デフォルトの名無しさん (ワッチョイ 427c-ts/j) [] 2023/11/23(木) 21:24:37.29 ID:AGqDCJM/0 >>222 haxe知ってる人がいて嬉しい。 マイナーで終わったのが残念。 http://mevius.5ch.net/test/read.cgi/tech/1659660050/223
224: デフォルトの名無しさん (アウアウウー Sa85-UHOz) [] 2023/11/23(木) 22:52:57.39 ID:38VIgpCLa >>212 おまえなんも判ってないな >Cが使われているような領域で使えるものでもない 使えるだろ >C++と競合するが、置き換えれるほどの何かがない NimはC++とは競合しないC++と共存する >恐らくC++から置き換えるならRustになる RustにCの置き換えはあっても RustがC++を置き換えることは無いわ http://mevius.5ch.net/test/read.cgi/tech/1659660050/224
225: デフォルトの名無しさん (アウアウウー Sa85-UHOz) [] 2023/11/23(木) 22:57:33.95 ID:38VIgpCLa >>215 >文法もC系ではなくPython系って側面も込み 事実誤認だ よくそんな平気で嘘が吐けるな http://mevius.5ch.net/test/read.cgi/tech/1659660050/225
226: デフォルトの名無しさん (アウアウウー Sa85-UHOz) [] 2023/11/23(木) 22:58:53.23 ID:38VIgpCLa >>214 君は表面的なところしか観れないhusianasann http://mevius.5ch.net/test/read.cgi/tech/1659660050/226
227: デフォルトの名無しさん (ワッチョイ 6e83-aicd) [sage] 2023/11/23(木) 23:16:34.09 ID: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マクロのようなものを作ることは無理じゃない? http://mevius.5ch.net/test/read.cgi/tech/1659660050/227
228: デフォルトの名無しさん (ワッチョイ 6ecf-ekUX) [sage] 2023/11/24(金) 00:02:43.09 ID:cA/HuquY0 俺も>>211と同じような印象を持ってるけど、一方でこうやって熱心に布教してくるユーザーが目につくんだよね。 温度差が面白い。 pythonスレで宣伝するのはさすがにスレチだからやめてほしいが。 http://mevius.5ch.net/test/read.cgi/tech/1659660050/228
229: デフォルトの名無しさん (ワッチョイ 22fa-rrr/) [] 2023/11/24(金) 00:24:17.65 ID:Wcn967L80 >>218 rustほどではないけどcと比較すればかなりメモリ安全な言語 http://mevius.5ch.net/test/read.cgi/tech/1659660050/229
230: デフォルトの名無しさん (ワッチョイ 427c-ts/j) [] 2023/11/24(金) 00:45:17.10 ID:6OrpRj0R0 >>227 nimのマクロはASTいじれるから強いよな。 俺もnim好きだし。 一方で >>217 で書いたようにまだライブラリに旧いGC使ってるの混じってるのと、CだけじゃなくJavaScriptへのトランスレートとかして開発リソースを消費してるのが懸念。 あとRustのマクロならたぶん近いことできるんじゃないかね? あれは hygienicマクロうたってるし。ただ複雑過ぎるとも思う。 http://mevius.5ch.net/test/read.cgi/tech/1659660050/230
231: デフォルトの名無しさん (ワッチョイ 22fa-rrr/) [] 2023/11/24(金) 00:56:07.29 ID:Wcn967L80 C++もGCありの開発可能だからnimはC++と近いのでは? 主にC++が使われてるのはミドルウェア、webブラウザ、ゲームとかだけど いずれもGCが動かない環境ではない http://mevius.5ch.net/test/read.cgi/tech/1659660050/231
232: デフォルトの名無しさん (ワッチョイ 22fa-rrr/) [] 2023/11/24(金) 01:04:25.73 ID:Wcn967L80 nimがcと競合すると考えるなら、 nimがカーネルやデバドラで使われると思うのか http://mevius.5ch.net/test/read.cgi/tech/1659660050/232
233: デフォルトの名無しさん (ワッチョイ e97e-OZuz) [sage] 2023/11/24(金) 08:28:38.02 ID:ksIXeJJJ0 >>228 熱心に布教するユーザが目に付くというのがまさにとりたてて特徴がないということの証明になっているかもね 他言語だと多少気にいらなくても〇〇のために使っている、となるがNimはその思想に完全にマッチした人しか残っていないという http://mevius.5ch.net/test/read.cgi/tech/1659660050/233
234: デフォルトの名無しさん (ワッチョイ 6e83-aicd) [sage] 2023/11/24(金) 13:19:56.18 ID:+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と言語仕様がどんどん複雑になっているから完全に対応は難しいかもしれんが。 http://mevius.5ch.net/test/read.cgi/tech/1659660050/234
235: デフォルトの名無しさん (ワッチョイ 075f-fzX6) [sage] 2023/11/27(月) 09:37:28.94 ID:BB7NmH0K0 >>234 Rustのいいところはコンパイルが通らないから誰が書いてもある程度同じようなコードが出来上がることだと思う とても極端な話すればレビューもいらない めちゃくちゃチーム開発に向いてる Nimは既存の資産を活かせるかつ自由度が高いから小、中規模向けなのかな http://mevius.5ch.net/test/read.cgi/tech/1659660050/235
236: デフォルトの名無しさん (ワッチョイ a737-psIa) [sage] 2023/11/27(月) 12:16:24.67 ID:0LRMXswf0 >>235 > 誰が書いてもある程度同じようなコードが出来上がる これは幻想がひどい気がする。コンパイル通らない時にどう解決するか結構個性が出ると思う。 無限に unsafe 指摘されて切れたwebフレームワークのメンテナ居なかったか? http://mevius.5ch.net/test/read.cgi/tech/1659660050/236
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 72 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.009s