nim
2018/03/01(木) 18:32:18.16ID:vh/yy2VS
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が安全性を保証してない機能を使う場合は例外だ。
281デフォルトの名無しさん
2022/11/18(金) 12:24:09.04ID:IJuokuF8 参照とか reference とか同じ名前だから混同してるのかも知れないが
Nim の参照型と C++ の参照型は全く別物
C++ の引数で使う参照型 & は Nim では var の方が近い
Nim の ref は C++ ではポインタ * と思った方が良い
Nim では
GC で管理されるポインタが ref
GC で管理されないポインタが ptr
Nim の参照型と C++ の参照型は全く別物
C++ の引数で使う参照型 & は Nim では var の方が近い
Nim の ref は C++ ではポインタ * と思った方が良い
Nim では
GC で管理されるポインタが ref
GC で管理されないポインタが ptr
282デフォルトの名無しさん
2022/11/18(金) 17:46:16.11ID:PNsYUFFf これ使うか使わないかでも全然違うのよね --gc:arc
283デフォルトの名無しさん
2022/11/18(金) 18:35:09.65ID:yVVkBIHa 最近は --mm:arc
284デフォルトの名無しさん
2022/11/19(土) 16:28:59.40ID:F8GIHVyH --mm:orc 推奨
285デフォルトの名無しさん
2022/11/19(土) 17:55:05.22ID:lavOlnrp Nim2では--mm:orcがデフォルトになるらしいぞ。
みんな知ってると思うけど--mm:arcだともし循環参照があったときにメモリリークするぞ。
みんな知ってると思うけど--mm:arcだともし循環参照があったときにメモリリークするぞ。
286デフォルトの名無しさん
2022/11/19(土) 19:05:39.54ID:7QNjN12J Nim2なんて10年以上先
287デフォルトの名無しさん
2022/11/20(日) 10:26:07.81ID:MUgzJmMj288デフォルトの名無しさん
2022/11/20(日) 11:36:46.79ID:h2bm0L4T object type 全部 ref 付けろ教のひと
たまにいるよね
迷惑
たまにいるよね
迷惑
289デフォルトの名無しさん
2022/11/21(月) 13:35:10.22ID:LzW8OiBh 割と実用になるわね
https://pastebin.com/Ry2wTRHi
https://pastebin.com/Ry2wTRHi
290デフォルトの名無しさん
2022/11/22(火) 09:38:49.09ID:E0zMoWY7 理由を示さないお作法は無視していい
291デフォルトの名無しさん
2022/11/24(木) 09:24:22.39ID:qRYWlPaY なんでもかんでもref付けろと
しつこく強要してる人は
あたまおかしい
大抵は{.byref.}で用足りる
しつこく強要してる人は
あたまおかしい
大抵は{.byref.}で用足りる
292デフォルトの名無しさん
2022/11/24(木) 15:02:15.10ID:7i9tpoXw {.byref.}はnimからC/C++の関数を使うときに引数をポインタで渡しているときに使うもの。
それ以外では使う意味はないよ。
Nimはちゃんと最適な方法で引数を渡すから必要でもないのに{.byref.}とかvarとかつける必要はない。
それ以外では使う意味はないよ。
Nimはちゃんと最適な方法で引数を渡すから必要でもないのに{.byref.}とかvarとかつける必要はない。
293デフォルトの名無しさん
2022/11/24(木) 18:37:53.45ID:m+x+kPsJ var も ref も byref も全部別物だと何度言えば判るんだ?
294デフォルトの名無しさん
2022/11/24(木) 18:42:50.52ID:RL/H9YUN295デフォルトの名無しさん
2022/11/25(金) 09:06:20.12ID:PV2ZG9bu {.byref.}をrefと間違うのは判らんでもないし同情するが
{.byref.}をvarと間違う香具師は初めて観た
{.byref.}をvarと間違う香具師は初めて観た
296デフォルトの名無しさん
2022/11/25(金) 16:53:59.56ID:s0hi6gQd nim 1.6.10 出た
1.6.98 まで行くのかw
1.6.98 まで行くのかw
297デフォルトの名無しさん
2022/11/27(日) 12:26:56.31ID:IMKjsn3J regexどれ使えば良いの?
298デフォルトの名無しさん
2022/11/27(日) 16:05:43.13ID:/+GS7DyS >>297
好きなのでいいんじゃ ?
好きなのでいいんじゃ ?
レスを投稿する
ニュース
- 【速報】日本産牛肉の対中国輸出再開協議が中止 [おっさん友の会★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★2 [BFU★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★3 [BFU★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★4 [ぐれ★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 [ぐれ★]
- 【速報】日本産牛肉の対中国輸出再開協議が中止 ★2 [おっさん友の会★]
- 高市早苗、こんな大事な時に雲隠れして一切表に出てこない。ネトウヨ「高市さんは天照大御神の生まれ変わり!」 [165981677]
- 【実況】博衣こよりのえちえち雑談🧪★2
- 【格差社会】小泉進次郎じゃなくて高市早苗が自民党新総裁になると見切ってFXやってた奴、FIREライン [517791167]
- 高市コイン、ガチで156円突入へwwwwwwwwww [246620176]
- 中国政府、日本人のビザ免除停止、鬼滅の刃公開停止を検討へ [271912485]
- 高市早苗って戦後最悪の総理大臣なのでは🤔? [929293504]
