探検
nim
2018/03/01(木) 18:32:18.16ID:vh/yy2VS
181デフォルトの名無しさん
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無かったかな
233デフォルトの名無しさん
2022/11/04(金) 07:27:29.10ID:7DKhUjkg 日本語訳マニュアルの代わりになるかどうかはわからんけど
amazonで日本語のNim言語の書籍が売られてるよ。
amazonで日本語のNim言語の書籍が売られてるよ。
234デフォルトの名無しさん
2022/11/05(土) 00:35:21.38ID:mvfmSa9B 当時高校生の描いたやつか
CやC++との連携について
一行しか描かれてなかったな
CやC++との連携について
一行しか描かれてなかったな
235デフォルトの名無しさん
2022/11/06(日) 13:47:02.47ID:4CeLTSQg c2nim にがっかり感なんだけど
こんなもん?
それとも使い方間違ってる?
期待し過ぎ?
こんなもん?
それとも使い方間違ってる?
期待し過ぎ?
236デフォルトの名無しさん
2022/11/06(日) 16:29:46.57ID:zKDylNc8 単純化した具体例がないとなんとも
237デフォルトの名無しさん
2022/11/06(日) 16:42:07.10ID:06z0Icrt わかっているのかもしれないけど、c2nimはどんなC言語のコードもNim言語に変換するものではない。C言語ライブラリをNim言語から使うためのバインディングをCのヘッダーファイルから生成するツールみたいなものだ。
c2nimに似たことができるこんなツールもあるよ。
https://github.com/PMunch/futhark
c2nimに似たことができるこんなツールもあるよ。
https://github.com/PMunch/futhark
238デフォルトの名無しさん
2022/11/07(月) 12:40:52.04ID:1sAmX+SP >>230
全く使えないキャッシュだな
全く使えないキャッシュだな
239デフォルトの名無しさん
2022/11/07(月) 12:44:41.58ID:1sAmX+SP240デフォルトの名無しさん
2022/11/07(月) 13:21:56.37ID:V8od12Ai ダメだこりゃ
みんなでzigに移動しよう
みんなでzigに移動しよう
241デフォルトの名無しさん
2022/11/07(月) 14:15:04.63ID:xn4jxoWB いーんだよ グリーンだよ
242デフォルトの名無しさん
2022/11/08(火) 12:57:20.87ID:CnIxTlte template hoge(fuga: string): string =
fmt"{fuga}"
観たいなときに fuga が undeclared になるんだけどなんで?
fmt"{fuga}"
観たいなときに fuga が undeclared になるんだけどなんで?
243デフォルトの名無しさん
2022/11/08(火) 13:05:00.14ID:CnIxTlte >>237
なるほど良さげ
Sounds great, what's the catch?
Futhark is currently in an alpha state.
It currently doesn't support C++, and it doesn't understand things like function-style macros.
It might also mess up on definition types I haven't seen yet in the small handful of libraries I've tested it against.
All of these things are things I hope to get fixed up.
なるほど良さげ
Sounds great, what's the catch?
Futhark is currently in an alpha state.
It currently doesn't support C++, and it doesn't understand things like function-style macros.
It might also mess up on definition types I haven't seen yet in the small handful of libraries I've tested it against.
All of these things are things I hope to get fixed up.
244デフォルトの名無しさん
2022/11/08(火) 13:15:11.71ID:CnIxTlte >>242 自己レス
出来ました本当にありがとうございました
template hoge(fuga: string): string =
block:
let injectedfuga {.inject.} = fuga
fmt"{injected_fuga}"
https://qiita.com/momeemt/items/000d1f6c384f4f00e103
出来ました本当にありがとうございました
template hoge(fuga: string): string =
block:
let injectedfuga {.inject.} = fuga
fmt"{injected_fuga}"
https://qiita.com/momeemt/items/000d1f6c384f4f00e103
245デフォルトの名無しさん
2022/11/08(火) 18:53:20.46ID:nCLZIP1Q246デフォルトの名無しさん
2022/11/08(火) 19:07:14.22ID:2BJbmpY0 Pythonスレでテンプレになってる内容をNim用に変更したので
次スレからはテンプレにしてください
-----ここから
Nimの★ソースコードをそのまま5ちゃんに貼るとインデントが崩れてチヌ★
【【【複数の連続半角スペースはなにもなかったことにされる&タブは普通には入れられない】】】掲示板の仕様なので、
プログラム文は↓等の、いわゆるコードうp用サイトに貼ってこいください。
ttps://glot.io/new/nim 結構使える。
ttps://play.nim-lang.org/ 本家。
ttp://ideone.com/ デフォ設定はC用のため、言語選択ボタン押下がピコ手間かも。
ttp://pastebin.com/ まずまずシンプル。
-----ここまで
次スレからはテンプレにしてください
-----ここから
Nimの★ソースコードをそのまま5ちゃんに貼るとインデントが崩れてチヌ★
【【【複数の連続半角スペースはなにもなかったことにされる&タブは普通には入れられない】】】掲示板の仕様なので、
プログラム文は↓等の、いわゆるコードうp用サイトに貼ってこいください。
ttps://glot.io/new/nim 結構使える。
ttps://play.nim-lang.org/ 本家。
ttp://ideone.com/ デフォ設定はC用のため、言語選択ボタン押下がピコ手間かも。
ttp://pastebin.com/ まずまずシンプル。
-----ここまで
247デフォルトの名無しさん
2022/11/09(水) 22:27:24.03ID:5vHWfdFN 判り初めた my Revolution
248デフォルトの名無しさん
2022/11/10(木) 13:14:50.85ID:JZ2iIpp8 試してみた
本家 https://play.nim-lang.org/#ix=4ftO
スッキリ https://glot.io/snippets/gf9x33imvc
ダメぽよ(実行時エラー?) https://ideone.com/9BYjHA (たまに死ぬよねこのサイト)
貼るだけ? https://pastebin.com/07h9Zjrx
ideoneがダメなのはバージョンの問題?
本家 https://play.nim-lang.org/#ix=4ftO
スッキリ https://glot.io/snippets/gf9x33imvc
ダメぽよ(実行時エラー?) https://ideone.com/9BYjHA (たまに死ぬよねこのサイト)
貼るだけ? https://pastebin.com/07h9Zjrx
ideoneがダメなのはバージョンの問題?
249デフォルトの名無しさん
2022/11/10(木) 13:25:08.92ID:JZ2iIpp8250デフォルトの名無しさん
2022/11/10(木) 14:16:57.58ID:JDmtuJFO251デフォルトの名無しさん
2022/11/10(木) 15:04:27.30ID:JDmtuJFO ↑のWandboxでも最新の安定版Nimを使えるしコードを共有できる。
252デフォルトの名無しさん
2022/11/10(木) 15:55:36.21ID:hnXF7Xx/ ここまでのまとめ
ttps://glot.io/new/nim 結構使える
ttps://wandbox.org/ 最新のNim使える
ttps://play.nim-lang.org/ 本家
ttp://pastebin.com/ ソース貼り付けのみ
ttps://glot.io/new/nim 結構使える
ttps://wandbox.org/ 最新のNim使える
ttps://play.nim-lang.org/ 本家
ttp://pastebin.com/ ソース貼り付けのみ
253デフォルトの名無しさん
2022/11/10(木) 16:23:45.65ID:j+QMfGd1 やっぱオフサイドスタイルはクソかよ。
254デフォルトの名無しさん
2022/11/10(木) 16:52:41.86ID:JZ2iIpp8 >>250
wandboxだと(っていうかそれ以外でもかもだけど)
実行ボタンの上に
$ nim c ./prog.nim
って表示されてて c を cpp に変更したくても出来ない
左上の「コンパイルオプション」らしい枠に cpp を入れると
$ nim c ./prog.nim cpp
になったわ
wandboxだと(っていうかそれ以外でもかもだけど)
実行ボタンの上に
$ nim c ./prog.nim
って表示されてて c を cpp に変更したくても出来ない
左上の「コンパイルオプション」らしい枠に cpp を入れると
$ nim c ./prog.nim cpp
になったわ
255デフォルトの名無しさん
2022/11/10(木) 20:00:36.53ID:JDmtuJFO >>254
確かにwandboxだとnim cppでコンパイルできないっぽいね
もしかしたらgithubのwandboxリポジトリに要望を出せば対応してくれるかもしれない。もしくは自分で機能を実装してpull requestを出すか
確かにwandboxだとnim cppでコンパイルできないっぽいね
もしかしたらgithubのwandboxリポジトリに要望を出せば対応してくれるかもしれない。もしくは自分で機能を実装してpull requestを出すか
256デフォルトの名無しさん
2022/11/11(金) 10:16:18.33ID:8dOB0zbX257デフォルトの名無しさん
2022/11/12(土) 14:40:51.16ID:OIoQvXCU 自分で育てる感覚楽しいですね
258デフォルトの名無しさん
2022/11/15(火) 13:26:12.68ID:QGmQMBHU type
Hoge* = object
fuga*: int
としないで
type
HogeObj* = object
fuga*: int
Hoge* = ref HogeObj
とするのは必須?習慣?
前者のデメリットは DeepCopy だというのは判るのですが
毎回後者を使った方が良い?
Hoge* = object
fuga*: int
としないで
type
HogeObj* = object
fuga*: int
Hoge* = ref HogeObj
とするのは必須?習慣?
前者のデメリットは DeepCopy だというのは判るのですが
毎回後者を使った方が良い?
259デフォルトの名無しさん
2022/11/16(水) 09:07:52.80ID:qCq9+PtI {.byref.} じゃね?
261デフォルトの名無しさん
2022/11/16(水) 15:57:06.50ID:z+sJwdsY proc 読んだとき ref のフリをする fake が 259
262デフォルトの名無しさん
2022/11/16(水) 18:16:18.08ID:kOxph/zs ref objectは一つのオブジェクトを複数のオブジェクトから参照したいときや継承使ってオブジェクト指向なコードを書くときに必要となる。
それ以外の場合はrefのついていないobjectのほうが速くなることが多い。
ref型は常にヒープに確保されポインタ経由でアクセスされるけどobjectだとスタックに確保できるしポインタで間接的に参照する必要もない。
object型のseqだとメモリ上に連続して確保されるけどref object型のseqにするとメモリ上に連続して確保されるとは限らないからキャッシュミスが起きやすくなる。
ある程度大きなobjectはプロシージャに渡すときに自動的にポインタ経由で渡されるからコピーのコストが問題になることがあんまりないと思うよ。
C++で言えばobjectはstructをそのまま使っている感じでref objectはstructをstd::shared_ptrごしに使っている感じ。
それ以外の場合はrefのついていないobjectのほうが速くなることが多い。
ref型は常にヒープに確保されポインタ経由でアクセスされるけどobjectだとスタックに確保できるしポインタで間接的に参照する必要もない。
object型のseqだとメモリ上に連続して確保されるけどref object型のseqにするとメモリ上に連続して確保されるとは限らないからキャッシュミスが起きやすくなる。
ある程度大きなobjectはプロシージャに渡すときに自動的にポインタ経由で渡されるからコピーのコストが問題になることがあんまりないと思うよ。
C++で言えばobjectはstructをそのまま使っている感じでref objectはstructをstd::shared_ptrごしに使っている感じ。
263デフォルトの名無しさん
2022/11/17(木) 09:41:27.60ID:V4QZv0Fq proc incx(i: int): int =
let j = i
{.emit: "++j;".}
result = j
echo incx(5)
https://glot.io/snippets/gfgq0p65a6
let で定義された変数も書き換え可能なんですね素敵ですね
let j = i
{.emit: "++j;".}
result = j
echo incx(5)
https://glot.io/snippets/gfgq0p65a6
let で定義された変数も書き換え可能なんですね素敵ですね
264デフォルトの名無しさん
2022/11/17(木) 09:41:55.68ID:V4QZv0Fq >>259-260
全く別物
全く別物
265デフォルトの名無しさん
2022/11/17(木) 09:45:16.34ID:V4QZv0Fq >それ以外の場合はrefのついていないobjectのほうが速くなることが多い。
これはどうかなぁ
遅くなることの方が多いと思うが
これはどうかなぁ
遅くなることの方が多いと思うが
266デフォルトの名無しさん
2022/11/17(木) 10:53:32.89ID:hYmfXxMP >>265
どうしてrefのついてないobjectのほうが遅くなる場合が多いの?
どうしてrefのついてないobjectのほうが遅くなる場合が多いの?
267デフォルトの名無しさん
2022/11/17(木) 14:28:18.19ID:hYmfXxMP268デフォルトの名無しさん
2022/11/17(木) 15:18:49.83ID:fBlcqeZM269デフォルトの名無しさん
2022/11/17(木) 17:33:28.89ID:7oSKGzG8270デフォルトの名無しさん
2022/11/17(木) 18:51:38.00ID:hYmfXxMP >>268
https://nim-lang.org/docs/manual.html#procedures-var-parameters
に
var parameters are never necessary for efficient parameter passing. Since non-var parameters cannot be modified the compiler is always free to pass arguments by reference if it considers it can speed up execution.
って書いてあります。
https://nim-lang.org/docs/manual.html#procedures-var-parameters
に
var parameters are never necessary for efficient parameter passing. Since non-var parameters cannot be modified the compiler is always free to pass arguments by reference if it considers it can speed up execution.
って書いてあります。
271デフォルトの名無しさん
2022/11/17(木) 19:03:15.70ID:hYmfXxMP >>268
https://nim-lang.org/docs/manual.html#foreign-function-interface-byref-pragma
Nim manualではbyref pragmaがForeign function interfaceの章の下にある。
つまりbyref pragmaはC/C++の関数に引数をポインタ渡ししなきゃいけないときに使うもの。
それ以外のときに使う必要性はほぼ無いってこと。
https://nim-lang.org/docs/manual.html#foreign-function-interface-byref-pragma
Nim manualではbyref pragmaがForeign function interfaceの章の下にある。
つまりbyref pragmaはC/C++の関数に引数をポインタ渡ししなきゃいけないときに使うもの。
それ以外のときに使う必要性はほぼ無いってこと。
272デフォルトの名無しさん
2022/11/17(木) 21:39:23.14ID:ArWNCDPA >>265
そんな速度差気付くことある?
そんな速度差気付くことある?
273デフォルトの名無しさん
2022/11/18(金) 05:58:57.10ID:AmxJEdx7 君らスタックの消費は気にならんのけ?
274デフォルトの名無しさん
2022/11/18(金) 06:16:37.43ID:IYaGyAsl >>273
10kバイト以上のでかいobjectをたくさん使うとかならスタックを使わないようにref objectにしてヒープに確保してもいいと思う。
けどそんなにでかいobject型のローカル変数をたくさん使うことってあんまりないきがするけど。
10kバイト以上のでかいobjectをたくさん使うとかならスタックを使わないようにref objectにしてヒープに確保してもいいと思う。
けどそんなにでかいobject型のローカル変数をたくさん使うことってあんまりないきがするけど。
275デフォルトの名無しさん
2022/11/18(金) 09:39:59.23ID:IJuokuF8 たとえば
https://qiita.com/dumblepy/items/8d13592d6760d0155d89
>オブジェクトの宣言にはref objectを使います。
>Nimでは関数の引数に入れられた変数の容量に応じてコンパイラが自動で値渡し/参照渡しを調節しますが、
>これは挙動の予測が付かずバグの原因になりえます。
>ref objectでオブジェクトを宣言していれば必ず参照渡しになるので、
>アプリケーション開発ではこちらに統一しましょう。
みたいなことが
https://qiita.com/dumblepy/items/8d13592d6760d0155d89
>オブジェクトの宣言にはref objectを使います。
>Nimでは関数の引数に入れられた変数の容量に応じてコンパイラが自動で値渡し/参照渡しを調節しますが、
>これは挙動の予測が付かずバグの原因になりえます。
>ref objectでオブジェクトを宣言していれば必ず参照渡しになるので、
>アプリケーション開発ではこちらに統一しましょう。
みたいなことが
276デフォルトの名無しさん
2022/11/18(金) 10:17:44.40ID:IJuokuF8277デフォルトの名無しさん
2022/11/18(金) 11:42:20.25ID:IJuokuF8 古いけどここの議論は判り易い
https://forum.nim-lang.org/t/1207
https://forum.nim-lang.org/t/1207
278デフォルトの名無しさん
2022/11/18(金) 11:48:22.19ID:ygRIcUIa >>270
それは var の説明であって ref の説明ではないですね
それは var の説明であって ref の説明ではないですね
279デフォルトの名無しさん
2022/11/18(金) 12:02:19.50ID:IYaGyAsl280デフォルトの名無しさん
2022/11/18(金) 12:10:00.28ID:IYaGyAsl だからデフォルトの引数の渡し方でそれがコピー渡しになろうが参照渡しになろうがそれで挙動が変わったりバグの温床になることはない。
ただしaddrとかemit, Assembler statementなどのNimが安全性を保証してない機能を使う場合は例外だ。
ただしaddrとかemit, Assembler statementなどのNimが安全性を保証してない機能を使う場合は例外だ。
レスを投稿する
ニュース
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか… [BFU★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… [BFU★]
- 中国国営メディア「沖縄は日本ではない」… ★6 [BFU★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- バービー、 台湾有事の発言の波紋で「たまったもんじゃない」「高市さんに真意は聞きたい」「国民に向けて説明してほしい」 [muffin★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★2 [BFU★]
- 中国高官と話す外務省局長の表情、やばい [175344491]
- 【高市速報】小野田キミ「中国依存はリスク」断交を示唆か [931948549]
- 日本政府「高市総理の発言は問題ないと伝え、中国総領事のSNS投稿は問題があると中国に伝えました😊」 [931948549]
- 【んな専🏡】なんG 姫森ルーナ(・o・🍬)総合スレ🏰【ホロライブ▶】
- 【速報】中国、高市の発言撤回を改めて要求 [834922174]
- 【悲報】高市早苗周辺「支持層が離れるので今更発言を撤回できない」 [935793931]
