探検
nim
2018/03/01(木) 18:32:18.16ID:vh/yy2VS
133デフォルトの名無しさん
2021/06/27(日) 20:05:41.95ID:ytkGpeVG そんなにヒドいかな?
134デフォルトの名無しさん
2021/08/21(土) 08:23:43.68ID:7GAoG1Iq Nimにガベージコレクション(GC)有りは事実なのですが、
NimはオプションでGC無しにできるので、
Nimバージョン:1.5.1でRustのボローチェッカー
に似た「View types」が実装されれば
GC無しで、View types参照の有効性を検証する
ことによってメモリ安全性を保証しつつ高速化して
C/C++/Rustの代替に出来ますか?
NimはオプションでGC無しにできるので、
Nimバージョン:1.5.1でRustのボローチェッカー
に似た「View types」が実装されれば
GC無しで、View types参照の有効性を検証する
ことによってメモリ安全性を保証しつつ高速化して
C/C++/Rustの代替に出来ますか?
135デフォルトの名無しさん
2021/08/21(土) 08:47:50.25ID:7GAoG1Iq136デフォルトの名無しさん
2021/08/21(土) 22:20:40.33ID:7GAoG1Iq Rustのメモリ安全性はボローチェッカーによって担保されているが、
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています
Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しのView typesで参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます
Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ
なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?
Nimの実験的特徴
著者: アンドレアス・ルンプ
バージョン: 1.5.1
http://nim-lang.github.io/Nim/manual_experimental.html
Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し
ているにもかかわらず、高速なCのソースコードを吐き出せるのでC言語でリモートワーク
されている方は割り振られた仕事が早く終わっても終わってないふりをして怠けることができる
「怠け者とはこうあるべきだ!」と言うとても大事な事を Nim は我々に教えてくれます
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています
Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しのView typesで参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます
Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ
なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?
Nimの実験的特徴
著者: アンドレアス・ルンプ
バージョン: 1.5.1
http://nim-lang.github.io/Nim/manual_experimental.html
Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し
ているにもかかわらず、高速なCのソースコードを吐き出せるのでC言語でリモートワーク
されている方は割り振られた仕事が早く終わっても終わってないふりをして怠けることができる
「怠け者とはこうあるべきだ!」と言うとても大事な事を Nim は我々に教えてくれます
137デフォルトの名無しさん
2021/08/22(日) 08:04:08.99ID:0Cz6ueFz Rustのメモリ安全性はボローチェッカーによって担保されているが、
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています
Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しのView typesで参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます
Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ
なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?
Nimの実験的特徴 バージョン1.5.1
http://nim-lang.github.io/Nim/manual_experimental.html
第二プログラミング言語として Rust はオススメしません Nim をやるのです
https://wolfbash.hateblo.jp/entry/2017/07/30/193412
Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し
ているにもかかわらず、高速なCのソースコードを吐き出せるのでC言語でリモートワーク
されている方は割り振られた仕事が早く終わっても終わってないふりをして怠けることができる
「怠け者とはこうあるべきだ!」と言うとても大事な事を Nim は我々に教えてくれます
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています
Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しのView typesで参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます
Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ
なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?
Nimの実験的特徴 バージョン1.5.1
http://nim-lang.github.io/Nim/manual_experimental.html
第二プログラミング言語として Rust はオススメしません Nim をやるのです
https://wolfbash.hateblo.jp/entry/2017/07/30/193412
Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し
ているにもかかわらず、高速なCのソースコードを吐き出せるのでC言語でリモートワーク
されている方は割り振られた仕事が早く終わっても終わってないふりをして怠けることができる
「怠け者とはこうあるべきだ!」と言うとても大事な事を Nim は我々に教えてくれます
138デフォルトの名無しさん
2021/10/02(土) 12:07:48.96ID:nsqRCPBa139デフォルトの名無しさん
2021/10/27(水) 21:47:06.11ID:6tzLPjk/ const str = [0, 1, 2, 3, 4]
for i in 0||str.high: echo str[i]
# nim --passC:"-fopenmp" --passL:"-fopenmp" c main.nim
for i in 0||str.high: echo str[i]
# nim --passC:"-fopenmp" --passL:"-fopenmp" c main.nim
140デフォルトの名無しさん
2021/10/28(木) 12:20:10.25ID:hM84Yf/1 >>92
Cの関数だけでもいろいろなコンパイラーにより規約が違うから、ダイナミックなリンケージを非常に素直に
書ける言語はこれくらいだと思う。rustもFFIで呼べるけど
https://ja.wikipedia.org/wiki/呼出規約
Cの関数だけでもいろいろなコンパイラーにより規約が違うから、ダイナミックなリンケージを非常に素直に
書ける言語はこれくらいだと思う。rustもFFIで呼べるけど
https://ja.wikipedia.org/wiki/呼出規約
141デフォルトの名無しさん
2021/10/29(金) 07:15:01.84ID:pQzUwhXN Nim言語の開発者が$100k相当のBitcoinの寄付を受け取ったことが話題になっています。
www.reddit.com/r/programming/comments/qg2srd/nim_receives_100k_in_bitcoin_donations/
www.reddit.com/r/programming/comments/qg2srd/nim_receives_100k_in_bitcoin_donations/
142デフォルトの名無しさん
2021/11/11(木) 20:14:42.95ID:sY0aXUs3 >>99
公式での処理系は基本的にはC/C++のトランスコンパラですがJSのトランスコンパラとしても動作します。
言語的には依存している分けではなく、gccやclangの最適化の恩恵を受けるためにあえてそのようにして
いるようです。
また直接バイナリを吐き出す別のコンパイラarnetheduck/nlvmもあります。CrystalやRust、Swiftなどの
LLVMバックエンドと同じです。コンパイル時間を短縮しllvmバイナリとして僅かに小さくなります。
公式での処理系は基本的にはC/C++のトランスコンパラですがJSのトランスコンパラとしても動作します。
言語的には依存している分けではなく、gccやclangの最適化の恩恵を受けるためにあえてそのようにして
いるようです。
また直接バイナリを吐き出す別のコンパイラarnetheduck/nlvmもあります。CrystalやRust、Swiftなどの
LLVMバックエンドと同じです。コンパイル時間を短縮しllvmバイナリとして僅かに小さくなります。
143デフォルトの名無しさん
2021/11/22(月) 17:33:11.29 RustよりC++より速いんですか? 始めてみようかな
144デフォルトの名無しさん
2021/11/22(月) 20:36:44.15ID:Jhs76KRN いろんな意味で早いと思う
145デフォルトの名無しさん
2021/12/17(金) 19:10:05.51ID:XHqHc5Ln Version 1.6.2 released
https://nim-lang.org/blog/2021/12/17/version-162-released.html
https://nim-lang.org/blog/2021/12/17/version-162-released.html
146デフォルトの名無しさん
2022/02/10(木) 01:19:39.92ID:OVWQX5q0 Version 1.6.4 released
https://nim-lang.org/blog/2022/02/08/version-164-released.html
https://nim-lang.org/blog/2022/02/08/version-164-released.html
147デフォルトの名無しさん
2022/03/29(火) 04:55:27.78ID:cbyFlglW 1.6.x系だけDLしようとするとマルウェア警告出るんだけどこれ大丈夫なんかね
148デフォルトの名無しさん
2022/03/29(火) 14:58:47.55ID:mXbypgy+ Nimの公式サイトから入手したものなら大丈夫なはず。
Nimに含まれている実行ファイルやNimでコンパイルしたプログラムがアンチウィルスソフトウェアに誤検出される問題は多くの人々から報告されている。
Nim言語でマルウェアを書いてる人がいるせいで誤検出さるようになったらしい。
アンチウィルスソフトウェアは悪いことしないプログラムでもマルウェアと似たようなビットパターンを見つけるとマルウェアとみなすっぽい。
Nimに含まれている実行ファイルやNimでコンパイルしたプログラムがアンチウィルスソフトウェアに誤検出される問題は多くの人々から報告されている。
Nim言語でマルウェアを書いてる人がいるせいで誤検出さるようになったらしい。
アンチウィルスソフトウェアは悪いことしないプログラムでもマルウェアと似たようなビットパターンを見つけるとマルウェアとみなすっぽい。
149デフォルトの名無しさん
2022/03/29(火) 15:37:13.13ID:j1iUrhcV150デフォルトの名無しさん
2022/03/29(火) 20:54:07.21ID:/9JyHlX1 マルウェアと誤検知されたくなければnimで開発しない方が無難か。
151デフォルトの名無しさん
2022/03/31(木) 21:33:49.63ID:3qPlBVYz 多くの人が使っているプログラムでない限り誤検出される可能性はある。
C++使ってたころにビルドが完了してすぐに誤検出されことがあったし。
C++使ってたころにビルドが完了してすぐに誤検出されことがあったし。
152デフォルトの名無しさん
2022/03/31(木) 21:54:44.97ID:EY1WgKK4 そういうどっちもどっち論じゃないだろ。>>148は有意に誤検知が多いと言っているように見えるが。
153デフォルトの名無しさん
2022/04/01(金) 11:47:01.52ID:3pastURm Nimコンパイラ自体がマルウェア扱いだからな。
154デフォルトの名無しさん
2022/04/03(日) 00:58:55.13ID:29whmEYr Nimを書き初めて1ヶ月...procの第一引数に設定したオブジェクトにprocがバインドされる謎構文にはたまげたけど書き味がいいし気に入ったなあ
155デフォルトの名無しさん
2022/04/03(日) 10:37:31.39ID:Ng2sRKnM >>154
ちょっと誤解しているようだけど、a.foo()って書いたら自動的にfoo(a)に変換されるだけだよ。
第一引数の型にそのprocがバインドされるわけじゃないよ。
X.nim:
type
Foo* = object
x: int
proc foo*(f: Foo) = echo f
Y.nim:
import X
proc bar*(): Foo = Foo()
Z.nim:
import Y
#X.nimをインポートしてないとfoo()は呼べないよ
bar().foo()
ちょっと誤解しているようだけど、a.foo()って書いたら自動的にfoo(a)に変換されるだけだよ。
第一引数の型にそのprocがバインドされるわけじゃないよ。
X.nim:
type
Foo* = object
x: int
proc foo*(f: Foo) = echo f
Y.nim:
import X
proc bar*(): Foo = Foo()
Z.nim:
import Y
#X.nimをインポートしてないとfoo()は呼べないよ
bar().foo()
156デフォルトの名無しさん
2022/04/03(日) 10:53:58.62ID:Ng2sRKnM Nimではプロシージャの呼び出し方が何通りかある。
echo("Hello")
# Command invocation syntax
echo "Hello"
# Method call syntax
"Hello".echo
"Hello".echo()
# Generalized raw string literals
# 引数が文字列リテラル一個のときのみ
echo"Hello"
echo("Hello")
# Command invocation syntax
echo "Hello"
# Method call syntax
"Hello".echo
"Hello".echo()
# Generalized raw string literals
# 引数が文字列リテラル一個のときのみ
echo"Hello"
157デフォルトの名無しさん
2022/04/03(日) 20:20:01.30ID:29whmEYr158デフォルトの名無しさん
2022/04/09(土) 11:44:54.12ID:P+77Yson >156
Method call syntax はスマートだから他言語でも流行ってほしいところ。
特にPythonは真っ先に採用して欲しいわ。
Method call syntax はスマートだから他言語でも流行ってほしいところ。
特にPythonは真っ先に採用して欲しいわ。
159デフォルトの名無しさん
2022/04/22(金) 04:37:03.66ID:Ov5wmYZH あまり何通りもあるのはperlみたいになりそうでよろしくないな。
160デフォルトの名無しさん
2022/05/05(木) 20:58:23.76ID:Ofa1pfuz Version 1.6.6 released
https://nim-lang.org/blog/2022/05/05/version-166-released.html
https://nim-lang.org/blog/2022/05/05/version-166-released.html
161デフォルトの名無しさん
2022/05/06(金) 17:32:07.42ID:+sslkA2r162デフォルトの名無しさん
2022/05/08(日) 11:28:42.79ID:ttLKa+gZ163デフォルトの名無しさん
2022/05/18(水) 23:08:10.33ID:7sDXJn10 ニンニン
164デフォルトの名無しさん
2022/06/14(火) 14:49:13.90 二ムってドイツ製?
165デフォルトの名無しさん
2022/06/22(水) 00:08:54.72ID:mbXzyoju Araqってたしか国籍は南米じゃなかったか
166デフォルトの名無しさん
2022/06/22(水) 00:28:49.96ID:mbXzyoju167デフォルトの名無しさん
2022/07/26(火) 18:12:34.65ID:MxJrqhMY ニンニン
168デフォルトの名無しさん
2022/07/26(火) 18:15:36.24ID:gc9s0ohk 浣腸
169デフォルトの名無しさん
2022/07/27(水) 03:59:11.24ID:0dTQJF2a Aliasing restrictions in parameter passingかview typesが実装されればNimもRust並にメモリ安全になると思うんだけど。
みんなはどう思う?
https://nim-lang.org/docs/manual_experimental.html#aliasing-restrictions-in-parameter-passing
https://nim-lang.org/docs/manual_experimental.html#view-types
みんなはどう思う?
https://nim-lang.org/docs/manual_experimental.html#aliasing-restrictions-in-parameter-passing
https://nim-lang.org/docs/manual_experimental.html#view-types
170デフォルトの名無しさん
2022/07/28(木) 11:23:58.38ID:oB626eDW >>169
むしろ--mm:orcならRustよりNimのほうが循環もGCするだけメモリ安全だし、リリースビルドでオーバーフローチェックが意味不明にoffになり、言語仕様としてループindexにunsignedを使うRustのどこが安全なのかと小一時間。
まあNimでのdangerコンパイルと似てるし、構文上まだ危険な超絶ハック表現が出来てしまうので素人にはオススメ出来ない諸刃の剣。だけどsqlパッケージの文字列前提を絶対変えてほしい
むしろ--mm:orcならRustよりNimのほうが循環もGCするだけメモリ安全だし、リリースビルドでオーバーフローチェックが意味不明にoffになり、言語仕様としてループindexにunsignedを使うRustのどこが安全なのかと小一時間。
まあNimでのdangerコンパイルと似てるし、構文上まだ危険な超絶ハック表現が出来てしまうので素人にはオススメ出来ない諸刃の剣。だけどsqlパッケージの文字列前提を絶対変えてほしい
171デフォルトの名無しさん
2022/07/28(木) 14:19:26.27ID:1GWFUzAq RustのBorrow Checkerはメモリリークを防ぐものではないからね
172デフォルトの名無しさん
2022/07/29(金) 02:16:03.41ID:jt8KW6vh nimの言語的とか技術的な弱点や欠点って何?
173デフォルトの名無しさん
2022/07/29(金) 03:05:46.34ID:4AXwbrcj templateまたはmacroの第一引数がuntypedだとmethod call syntaxが使えない。
method call syntaxでgenerics parameterを指定するときにfoo.myproc[:int]()みたいな感じで[]の中の初めに':'を付けないといけない。method call syntaxを使わないときは':'は不要。
という感じでmethod call syntaxにちょっとした罠がある。
method call syntaxでgenerics parameterを指定するときにfoo.myproc[:int]()みたいな感じで[]の中の初めに':'を付けないといけない。method call syntaxを使わないときは':'は不要。
という感じでmethod call syntaxにちょっとした罠がある。
174デフォルトの名無しさん
2022/07/29(金) 12:18:00.08ID:sEOGgaoM macroが全く別言語になってる錆やその他諸々よりも、ちゃんと言語の最小サブセットになってるからまだマシ
175デフォルトの名無しさん
2022/07/29(金) 13:08:45.89ID:jt8KW6vh なるほど
176デフォルトの名無しさん
2022/09/10(土) 16:11:58.36ID:VwPQQEZG win10 x64 nim-1.6.6 x64 です
(A)
var hoge = newSeq[uint16](16)
# hoge[...] に wchar_t の文字列 L'\x0' 終端がある (サロゲートとか無い状態で 4文字分)
echo convert(cast[string](hoge[0..3]), "utf-8", "utf-16")
(B)
var fuga = newSeq[char](16)
# fuga[...] に char の文字列 '\x0' 終端がある 4文字分
echo cast[string](fuga[0..3])
(B)の方は期待通り 4文字分出力されるのですが
(A)の方はなぜか 2文字くらいで切れてしまいます
echo convert(cast[string](hoge[0..7]), "utf-8", "utf-16")
と修正すると 4文字出ましたが何か腑に落ちません
(A)
var hoge = newSeq[uint16](16)
# hoge[...] に wchar_t の文字列 L'\x0' 終端がある (サロゲートとか無い状態で 4文字分)
echo convert(cast[string](hoge[0..3]), "utf-8", "utf-16")
(B)
var fuga = newSeq[char](16)
# fuga[...] に char の文字列 '\x0' 終端がある 4文字分
echo cast[string](fuga[0..3])
(B)の方は期待通り 4文字分出力されるのですが
(A)の方はなぜか 2文字くらいで切れてしまいます
echo convert(cast[string](hoge[0..7]), "utf-8", "utf-16")
と修正すると 4文字出ましたが何か腑に落ちません
177デフォルトの名無しさん
2022/09/11(日) 06:48:19.18ID:u4B58VWk >>176
そもそも何をしたいの?
windowsで日本語を表示したいだけならutf8を使ってればOk
デフォルトでNimのコマンドラインプログラムを実行するとchcp 65001コマンドを実行したときのようにコードページをutf8に変更される。
chcp 65001を実行してもちゃんと日本語が表示されるようにターミナルを設定しよう。
utf16なテキストをutf8に変換して表示したい場合はできるだけcast使わないようにコードを書こう。
castは危険なのでできるだけ使わないようにしよう。
(castはビットパターンが同じまま別の型と見なす変換なので実装詳細を知らずに使ってるとうまく動かない)
最初からstringに文字列を格納するようにするとか、ループで一文字づつstringにコピーすればcastは避けられると思う。
そもそも何をしたいの?
windowsで日本語を表示したいだけならutf8を使ってればOk
デフォルトでNimのコマンドラインプログラムを実行するとchcp 65001コマンドを実行したときのようにコードページをutf8に変更される。
chcp 65001を実行してもちゃんと日本語が表示されるようにターミナルを設定しよう。
utf16なテキストをutf8に変換して表示したい場合はできるだけcast使わないようにコードを書こう。
castは危険なのでできるだけ使わないようにしよう。
(castはビットパターンが同じまま別の型と見なす変換なので実装詳細を知らずに使ってるとうまく動かない)
最初からstringに文字列を格納するようにするとか、ループで一文字づつstringにコピーすればcastは避けられると思う。
178デフォルトの名無しさん
2022/09/11(日) 15:33:59.58ID:o5WJ0zmX 上の例とは若干違いますが
var u16 = newSeq[uint16](8)
for n in 0..7: u16[n] = cast[uint16](65 + n)
u16[7] = 0
echo u16 # -> @[65, 66, 67, 68, 69, 70, 71, 0]
echo convert(cast[string](u16), "utf-8", "utf-16") # -> ABCD
let u8 = cast[ptr UncheckedArray[array[16, uint8]]](u16[0].addr)[0]
echo u8 # -> [65, 0, 66, 0, 67, 0, 68, 0, 69, 0, 70, 0, 71, 0, 0, 0]
ABCD のところが ABCDEFG にならないのがなんでかなーというのも
同様の現象が原因だろうと思います
var u16 = newSeq[uint16](8)
for n in 0..7: u16[n] = cast[uint16](65 + n)
u16[7] = 0
echo u16 # -> @[65, 66, 67, 68, 69, 70, 71, 0]
echo convert(cast[string](u16), "utf-8", "utf-16") # -> ABCD
let u8 = cast[ptr UncheckedArray[array[16, uint8]]](u16[0].addr)[0]
echo u8 # -> [65, 0, 66, 0, 67, 0, 68, 0, 69, 0, 70, 0, 71, 0, 0, 0]
ABCD のところが ABCDEFG にならないのがなんでかなーというのも
同様の現象が原因だろうと思います
179デフォルトの名無しさん
2022/09/11(日) 15:42:19.33ID:o5WJ0zmX echo convert("\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x00\x00", "utf-8", "utf-16")
これは
ABCDEFG
と出力されます
これは
ABCDEFG
と出力されます
180デフォルトの名無しさん
2022/09/11(日) 15:48:12.92ID:o5WJ0zmX181デフォルトの名無しさん
2022/09/11(日) 15:48:57.35ID:o5WJ0zmX まあ cast に何を期待してるんだと言われればそれまでなんだと思いますが腑に落ちませんでした
182デフォルトの名無しさん
2022/09/11(日) 19:01:47.42ID:EVjHVTpm nimってIDEやデバッガは近いうちに計画されてるの?
vscodeでもいいんだけど、ちゃんとしたデバッガは欲しいな
条件付きブレークポイントやコンテナの中身が見れる程度でいいんだが
vscodeでもいいんだけど、ちゃんとしたデバッガは欲しいな
条件付きブレークポイントやコンテナの中身が見れる程度でいいんだが
183デフォルトの名無しさん
2022/09/11(日) 19:50:17.68ID:6Wt0j/hc184デフォルトの名無しさん
2022/09/11(日) 22:55:03.70ID:EVjHVTpm やっぱりその組み合わせか
どうにも使いづらいんだよねぇ
言語仕様は理想に近いんでもっと流行ってほしいんだが、これまでの情勢からあまり期待できなさそうだな
どうにも使いづらいんだよねぇ
言語仕様は理想に近いんでもっと流行ってほしいんだが、これまでの情勢からあまり期待できなさそうだな
185デフォルトの名無しさん
2022/09/12(月) 01:44:56.16ID:I2SXXYSG >>181
seqをstringにcastしているけど、ちゃんとseqとstringの実装詳細、データ構造を理解した上で安全だという確証があってcast
seqをstringにcastしているけど、ちゃんとseqとstringの実装詳細、データ構造を理解した上で安全だという確証があってcast
186デフォルトの名無しさん
2022/09/12(月) 01:47:29.58ID:I2SXXYSG >>181
seqをstringにcastしているけど、ちゃんとseqとstringの実装詳細、データ構造を理解した上で安全だという確証があってcastしてるの?
そうでないならcast使うのはやめたほうがいいよ。
seqをstringにcastしているけど、ちゃんとseqとstringの実装詳細、データ構造を理解した上で安全だという確証があってcastしてるの?
そうでないならcast使うのはやめたほうがいいよ。
187デフォルトの名無しさん
2022/09/12(月) 02:10:20.86ID:I2SXXYSG >>181
seqやstringのデータ構造を理解しcastが何をしているか理解すれば納得できると思うよ
https://github.com/nim-lang/Nim/blob/devel/lib/system/seqs_v2.nim
https://github.com/nim-lang/Nim/blob/devel/lib/system/strs_v2.nim
そもそもseq[uint16]からstringへcastしてる時点でもうデタラメなんだよ。
seqやstringのデータ構造を理解しcastが何をしているか理解すれば納得できると思うよ
https://github.com/nim-lang/Nim/blob/devel/lib/system/seqs_v2.nim
https://github.com/nim-lang/Nim/blob/devel/lib/system/strs_v2.nim
そもそもseq[uint16]からstringへcastしてる時点でもうデタラメなんだよ。
188デフォルトの名無しさん
2022/09/12(月) 02:17:45.60ID:I2SXXYSG >>182
NimにGDBでデバッグできるようにするプラグインが付属していて
gdbでブレークポイントをおいたり変数の中身を表示したりできます。
https://internet-of-tomohiro.netlify.app/nim/gdb.ja.html
NimにGDBでデバッグできるようにするプラグインが付属していて
gdbでブレークポイントをおいたり変数の中身を表示したりできます。
https://internet-of-tomohiro.netlify.app/nim/gdb.ja.html
189デフォルトの名無しさん
2022/09/12(月) 20:00:29.06ID:YXdRRv20190デフォルトの名無しさん
2022/09/12(月) 22:26:15.30ID:I2SXXYSG >>189
castは極力使わないほうがいいのでビット演算使ってu16の値をcharに変換したほうがいいよ。
お手本コードを投稿しようとしたらcloudflareが悪意あるコードと勘違いしてブロックされた
castは極力使わないほうがいいのでビット演算使ってu16の値をcharに変換したほうがいいよ。
お手本コードを投稿しようとしたらcloudflareが悪意あるコードと勘違いしてブロックされた
191デフォルトの名無しさん
2022/09/12(月) 22:30:11.19ID:I2SXXYSG こんな感じです
let c=65u16 + n
u16[n * 2] = char(c and 0xff'u16)
u16[n * 2 + 1] = char(c shr 8)
let c=65u16 + n
u16[n * 2] = char(c and 0xff'u16)
u16[n * 2 + 1] = char(c shr 8)
192デフォルトの名無しさん
2022/09/13(火) 11:55:15.89ID:gs7UQvs1193デフォルトの名無しさん
2022/09/13(火) 12:06:13.19ID:0kBS+x4w 言語仕様としてはモダンな言語の中で1番わかりやすいし
Rustで書くほどでもない軽いスクリプトとかならNimで良いんだけど流行らんなあ
やはり個人開発者の言語が流行ることはもうないのか
Rustで書くほどでもない軽いスクリプトとかならNimで良いんだけど流行らんなあ
やはり個人開発者の言語が流行ることはもうないのか
194デフォルトの名無しさん
2022/09/13(火) 15:06:32.01ID:EXK746Ox195デフォルトの名無しさん
2022/09/13(火) 16:00:02.06ID:EXK746Ox アク禁?
196デフォルトの名無しさん
2022/09/13(火) 16:03:11.36ID:EXK746Ox var ws = newWideCString(8) # ws.len == 0
for n in 0..7: ws[n] = Utf16Char(65 + n)
# ws.len == 8
ws[7] = Utf16Char(0) # ws.len == 7
echo ws # ABCDEFG
と比べて
for n in 0..7: ws[n] = Utf16Char(65 + n)
# ws.len == 8
ws[7] = Utf16Char(0) # ws.len == 7
echo ws # ABCDEFG
と比べて
197デフォルトの名無しさん
2022/09/13(火) 16:05:36.05ID:EXK746Ox なぜ拒否られる?
198デフォルトの名無しさん
2022/09/13(火) 16:06:26.54ID:EXK746Ox 驚き最小の法則ですね
var s = newString(8) # s.len == 8
for n in 0..7: s[n] = char(65 + n)
# s.len == 8
s[7] = '\0' # s.len == 8
echo s # ABCDEFG
var s = newString(8) # s.len == 8
for n in 0..7: s[n] = char(65 + n)
# s.len == 8
s[7] = '\0' # s.len == 8
echo s # ABCDEFG
199デフォルトの名無しさん
2022/09/13(火) 16:07:15.32ID:EXK746Ox 判った char だけダメなんね
200デフォルトの名無しさん
2022/09/13(火) 16:09:20.44ID:EXK746Ox 驚き最小の法則
var ws = newWideCString(8)
echo ws.len # -> 0
for n in 0..7: ws[n] = Utf16Char(65 + n)
echo ws.len # -> 8
ws[7] = Utf16Char(0)
echo ws.len # -> 7
echo ws # ABCDEFG
と比べて
var s = newString(8)
echo s.len # -> 8
for n in 0..7: s[n] = char(65 + n)
echo s.len # -> 8
s[7] = '\0'
echo s.len # -> 8
echo s # ABCDEFG
var ws = newWideCString(8)
echo ws.len # -> 0
for n in 0..7: ws[n] = Utf16Char(65 + n)
echo ws.len # -> 8
ws[7] = Utf16Char(0)
echo ws.len # -> 7
echo ws # ABCDEFG
と比べて
var s = newString(8)
echo s.len # -> 8
for n in 0..7: s[n] = char(65 + n)
echo s.len # -> 8
s[7] = '\0'
echo s.len # -> 8
echo s # ABCDEFG
201デフォルトの名無しさん
2022/09/13(火) 16:11:32.87ID:EXK746Ox インド人もびっくり
202デフォルトの名無しさん
2022/09/13(火) 19:05:39.59ID:ketgm+4i Win土人
Nim土人
Nim土人
203デフォルトの名無しさん
2022/09/16(金) 10:37:25.88ID:8/QLgRNp proc testfunc(x: cint): cint {.exportc, cdecl, dynlib.} =
return x
と描かれたソースを
nim c --app:lib -d:release hoge.nim
でコンパイルするとカレントディレクトリに hoge.dll が生成されて
import ctypes
ctypes.cdll.LoadLibrary('./hoge.dll').testfunc(123)
と実行出来たのですが
nim cpp --app:lib -d:release hoge.nim
でコンパイルするとカレントディレクトリに hoge.dll が生成されているはずなのに
LoadLibrary のところで
FileNotFoundError: Could not find module '(fullpath)\hoge.dll' (or one of its dependencies).
Try using the full path with constructor syntax.
と言われてしまいます
多分 or one of its dependencies が引っ掛かっているのではないかと思うのですが
何が足りないのでしょう? stdc++ の shared library ?
return x
と描かれたソースを
nim c --app:lib -d:release hoge.nim
でコンパイルするとカレントディレクトリに hoge.dll が生成されて
import ctypes
ctypes.cdll.LoadLibrary('./hoge.dll').testfunc(123)
と実行出来たのですが
nim cpp --app:lib -d:release hoge.nim
でコンパイルするとカレントディレクトリに hoge.dll が生成されているはずなのに
LoadLibrary のところで
FileNotFoundError: Could not find module '(fullpath)\hoge.dll' (or one of its dependencies).
Try using the full path with constructor syntax.
と言われてしまいます
多分 or one of its dependencies が引っ掛かっているのではないかと思うのですが
何が足りないのでしょう? stdc++ の shared library ?
204デフォルトの名無しさん
2022/09/16(金) 10:57:11.84ID:8/QLgRNp libstdc++-6.dll
をコピーしてみましたがだめでした
をコピーしてみましたがだめでした
205デフォルトの名無しさん
2022/09/16(金) 11:30:30.18ID:lbCTEBn9 nimpy
nimodule
nimodule
206デフォルトの名無しさん
2022/09/16(金) 13:53:03.44ID:kdRP0PjD >>203
objdumpっていうプログラムを使えばどのdllを使っているか見れるよ。
使い方忘れたからググってね。
Nimをインストールしたときにgccもインストールしてればそのときにobjdumpも一緒にインストールされる。
他にも依存しているdllを見れるツールは色々あるけど
objdumpっていうプログラムを使えばどのdllを使っているか見れるよ。
使い方忘れたからググってね。
Nimをインストールしたときにgccもインストールしてればそのときにobjdumpも一緒にインストールされる。
他にも依存しているdllを見れるツールは色々あるけど
207デフォルトの名無しさん
2022/09/16(金) 16:11:50.14ID:fQY5NM7R >>206
windows用にもobjdumpあんの?
windows用にもobjdumpあんの?
208デフォルトの名無しさん
2022/09/16(金) 16:24:53.42ID:8/QLgRNp windows で nim 入れるときに一緒に入った mingw64 の中に objdump がありました
209デフォルトの名無しさん
2022/09/16(金) 16:34:58.81ID:8/QLgRNp >>206
objdump -p hoge.dll | findstr "dll"
で出て来たのが
libgcc_s_seh-1.dll
libstdc++-6.dll
kernel32.dll
msvcrt.dll
でした
libstdc++-6.dll
だけではなく
libgcc_s_seh-1.dll
も必要でした
無事動作しましたありがとう
objdump -p hoge.dll | findstr "dll"
で出て来たのが
libgcc_s_seh-1.dll
libstdc++-6.dll
kernel32.dll
msvcrt.dll
でした
libstdc++-6.dll
だけではなく
libgcc_s_seh-1.dll
も必要でした
無事動作しましたありがとう
210デフォルトの名無しさん
2022/09/18(日) 09:51:11.78ID:KpBP36NG211デフォルトの名無しさん
2022/09/22(木) 10:36:47.71ID:u9/ouAZs import nimpy
import nimpy/py_lib as lib
initPyLibIfNeeded()
let wx = pyImport("wx")
let app = wx.App()
let frm = wx.Frame(nil, -1, "Hello, work!")
discard frm.Show()
discard app.MainLoop()
簡単杉感嘆
import nimpy/py_lib as lib
initPyLibIfNeeded()
let wx = pyImport("wx")
let app = wx.App()
let frm = wx.Frame(nil, -1, "Hello, work!")
discard frm.Show()
discard app.MainLoop()
簡単杉感嘆
212デフォルトの名無しさん
2022/09/22(木) 15:46:35.23ID:zq3yyQIu213デフォルトの名無しさん
2022/09/23(金) 15:49:32.66ID:9eaiNZZz セルフホスティングくらいでけるのか?
214デフォルトの名無しさん
2022/09/23(金) 16:54:42.46ID:COcKyTVz215デフォルトの名無しさん
2022/09/23(金) 20:37:31.28ID:vOu7CdIL プログラミング言語でセルフホスティングっていったらコンパイラが自身の言語で実装できることだろうよ
しかしできたとしてトランスパイラをセルフホスティングと呼んでいいのか
しかしできたとしてトランスパイラをセルフホスティングと呼んでいいのか
216デフォルトの名無しさん
2022/09/23(金) 22:00:58.25ID:U9mPo3hK 出力がC言語か機械語かの違いぐらいだしトランスパイラだとしても普通にセルフホスティングって呼ぶよ
217デフォルトの名無しさん
2022/09/23(金) 22:27:48.78ID:COcKyTVz https://github.com/nim-lang/Nim
ここにNim言語のコンパイラがあるけどソースコードはNim言語で書かれている。
gccなどのCコンパイラとgitがあればソースコードからビルドできる。
ソースコードからビルドするときはまず古いバージョンのNimコンパイラをC言語に変換したものをダウンロードしてCコンパイラでビルドする。
それでビルドしたNimコンパイラで最新のNimコンパイラをビルドする。
ここにNim言語のコンパイラがあるけどソースコードはNim言語で書かれている。
gccなどのCコンパイラとgitがあればソースコードからビルドできる。
ソースコードからビルドするときはまず古いバージョンのNimコンパイラをC言語に変換したものをダウンロードしてCコンパイラでビルドする。
それでビルドしたNimコンパイラで最新のNimコンパイラをビルドする。
218デフォルトの名無しさん
2022/09/24(土) 20:13:52.60ID:7pBAspe1 わりとどうでもいいな
219デフォルトの名無しさん
2022/09/25(日) 02:56:32.67ID:z6wPsTgH Cコンパイラは一般的にC言語で実装されているが、どうやってCコンパイラをビルドするのか
あらかじめビルド済みのCコンパイラを持ってきてビルドする
ではそのビルド済みのCコンパイラはどうやってビルドされたというのか
あらかじめビルド済みのCコンパイラを持ってきてビルドする
ではそのビルド済みのCコンパイラはどうやってビルドされたというのか
220デフォルトの名無しさん
2022/09/25(日) 08:27:58.95ID:bk7Mey46 たぶん世界で最初のC言語はアセンブリかB言語かフォートランか何か別の言語で書かれていたんじゃないの?
221デフォルトの名無しさん
2022/09/26(月) 14:35:28.98ID:heiSJ5NK BigBangは未だ仮説だ
222デフォルトの名無しさん
2022/09/28(水) 12:46:44.72ID:bM9/UxvQ toSeq(0..360|24).map(rad)
と描くと
Error: type mismatch: got <SteppedSlice>
と言われて怒られたので
toSeq(0..360).filter(x => x mod 24 == 0).map(rad)
で描き治したら一応動く訳だが
0..360|24
観たいに描く方法は?
と描くと
Error: type mismatch: got <SteppedSlice>
と言われて怒られたので
toSeq(0..360).filter(x => x mod 24 == 0).map(rad)
で描き治したら一応動く訳だが
0..360|24
観たいに描く方法は?
223デフォルトの名無しさん
2022/09/28(水) 13:40:07.41ID:tqdPdMIm iterator `|`(x: HSlice; y: int): int =
みたいな演算子のイテレータを定義すればいいじゃん。
みたいな演算子のイテレータを定義すればいいじゃん。
224デフォルトの名無しさん
2022/09/28(水) 17:12:46.81ID:XnHyDYU1 nim 1.6.8 出た
225デフォルトの名無しさん
2022/09/29(木) 21:45:04.30ID:9HIV6ABQ ウィ
226デフォルトの名無しさん
2022/10/02(日) 11:50:55.49ID:tLgfuLpM >>223
iterator items(s: SteppedSlice): int =
var c = s.a
while c <= s.b:
yield c
c += s.step
を定義したらイケました
有賀豚
iterator items(s: SteppedSlice): int =
var c = s.a
while c <= s.b:
yield c
c += s.step
を定義したらイケました
有賀豚
227デフォルトの名無しさん
2022/10/16(日) 04:20:39.65ID:ccy9anmS ニンニン
228デフォルトの名無しさん
2022/10/22(土) 14:42:48.48ID:Q+2x5vm1 本日のNimConf2022期待age
229デフォルトの名無しさん
2022/11/02(水) 12:51:11.01ID:VT3BATxp 1,2ヶ月くらい前に
Nim言語のマニュアル日本語訳がOSDNのページにアップされていて
これで5年後には結構人気が出るかもと喜んでいたら
突然ページが消滅してショックだった
キャッシュを探したけど発見できないので
コピー持ってる人がいたらどこかにアップしてもらえらばありがたいです
(ライセンス上問題が無ければですが)
Nim言語のマニュアル日本語訳がOSDNのページにアップされていて
これで5年後には結構人気が出るかもと喜んでいたら
突然ページが消滅してショックだった
キャッシュを探したけど発見できないので
コピー持ってる人がいたらどこかにアップしてもらえらばありがたいです
(ライセンス上問題が無ければですが)
230デフォルトの名無しさん
2022/11/02(水) 22:26:34.03ID:AEY2Eek1 古いキャッシュならInternet Archiveにあった
https://web.archive.org/web/20201128232605/http://nim-lang-081.osdn.jp/
https://web.archive.org/web/20200928154858/http://nim-lang-081.osdn.jp/docs/manual.html
まあキャッシュ古すぎて更新追いついてないけど
https://web.archive.org/web/20201128232605/http://nim-lang-081.osdn.jp/
https://web.archive.org/web/20200928154858/http://nim-lang-081.osdn.jp/docs/manual.html
まあキャッシュ古すぎて更新追いついてないけど
231デフォルトの名無しさん
2022/11/02(水) 22:33:40.08ID:AEY2Eek1 https://ja.osdn.net/users/megumi_engines/projects/
このひとがオーナーになってるプロジェクトの1つみたいだけど、Twitterのアカウントも消えちゃってるね
プライベートが忙しくなったのかな
このひとがオーナーになってるプロジェクトの1つみたいだけど、Twitterのアカウントも消えちゃってるね
プライベートが忙しくなったのかな
232デフォルトの名無しさん
2022/11/03(木) 15:08:48.38ID:lETVCa2o Last Update: 2022-09-21 01:12
Nim プログラミング言語 - 非公式日本語版 (翻訳活動終了)に関する活動はすべて終了しました。リポジトリの再公開予定はありません。
理由はよう判らん
githubにfork無かったかな
Nim プログラミング言語 - 非公式日本語版 (翻訳活動終了)に関する活動はすべて終了しました。リポジトリの再公開予定はありません。
理由はよう判らん
githubにfork無かったかな
レスを投稿する
ニュース
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★10 [ぐれ★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★9 [ぐれ★]
- トランプ氏「台湾侵攻すれば北京爆撃」“過激予告発言”報道がXで再燃「高市氏の1億倍やばい」 [七波羅探題★]
- 「母の部屋に安倍氏が表紙の機関誌が」「(安倍氏が被害者なのは)不思議に思いませんでした」山上被告の妹が証言 ★2 [おっさん友の会★]
- 【維新国会議員が800万円超の公金を使用】藤田文武共同代表が印刷代569万円を維新市議の「身内企業に支出」していた! [ぐれ★]
- 【ペルソナ・ノン・グラータ】中国総領事の早期国外退去を首相に要請へ 自民・保守系グループ「日本の尊厳と国益を護(まも)る会」 [ぐれ★]
- 【高市】まず父さんの首切り発言が元なのにそれはスルーなのレスバのテクって感じだよな、ジャップって卑怯な癖してこの技術はない [213647114]
- 中国報道、高市首相を「毒苗」と中傷😡 [399259198]
- 【高市悲報】🇨🇳中国「日本への報復措置? 他にいくらでも方法はある。 まだまだやめないよ」 😨😱 [485983549]
- 【悲報】日本、パンダ0にwwwwwwwwwwww高市さんありがとう🐼 [271912485]
- 安倍晋三「円が300円になったらトヨタ車が3分の1で売れる。日本への旅費も3分の1になる。そうすればあっという間に経済は回復していく」 [177178129]
- 高市早苗、約1ヶ月でドル円・10円円安を達成 [256556981]
