◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:
nim 	->画像>1枚 
動画、画像抽出  || 
この掲示板へ  
類似スレ  
掲示板一覧 人気スレ 動画人気順
このスレへの固定リンク: http://5chb.net/r/tech/1519896738/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。
 nimは確かにいいものだけど 
 どこかのバックアップがないと廃れる 
 var でresult上書きしちゃったから本来のresultは初期値のままなんじゃない? 
 Rustは使い道が全然違うのでは 
 競合相手を挙げるとすればDとKotlinかな? 
 Dは死んでるし、KotlinはJVMだからちょっと違う 
 うん。安泰だな 
 windowsはなぜかmingwじゃなくてVCベースがデフォルトになってるんだよな 
 mingwのほうがつぶし効きそうなのに 
 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方 
 役に立つかもしれません 
 グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 
  
 D0A0C 
 tcc使ってビルドしてもたいして最適化されないから使えない 
 PC用途ならビルドが速いのが唯一のメリットだな 
 【王様きどり、財界″】 マイトLーヤ『人々はもう特定の主義を認めない、政治的教化は通用しない』 
 http://2chb.net/r/liveplus/1529634259/l50      共産でも、資本でもない、分ち合い経済が、登場します! 
 LLVM に対応しないのかね? 
 わざわざCを介すとか面倒くさい。 
 >>24  そうかね? 
 まあ、ネイティブコンパイルしてくれればいいことだけど。 
 別に速度は求めないからインタプリタでもいい。 
  見た目だけはpythonとrubyの愛の子っぽいけど 
 気持ち悪いな 
  
 慣れると気持ち良くイケるのかな 
 math モジュールの round バグってんな 
 こんなのもバグってるとか使い物にならないだろw 
 roundに関してはNimのgithubのissueにもあるんだけど、floatの精度のせいでroundした値がfloatで正確に表せられない場合があるんだよ。 
 https://github.com/nim-lang/Nim/issues/9082  詳しく知りたかったら、現代の殆どのPCで浮動小数点数を扱うのに使われているieee754という標準規格について調べてね 
 echo(convert("こんにちは、", "Shift_JIS", "UTF-8")) 
 Windowsだとこうしないと日本語が表示されない 
 windowsでシステムロケールUTF-8にしたい 
 chcp65001は禁止で 
 readline(stdin)が多バイト文字を受け付けない 
 nim終了のお知らせ 
   Bosque Programming Language  
https://www.microsoft.com/en-us/research/project/bosque-programming-language/    > The Bosque programming language is designed for writing code that simple, obvious, and easy to reason about for both humans and machines.    
https://github.com/Microsoft/BosqueLanguage  開発が止まっているLuaJITの代わりにこれを使いたい 
 nimがCにトランスパイルできるとしても 
 nimを通してクラス設計とかしたらその分のオーバーヘッドは残りますよね? 
 どういうことですか? 
 C並の性能を出すためにあるものではないと? 
  
 Nimでカーネルを書くとか無理なのかなーと思ってたんですが 
 実際やるわけじゃないけど、いまのところ 
 実際Linuxカーネルのコードは疑似OOPだみたいな説明を見かけたので 
 NimやC++で書いても良いのかもしれない。 
 個人的にCへのトランスパイラとしてのNimにひじょーに興味がある 
 https://forum.nim-lang.org/t/2261  >So let's say that implementing your game in Nim instead of C++ means 20% larger binary sizes, 20% more RAM usage, and 20% more CPU/GPU usage.    
 NimよりC++の方が速いって言ってる。 
 ベンチだと真逆なのに 
  nimはgcを使っている。でもCへのトランスパイルができる。 
 gcということはメモリ解放が暗黙的ということだろう。 
 Cでは明示的に解放する必要がある。 
  
 どうやって解放タイミングを調べてるんだ? 
 GC言語から非GC言語へのトランスパイルがなぜ可能なのか? 
 var name: string = readLine(stdin) 
  
 なんでvarと書きつつstringと型指定するのか 
 変な言語仕様だな 
 string name =  
 でいいだろ 
 var name = readLine(stdin) 
  
 型推論だっていってるけどこれ可読性低下してる 
 string name = readLine(stdin) 
 これがベスト 
 https://forum.nim-lang.org/t/2541  Nim also can produce a program that will be put in an embedded system. In such environment, usually there is no OS or only primitive OS, and Nim produced program have higher chances to access hardware directly.   
 できそうだ 
 Nimは流行りそうな気がする 
 なんで組み込みでC++なんか使ってるんだ 
  https://forum.nim-lang.org/t/3223  >Basically, 10 OS for 10 CPUs would contain 100 sets of C source code, that get bundled up over in csources.git   
 どうやらNimが適切なCソースコードを作成するには 
 ターゲットのCPUとOSを指定する必要があり、 
 その組み合わせ全てに何かファイルを用意する必要がある。   
 これじゃダメだな・・・ 
  勘違いした。ダメってことはないか 
 Nimコード自体は環境非依存、Cコードにするとき環境依存、ということか 
 Nimってめちゃすごなんじゃないかなあ 
 細かい言語仕様で嫌いなところがあるけど 
 >>61  name : string := readLine(stdin) 
 のほうがいい。 
  https://nim-lang.org/  The Nim compiler and the generated executables support all major platforms like Windows, Linux, BSD and Mac OS X.   
 executablesは機械語?Cコード? 
 いずれにせよ環境依存してると思うけど、大抵のプラットフォームをサポートしてます、ってどういうこと? 
 大抵のプラットフォームに向けてトランスパイルできますってこと? 
  You Nim で Tensorflow が使えるアプリ造っchina YO 
 >>69  var name : string = readLine(stdin) 
 #nameは変更可能 
 let name : string = readLine(stdin) 
 #nameは初期化後は変更不可 
 というletとvarに違いがある。 
 型推論使ったほうがコード読みやすい、書きやすいという人もいるんだよ。 
 readLineの戻り値の型はstringに決まってるんだから毎回型を書く必要ないと思うけど 
  >>70  NimはC言語に変換してからgcc等のCコンパイラを呼んで実行ファイルを作るんだよ。 
 C言語は大抵のプラットフォームで使える言語だからマルチプラットフォーム化しやすい。 
 なので一度書いたNimコードをそれぞれのプラットフォーム上でコンパイルするかクロスコンパイルするだけでだいたいは動く。 
 けどNimから出力されるCコードは特定のCコンパイラ、OS、CPU向けに書かれているので、それだけでマルチプラットフォームな実行ファイルは作れないらしい。 
 Nimの標準ライブラリのソースコードを読むとOS、CPUによる違いを吸収するためのコードがときどきあるよ。 
  Nimのソースコードのcompiler/extccomp.nimにNimが対応しているC/C++コンパイラの情報がまとまっていて、compiler/platform.nimにはOSとCPUの情報がまとまってる。 
 2次元配列って、 
 var a: array[10,array[10,int]] とか書くしかないの? 
 Version 1.0 released 
 23 September 2019  The Nim Team  
https://nim-lang.org/blog/2019/09/23/version-100-released.html    Nim Programming Language Hits Stable Milestone With v1.0 Release  
https://www.phoronix.com/scan.php?page=news_item&px=Nim-1.0-Programming-Language 
 1.0おめでとう! 
 ちなみに 
  
 echo NimVersion 
 echo(NimVersion) 
 NimVersion.echo 
  
 は同じ意味のコードだよ。Uniform Function Call Syntaxってやつだ 
 windows 10 
 Nim 1.0.2 入れてみた 
 tdmgcc は前から使ってて gcc は既に path 通してあったので 
  
 nim 側はファイル展開しただけで何もしなくても良かった 
 (nim.cfg の書き換え(書き足し)も不要だった) 
 path 通さなくても 
 C:\nim\bin\nim c hogehoge 
 で動いた 
 あと 
 日本語の参考書籍ってなんか出てる? 
  
 Nim in Action とかはどうだった? 
 >>83  最近のは勝手に gcc 入れてくれるよ。 
  HANDLEもこっそりtypedefに_PTR変えたんだっけ 
 Nim playground 
 https://play.nim-lang.org/  次スレから
>>1に入れといてよ   
 しかしver1到達したのに全然盛り上がらんのなお前ら 
 >>85  distフォルダにmingwの7z玉入れておけば、オフラインでのインストールもできるね。 
  >>84  日本語の書籍はないが、原著のドキュメントは割とわかりやすい。docs/tut1.htmlから読み始めるといいかもしれない。 
 NIAは評判が良いらしいのと、製本版を買うと電子書籍版が無料で付いてくるらしい。   
 国内でのNimの翻訳は有志が約二名ほど作業しているが、まだ始まったばかり。時間かかりそうだね。 
  DLLのCの関数を呼ぶ方法はいくつかあるようですが 
 なぜいくつもあるのでしょうか? 
 どれが一番効率が良いのかとか新しいのかとか判りにくい 
 単純にdll内の関数を呼びたいならdynlibプラグマを使うのが一番楽。 
 少し低レベルな機能が必要ならdynlibモジュウルにあるプロシイジャアを使えばいいんじゃなかろうか 
 nimに対応したソースコード可視化ツールってある? 
 nimコードはトランスパイルする前ならクロスプラットフォームなんだろうか? 
 nimのマクロは完成度高いと思う。でも完成度高いマクロという存在自体が糞。 
 >>102  糞マクロを褒めてるのであって 
 逆じゃないと思うんだが 
  >>101>>105が同じってことだろ 
 common lispなんてはるかに糞になるし 
  小数の配列作りたいんだけどやり方教えてください。 
 [0.0, 0.1, .. 0.9, 1.0] みたいな。 
  
 Python なら hoge = [i/10 for i in range(11)] かな。気持ち悪いけど。 
 >>69  var name = readLine stdin 
 var name = stdin.readLine 
 で完結してるよ、型推論で
>>72にも言った通り型を何回も書く意味がない。付け加えれば()カッコも 
 要らない。第一引数クロージャーのラムダ式で言えばカッコが必要ないのに書く意味が無い。そして 
 varとletとは不変性だが、rustやVの様にたかがGCを搭載したく無いだけで、どこでもmut mutして 
 プログラマに負担を強いるより良い(あくまで個人の感想です) 
 さらに、procとfuncも、片方が純関数なのはキーワードとして明示できる統一性としてありだね。 
 まあpragmaが多すぎる気もするけど、if likely(true)/unlikely(false)の様にCPUキャッシュ分岐予測に 
 直接関与出来る高級言語としては、他に類を見ない。GCが嫌ならOFFに出来るし、そして重い 
 Stop the Worldが嫌ならそれをしないGCに変えることが出来る、言語としては機能が多くて 
 Goの様に究極なシンプル(なのに統一性が微妙)じゃ無いけど、こりゃ良いわ 
 var name = stdin.read LineEnum 
  付け加えるとHaskellみたいなproc() = の宣言が微妙キモいけどfunc(): T =があるから、まあ妥当だね 
 rubyの様なreturnを書かないのは良い。result=xは便利だけど微妙....でそこまでやるならOptionと 
 Future、そして例外を統一して欲しかったな。 
 普通にtry: except: finally:があるのも点数が高い。Araqが言う様に例外と(Label)goto based exceptは 
 ほとんど同じ何だから、今どきの言語が例外が無いのはおかしい。まあ他を悪く言う気はないけど 
 Goの様に意味合い的に同じでfinallyに対応するdeferがあるのも良いよね 
 JavaScript?であれば、JavaScriptはECMAScriptのバージョンとともに型無しのダックタイプから 
 クラス定義で見られるように型を導入して大規模コードを書く際に静的な安全性を求めてきた、 
 言語的な特徴でもあった動的なメソッド上書きやapply/callは悪とみなされつつ、改良が進む。 
 TypeScriptもその特徴であろう、altJSあるいはJSX派生と呼ばれる一種の方言が多量に誕生した 
 一方でJavaScriptの遅さや1言語依存からwasmが考え出されて多くのコンパイラでwasm開発が 
 できるようになった。Nimも例に漏れずJSバックエンド及びwasmコンパイルが可能である。 
 Rustもwasm開発はそうだがJSバックエンドは無い、Goもwasmは出来るがサイズが大きい 
 NimはGoに比べても型チェックが厳しい、Rustはそれに借用いわゆるボローチェックがそれに 
 加わるRustもそうだが型安全性はばつぐんだ 
 jsって割と底辺だと思うから 
 Nimはそれより上だろ 
 Windows defenderでウイルス判定される 
 頼むからもう少し流行ってください。Dropトレイト、Rcトレイトと戯れてあいつのコードを直したくない 
 2015年2月なんて大昔だろ…Version 0.11頃の話、貼る奴w 
 間違えた。 
 2月だから0.11さえ出てないわ、0.10.2… 
 >>120-122  バージョン1.4.8がリリースされました 
 2021年5月25日ニムチーム   
 Nimチームは、Nim1.4の4番目のパッチリリースであるバージョン1.4.8を発表できることを 
 嬉しく思います。バージョン1.4.8は、1か月のハードワークの結果であり、23のコミットが 
 含まれており、最も重要なバグが修正され、ORCメモリ管理がさらに改善されています。 
 すべてのユーザーにバージョン1.4.8をアップグレードして使用することをお勧めします。   
 リリースのハイライト 
 develブランチと同様に、v1.4.8はcsources_v1を使用して構築されています。つまり、 
 AppleM1チップで使用できます。 
 バージョン1.4.6は、いくつかのウイルス対策ソフトウェアでいくつかの誤検知を引き 
 起こしました。私たちのテストによると、これはv1.4.8では発生しないはずです。 
  なんか結局流行らなかったな 
 2019ごろはちょっと来そうな雰囲気出してたのに 
 Luaの理念は、簡素、高効率、高移植性(simple, efficient, extensible)、現在はpowerfulとかに変えた。 
 JITもあるが型の概念が希薄で基本はNativeではない。GCあり、プロトタイプベースのOOPSもC/C++の 
 相互運用も図られているが、主な用途は本体のプログラムを拡張するスクリプト、ゲームの拡張や 
 3Dモデリングソフトなどの拡張。 
  
 一方、Nimは「Efficient, expressive, elegant」(効率的、表現力豊か、エレガント)であり、型は厳格。 
 関数、あるいはプロシージャ呼び出しも厳密。Goにあるinterface{}のようなものは無く、Cというか 
 リンケージ指定、オブジェクトコピー方法、インライン展開など明示するような言語と一体化されたプラグマ。 
 言語と一体化されたマクロ・テンプレート。状況で選べるGC、例外try-catchとdeferを全否定をしない。 
 RustのようにGCを排除したためプログラマに押し付けた借用チェックは無い。 
 Goよりも小さくて速いGC、それによる速度低下は最小限、Rustは学ぶ価値が確かにあるが非常に高い敷居。 
 Nimは非常に低い敷居(Goほどではないが)、表現力はC/C++そのもの、限りなく抑え込まれたタイプ量。 
 Nimにガベージコレクション(GC)有りは事実なのですが、 
 NimはオプションでGC無しにできるので、 
 Nimバージョン:1.5.1でRustのボローチェッカー 
 に似た「View types」が実装されれば 
 GC無しで、View types参照の有効性を検証する 
 ことによってメモリ安全性を保証しつつ高速化して 
 C/C++/Rustの代替に出来ますか? 
 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 は我々に教えてくれます 
 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 は我々に教えてくれます 
 いつの間にかJetBrainsのプラグインが出てたね。今更気がついたよ 
 これもかなり良いんじゃない?  
https://plugins.jetbrains.com/plugin/15128-nim  const str = [0, 1, 2, 3, 4] 
 for i in 0||str.high: echo str[i] 
 # nim --passC:"-fopenmp" --passL:"-fopenmp" c main.nim 
 >>92  Cの関数だけでもいろいろなコンパイラーにより規約が違うから、ダイナミックなリンケージを非常に素直に 
 書ける言語はこれくらいだと思う。rustもFFIで呼べるけど  
https://ja.wikipedia.org/wiki/呼出規約 
  Nim言語の開発者が$100k相当のBitcoinの寄付を受け取ったことが話題になっています。 
 www.reddit.com/r/programming/comments/qg2srd/nim_receives_100k_in_bitcoin_donations/ 
 >>99  公式での処理系は基本的にはC/C++のトランスコンパラですがJSのトランスコンパラとしても動作します。 
 言語的には依存している分けではなく、gccやclangの最適化の恩恵を受けるためにあえてそのようにして 
 いるようです。 
 また直接バイナリを吐き出す別のコンパイラarnetheduck/nlvmもあります。CrystalやRust、Swiftなどの 
 LLVMバックエンドと同じです。コンパイル時間を短縮しllvmバイナリとして僅かに小さくなります。 
  RustよりC++より速いんですか? 始めてみようかな 
 1.6.x系だけDLしようとするとマルウェア警告出るんだけどこれ大丈夫なんかね 
 Nimの公式サイトから入手したものなら大丈夫なはず。 
 Nimに含まれている実行ファイルやNimでコンパイルしたプログラムがアンチウィルスソフトウェアに誤検出される問題は多くの人々から報告されている。 
 Nim言語でマルウェアを書いてる人がいるせいで誤検出さるようになったらしい。 
 アンチウィルスソフトウェアは悪いことしないプログラムでもマルウェアと似たようなビットパターンを見つけるとマルウェアとみなすっぽい。 
 マルウェアと誤検知されたくなければnimで開発しない方が無難か。 
 多くの人が使っているプログラムでない限り誤検出される可能性はある。 
 C++使ってたころにビルドが完了してすぐに誤検出されことがあったし。 
 そういうどっちもどっち論じゃないだろ。
>>148は有意に誤検知が多いと言っているように見えるが。 
 Nimを書き初めて1ヶ月...procの第一引数に設定したオブジェクトにprocがバインドされる謎構文にはたまげたけど書き味がいいし気に入ったなあ 
 >>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()   Nimではプロシージャの呼び出し方が何通りかある。 
 echo("Hello") 
 # Command invocation syntax 
 echo "Hello" 
 # Method call syntax 
 "Hello".echo 
 "Hello".echo() 
 # Generalized raw string literals 
 # 引数が文字列リテラル一個のときのみ 
 echo"Hello" 
 >>155  なるほど👀 
 それでも変わった感じですよねえ 
  >156 
 Method call syntax はスマートだから他言語でも流行ってほしいところ。 
 特にPythonは真っ先に採用して欲しいわ。 
 あまり何通りもあるのはperlみたいになりそうでよろしくないな。 
 >>160  急にコンパイルできなくなって困ってたら 
 vccexe,exeがトロイ認定受けて削除されてた… 
 MSはnimをトロイだとみなしてるのか 
  >>161  前に一回同じ現象出たわ 
 コンパイル失敗するしWindows Defenderはうるさいしで何かやらかしたかと思った 
  >>164  すまんドイツ人だったわ 
 顔面からずっと南米の人だと思ってた 
  >>169  むしろ--mm:orcならRustよりNimのほうが循環もGCするだけメモリ安全だし、リリースビルドでオーバーフローチェックが意味不明にoffになり、言語仕様としてループindexにunsignedを使うRustのどこが安全なのかと小一時間。 
 まあNimでのdangerコンパイルと似てるし、構文上まだ危険な超絶ハック表現が出来てしまうので素人にはオススメ出来ない諸刃の剣。だけどsqlパッケージの文字列前提を絶対変えてほしい 
  RustのBorrow Checkerはメモリリークを防ぐものではないからね 
 templateまたはmacroの第一引数がuntypedだとmethod call syntaxが使えない。 
 method call syntaxでgenerics parameterを指定するときにfoo.myproc[:int]()みたいな感じで[]の中の初めに':'を付けないといけない。method call syntaxを使わないときは':'は不要。 
 という感じでmethod call syntaxにちょっとした罠がある。 
 macroが全く別言語になってる錆やその他諸々よりも、ちゃんと言語の最小サブセットになってるからまだマシ 
 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文字出ましたが何か腑に落ちません 
 >>176  そもそも何をしたいの? 
 windowsで日本語を表示したいだけならutf8を使ってればOk 
 デフォルトでNimのコマンドラインプログラムを実行するとchcp 65001コマンドを実行したときのようにコードページをutf8に変更される。 
 chcp 65001を実行してもちゃんと日本語が表示されるようにターミナルを設定しよう。   
 utf16なテキストをutf8に変換して表示したい場合はできるだけcast使わないようにコードを書こう。 
 castは危険なのでできるだけ使わないようにしよう。 
 (castはビットパターンが同じまま別の型と見なす変換なので実装詳細を知らずに使ってるとうまく動かない) 
 最初からstringに文字列を格納するようにするとか、ループで一文字づつstringにコピーすればcastは避けられると思う。 
  上の例とは若干違いますが 
 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 にならないのがなんでかなーというのも 
 同様の現象が原因だろうと思います 
 echo convert("\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x00\x00", "utf-8", "utf-16") 
 これは 
 ABCDEFG 
 と出力されます 
 >>178 の例で 
 var u16 = newSeq[uint16](16) 
 と定義しておくと(他は変更無し)(後半は0で埋まってる) 
 ABCDEFG 
 と表示されます 
  まあ cast に何を期待してるんだと言われればそれまでなんだと思いますが腑に落ちませんでした 
 nimってIDEやデバッガは近いうちに計画されてるの? 
 vscodeでもいいんだけど、ちゃんとしたデバッガは欲しいな 
 条件付きブレークポイントやコンテナの中身が見れる程度でいいんだが 
 >>182    vscodeのプラグイン 
 nimsaem.nimvscode + webfreak.debug ではだめか? 
  やっぱりその組み合わせか 
 どうにも使いづらいんだよねぇ 
 言語仕様は理想に近いんでもっと流行ってほしいんだが、これまでの情勢からあまり期待できなさそうだな 
 >>181  seqをstringにcastしているけど、ちゃんとseqとstringの実装詳細、データ構造を理解した上で安全だという確証があってcast 
  >>181  seqをstringにcastしているけど、ちゃんとseqとstringの実装詳細、データ構造を理解した上で安全だという確証があってcastしてるの? 
 そうでないならcast使うのはやめたほうがいいよ。 
  >>182  NimにGDBでデバッグできるようにするプラグインが付属していて 
 gdbでブレークポイントをおいたり変数の中身を表示したりできます。  
https://internet-of-tomohiro.netlify.app/nim/gdb.ja.html   >>178 >>180  var u16 = newString(16) 
 for n in 0..7: u16[n * 2] = cast[char](65 + n); u16[n * 2 + 1] = '\0' 
 u16[14] = '\0' 
 echo u16 # -> A B C D E F G 
 echo convert(u16, "utf-8", "utf-16") # -> ABCDEFG 
  >>189  castは極力使わないほうがいいのでビット演算使ってu16の値をcharに変換したほうがいいよ。 
 お手本コードを投稿しようとしたらcloudflareが悪意あるコードと勘違いしてブロックされた 
  こんな感じです 
 let c=65u16 + n 
 u16[n * 2] = char(c and 0xff'u16) 
 u16[n * 2 + 1] = char(c shr 8) 
 言語仕様としてはモダンな言語の中で1番わかりやすいし 
 Rustで書くほどでもない軽いスクリプトとかならNimで良いんだけど流行らんなあ 
 やはり個人開発者の言語が流行ることはもうないのか 
 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 
 と比べて 
 驚き最小の法則ですね 
 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 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 
 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 ? 
 libstdc++-6.dll 
 をコピーしてみましたがだめでした 
 >>203  objdumpっていうプログラムを使えばどのdllを使っているか見れるよ。 
 使い方忘れたからググってね。 
 Nimをインストールしたときにgccもインストールしてればそのときにobjdumpも一緒にインストールされる。 
 他にも依存しているdllを見れるツールは色々あるけど 
  >>206  windows用にもobjdumpあんの? 
  windows で nim 入れるときに一緒に入った mingw64 の中に objdump がありました 
 >>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 
 も必要でした 
 無事動作しましたありがとう 
  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() 
  
 簡単杉感嘆 
 >>213  セルフホストってどういう意味で言ってるかは知らないけど 
 Nim forum自体がNimで実装されてるよ。  
https://github.com/nim-lang/nimforum   プログラミング言語でセルフホスティングっていったらコンパイラが自身の言語で実装できることだろうよ 
 しかしできたとしてトランスパイラをセルフホスティングと呼んでいいのか 
 出力がC言語か機械語かの違いぐらいだしトランスパイラだとしても普通にセルフホスティングって呼ぶよ 
 https://github.com/nim-lang/Nim  ここにNim言語のコンパイラがあるけどソースコードはNim言語で書かれている。 
 gccなどのCコンパイラとgitがあればソースコードからビルドできる。 
 ソースコードからビルドするときはまず古いバージョンのNimコンパイラをC言語に変換したものをダウンロードしてCコンパイラでビルドする。 
 それでビルドしたNimコンパイラで最新のNimコンパイラをビルドする。 
  Cコンパイラは一般的にC言語で実装されているが、どうやってCコンパイラをビルドするのか 
 あらかじめビルド済みのCコンパイラを持ってきてビルドする 
 ではそのビルド済みのCコンパイラはどうやってビルドされたというのか 
 たぶん世界で最初のC言語はアセンブリかB言語かフォートランか何か別の言語で書かれていたんじゃないの? 
 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 
 観たいに描く方法は? 
 iterator `|`(x: HSlice; y: int): int = 
 みたいな演算子のイテレータを定義すればいいじゃん。 
 >>223    iterator items(s: SteppedSlice): int = 
     var c = s.a 
     while c <= s.b: 
       yield c 
       c += s.step   
 を定義したらイケました 
 有賀豚 
  1,2ヶ月くらい前に 
 Nim言語のマニュアル日本語訳がOSDNのページにアップされていて 
 これで5年後には結構人気が出るかもと喜んでいたら 
 突然ページが消滅してショックだった 
  
 キャッシュを探したけど発見できないので 
 コピー持ってる人がいたらどこかにアップしてもらえらばありがたいです 
 (ライセンス上問題が無ければですが) 
 古いキャッシュなら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://ja.osdn.net/users/megumi_engines/projects/  このひとがオーナーになってるプロジェクトの1つみたいだけど、Twitterのアカウントも消えちゃってるね 
 プライベートが忙しくなったのかな 
  Last Update: 2022-09-21 01:12 
 Nim プログラミング言語 - 非公式日本語版 (翻訳活動終了)に関する活動はすべて終了しました。リポジトリの再公開予定はありません。 
  
 理由はよう判らん 
 githubにfork無かったかな 
 日本語訳マニュアルの代わりになるかどうかはわからんけど 
 amazonで日本語のNim言語の書籍が売られてるよ。 
 当時高校生の描いたやつか 
 CやC++との連携について 
 一行しか描かれてなかったな 
 c2nim にがっかり感なんだけど 
 こんなもん? 
 それとも使い方間違ってる? 
 期待し過ぎ? 
 わかっているのかもしれないけど、c2nimはどんなC言語のコードもNim言語に変換するものではない。C言語ライブラリをNim言語から使うためのバインディングをCのヘッダーファイルから生成するツールみたいなものだ。 
 c2nimに似たことができるこんなツールもあるよ。  
https://github.com/PMunch/futhark  template hoge(fuga: string): string = 
   fmt"{fuga}" 
  
 観たいなときに fuga が undeclared になるんだけどなんで? 
 >>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. 
  >>242 自己レス 
 出来ました本当にありがとうございました 
 template hoge(fuga: string): string = 
   block: 
     let injectedfuga {.inject.} = fuga 
     fmt"{injected_fuga}"  
https://qiita.com/momeemt/items/000d1f6c384f4f00e103   Pythonスレでテンプレになってる内容をNim用に変更したので 
 次スレからはテンプレにしてください 
  
 -----ここから 
  
 Nimの★ソースコードをそのまま5ちゃんに貼るとインデントが崩れてチヌ★ 
 【【【複数の連続半角スペースはなにもなかったことにされる&タブは普通には入れられない】】】掲示板の仕様なので、 
 プログラム文は↓等の、いわゆるコードうp用サイトに貼ってこいください。 
 https://glot.io/new/nim    結構使える。 
 https://play.nim-lang.org/   本家。 
 http://ideone.com/      デフォ設定はC用のため、言語選択ボタン押下がピコ手間かも。 
 http://pastebin.com/     まずまずシンプル。 
  
 -----ここまで   これで逝けました 
 https://ideone.com/HBEKZu  pragmaのNimNodeを指定出来なかったらしい 
 ideone の Nim は (nim 0.19.4) 
 ↑のWandboxでも最新の安定版Nimを使えるしコードを共有できる。 
 >>250  wandboxだと(っていうかそれ以外でもかもだけど) 
 実行ボタンの上に 
 $ nim c ./prog.nim 
 って表示されてて c を cpp に変更したくても出来ない 
 左上の「コンパイルオプション」らしい枠に cpp を入れると 
 $ nim c ./prog.nim cpp 
 になったわ 
  >>254  確かにwandboxだとnim cppでコンパイルできないっぽいね 
 もしかしたらgithubのwandboxリポジトリに要望を出せば対応してくれるかもしれない。もしくは自分で機能を実装してpull requestを出すか 
  type 
   Hoge* = object 
     fuga*: int 
 としないで 
 type 
   HogeObj* = object 
     fuga*: int 
   Hoge* = ref HogeObj 
 とするのは必須?習慣? 
 前者のデメリットは DeepCopy だというのは判るのですが 
 毎回後者を使った方が良い? 
 横からだが 
 >>259 のbyrefと 
>>258 は完全に等価? 
 proc 読んだとき ref のフリをする fake が 259 
 ref objectは一つのオブジェクトを複数のオブジェクトから参照したいときや継承使ってオブジェクト指向なコードを書くときに必要となる。 
 それ以外の場合はrefのついていないobjectのほうが速くなることが多い。 
 ref型は常にヒープに確保されポインタ経由でアクセスされるけどobjectだとスタックに確保できるしポインタで間接的に参照する必要もない。 
 object型のseqだとメモリ上に連続して確保されるけどref object型のseqにするとメモリ上に連続して確保されるとは限らないからキャッシュミスが起きやすくなる。 
 ある程度大きなobjectはプロシージャに渡すときに自動的にポインタ経由で渡されるからコピーのコストが問題になることがあんまりないと思うよ。 
 C++で言えばobjectはstructをそのまま使っている感じでref objectはstructをstd::shared_ptrごしに使っている感じ。 
 proc incx(i: int): int = 
 let j = i 
 {.emit: "++j;".} 
 result = j   
 echo incx(5)    
https://glot.io/snippets/gfgq0p65a6  let で定義された変数も書き換え可能なんですね素敵ですね 
 >それ以外の場合はrefのついていないobjectのほうが速くなることが多い。 
  
 これはどうかなぁ 
 遅くなることの方が多いと思うが 
 >>265  どうしてrefのついてないobjectのほうが遅くなる場合が多いの? 
  >>263  emit pragma使っているんだからNimの安全性は無効になる。 
 rustでunsafeを使うようなもの。 
  >>262  >ある程度大きなobjectはプロシージャに渡すときに自動的にポインタ経由で渡されるから   
 ってことは {.byref.} 描く必要無い? 
  >>268  自動でやるのは関数の引数にオブジェとを渡した時だから 
 それ以外にコピーが頻繁に発生しないなら 
 byrefいらないんじゃね? 
  >>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. 
 って書いてあります。 
  >>268  https://nim-lang.org/docs/manual.html#foreign-function-interface-byref-pragma    Nim manualではbyref pragmaがForeign function interfaceの章の下にある。 
 つまりbyref pragmaはC/C++の関数に引数をポインタ渡ししなきゃいけないときに使うもの。 
 それ以外のときに使う必要性はほぼ無いってこと。 
  >>273  10kバイト以上のでかいobjectをたくさん使うとかならスタックを使わないようにref objectにしてヒープに確保してもいいと思う。 
 けどそんなにでかいobject型のローカル変数をたくさん使うことってあんまりないきがするけど。 
  たとえば 
 https://qiita.com/dumblepy/items/8d13592d6760d0155d89  >オブジェクトの宣言にはref objectを使います。 
 >Nimでは関数の引数に入れられた変数の容量に応じてコンパイラが自動で値渡し/参照渡しを調節しますが、 
 >これは挙動の予測が付かずバグの原因になりえます。 
 >ref objectでオブジェクトを宣言していれば必ず参照渡しになるので、 
 >アプリケーション開発ではこちらに統一しましょう。   
 みたいなことが 
 問題無い訳ではないとも 
 https://flat-leon.はてぶろ.com/entry/nim_arg_pass 
 バージョンや記事の年代に気を付けないといかんのかね 
 >>270  それは var の説明であって ref の説明ではないですね 
  >>275  >>278  refのついた型またはvar引数は常に引数を参照渡し(ポインタのコピー)する。 
 refやvarがついてない場合は引数のサイズにあわせてコピー渡しか参照渡しになるが、どちらにせよプロシージャ内で引数を変更するのは禁止 
  だからデフォルトの引数の渡し方でそれがコピー渡しになろうが参照渡しになろうがそれで挙動が変わったりバグの温床になることはない。 
 ただしaddrとかemit, Assembler statementなどのNimが安全性を保証してない機能を使う場合は例外だ。 
 参照とか reference とか同じ名前だから混同してるのかも知れないが 
 Nim の参照型と C++ の参照型は全く別物 
 C++ の引数で使う参照型 & は Nim では var の方が近い 
 Nim の ref は C++ ではポインタ * と思った方が良い 
 Nim では 
 GC で管理されるポインタが ref 
 GC で管理されないポインタが ptr 
 これ使うか使わないかでも全然違うのよね --gc:arc 
 Nim2では--mm:orcがデフォルトになるらしいぞ。 
 みんな知ってると思うけど--mm:arcだともし循環参照があったときにメモリリークするぞ。 
 >>275 のリンク先なんか 
 「Nimでアプリケーション開発をするための設計のベストプラクティス」 
 みたいにイキってるけど 
 信用していいの? 
  object type 全部 ref 付けろ教のひと 
 たまにいるよね 
 迷惑 
 なんでもかんでもref付けろと 
 しつこく強要してる人は 
 あたまおかしい 
 大抵は{.byref.}で用足りる 
 {.byref.}はnimからC/C++の関数を使うときに引数をポインタで渡しているときに使うもの。 
 それ以外では使う意味はないよ。 
 Nimはちゃんと最適な方法で引数を渡すから必要でもないのに{.byref.}とかvarとかつける必要はない。 
 var も ref も byref も全部別物だと何度言えば判るんだ? 
 >>293  みんなが必ず遭遇する問題なので 
 短くまとめて次スレからテンプレにするのが良い 
 以下 
>>293 のテンプレが続く 
  {.byref.}をrefと間違うのは判らんでもないし同情するが 
 {.byref.}をvarと間違う香具師は初めて観た 
 nim 1.6.10 出た 
  
 1.6.98 まで行くのかw 
 >>297  Nimでは正規表現よりPEGのほうがおすすめらしい。  
https://nim-lang.org/docs/pegs.html    PEG (Parsing expression grammar) is a simple deterministic grammar, that can be directly used for parsing. The current implementation has been designed as a more powerful replacement for regular expressions. UTF-8 is supported. 
  pythonのStringIOとかBytesIOみたいなのは無い? 
 https://nim-lang.org/docs/streams.html を観ると 
 FileStream = ref FileStreamObj ← 判る 
 FileStreamObj = object of Stream ← 判らん 
 StringStream = ref StringStreamObj ← 判る 
 StringStreamObj = object of StreamObj ← 判る 
 Stream = ref StreamObj ← 判る 
 StreamObj = object of RootObj ← 判る   
 なんで 
 FileStreamObj = object of StreamObj 
 になっていないのでしょう? 
 意図を知りたいです 
  https://github.com/nim-lang/Nim で 
 lib/pure/streams.nim の type を観ても 
 FileStream のだけ 
 FileStream* = ref FileStreamObj 
 FileStreamObj* = object of Stream 
 でした 
  命名の推測で「WHY?」という話なら、ofキーワードの後に来るのが、必ずxxxObjという規約ではないから。 
   目的としてxxxObjでないのは、それを扱いやすくするためでStringStreamやStreamはそのまま宣言したり 
 引数に渡したり、戻り値の型として記述して使用するのに対してxxxObjは普通にライブラリの使用者は 
 めったに直接的に使用しない。(ライブラリの設計者・実装者は普通に使う) 
 例を言えば、MemMapFileStream、ReadSocketStreamなども利用者は直接的に使用するが、いずれも 
 ストリーム系だがobject of の後にくるものは違う。   
 例えば、利用者はプロセスの出力をStreamで使用するなら、このようなprocを使う 
 proc outputStream*(p: Process): Stream   
 これを、クライアントプログラムの実装者が受け取る変数の定義でStreamObjと書いていたらおかしい。 
 APIドキュメントには、「最も使用される一般名称にはそのままの名前を付ける」としか書いてないが 
 Nimに限らず一般的に、1つか少数の抽象名と数多くの具象名は一般名称でプレ・サフィックスは付けない  
https://nim-lang.org/docs/nep1.html  When naming types that come in value, pointer, and reference varieties, use a regular name for the variety that is to be used the most, and add a "Obj", "Ref", or "Ptr" suffix for the other varieties. If there is no single variety that will be used the most, add the suffixes to the pointer variants only. The same applies to C/C++ wrappers.   
 似た話にxxxRefがあるがこちらはref objectに単に付けるが、型名をあまり使用しない場合で、なおかつ 
 ref objectであることを強調する場合が多い。 
 StringTabeRef* = ref StringTabeObj 
 var tbl = newStringTable(...) 
 https://play.nim-lang.org/#ix=4hrl  継承するときに基の型についてるrefは無視されるようなので 
 objectかref objectのどちらから継承しているかは重要ではないようだ。 
  template とか macro とか使うと 
 流れる様にさらさら描けて気持ち良いわコレ 
 templateとmacroを上手くに使えるようになりてえなあ☹ 
 こんな感じのmacroを書いていろんなコードを与えてみよう。 
 コンパイル時にecho x.treeReprの出力が表示される。 
 それを読めばNimのコードはAST(抽象構文木)になることが理解できると思う。 
 これがNimのmacroを理解する第一歩だと思う。   
 import std/macros   
 macro test(x: untyped): untyped = 
  echo x.treeRepr   
 test: 
  echo "test"   
 後はこれを読めばok  
https://nim-lang.org/docs/manual.html#macros  https://nim-lang.org/docs/macros.html  macro は AST 知ってると有利だね 
 あと head と body を受け取るタイプのと 
 node を受け取るのと 
 static type を受け取るのとか 
 区別して理解しないと 
 自分が何やってるのか判らなくなる 
 直交性という言葉を知ってるオジサン・・・ 
 C/C++言語の#def, #include→別言語(直交性100%)、錆びのprintln!→実は別言語(直交性100%) 
 むしろこれは言語が習得で異なる仕様の言語を2つ覚えないといけない、敷居を高くする欠点 
 NimNodeはseqに近い方法で扱えるようにmacrosモジュールにプロシージャが定義されているのはいいことでは。 
 今はNimNodeじゃなく、quote do:で書くのが良いよな。どうしてもNimNodeじゃなきゃ書けないマクロもあるだろうけどね 
 もう2.0かよ(´・ω・`)公開してるライブラリ大丈夫かな 
 バージョンが大きく変わって大丈夫と思う方が 
 無理がある 
 Nim言語を使っていても特につまづくことがないから話題があんまりないんだよね。 
 初心者はys3mとかrs3mで十分 
   Ziicubeでys3m出た 
 1割引き価格後の値段   
 679円   マグネット 
 1151円 Maglev 
 1623円 Boall-Core    
https://www.ziicube.com/Moyu-333-HuaMeng-YS3M  この言語ってRustみたいにプログラマに押し付けるmutなんて使ってないのに、なんでいわゆるMove操作が勝手に出来るの? 
 説明しろください! 
 Nim良いよね 
 Rustは宣伝がうざいだけだが 
 Nimは判ってる人の間でまったり進化してくれ 
 公式読めばだいたいのことはわかるから特にここでも議論は出ないよね 
 唯一日本語の書籍がもう一冊くらい欲しいなあくらい 
 夜遅くにすいません。 
 SyntaxHilighter用のNim Brushってどっかにありませんか? 
 >>343  ごめんなさい。 
 SyntaxHighlighter でした。 
  >>344  SyntaxHighlighter っていうのがよくわからないけど 
 VSCode拡張とかのこと? 
  >>345  えぇエ~それぐらいネットで調べ「てく」ださいよ~~。 
 伝えるのめんど「い」し、説明上手くないからネッ-トで調べた方が絶対%絶対%にわかると思うんですよね。 
 お願いしますよ~~ 
  Nim言語はコンパイル時にreadFileとwriteFileを使えるんだけどコンパイル時にファイルを読み書きできるプログラミング言語ってあまりないんじゃないか? 
 staticExecていうコンパイル時にコマンドを実行できるプロシージャもあるし。 
 どっかで既出かもしれんけど、結局VSCの拡張は何入れれば安牌? 
 初めてお邪魔します 
   下のスレッドでフィボナッチ数列(回帰関数)のベンチマークをやったのですが 
 Nim 2.0がダントツの速さでした   
 原因が分かる方、教えていただけますでしょうか、よろしくお願いいたします   
 Qiita 3 - キータぞ、来たぞ、キータだぞー  
http://2chb.net/r/tech/1685235361/368-371  http://2chb.net/r/tech/1685235361/373-375    上記スレ、fibonacci(44)の計算、抜粋   
 Nim(44はコマンドライン引数)  
https://wandbox.org/permlink/WoYP0STRKxaRBGCY  >Time= 0.240s Result=701408733   
 C/gcc(44はソース直書き)  
https://wandbox.org/permlink/9OYZBH14tYooZHF7  > Time: 0.89583 seconds   
 C/clang(44はソース直書き)  
https://wandbox.org/permlink/U97PecZYrzymnfH4  >Time=1.58712s Result=701408733 
 >>353  Nimでコンパイルするときに'--listcmd'オプションを与えるとNimがgccを呼び出すときにどんな引数を渡しているか表示されるようになります。 
 もしかすると凄く最適化されるようなオプションを渡しているのかもしれません。 
  >>354  早速の回答ありがとうございます   
 wandboxのspeedだとO3が見られたので、nim.cfgに gcc.options.speed = "-O2" を追加してついでに-d:ltoも外しました   
 Nim 2.0.0 + gcc 12.2.0(-O2) --verbosity:2 --listcmd --passL:-s (strip symbols)  
https://wandbox.org/permlink/RVJ4eHKKl5DARK3u    >CC: prog.nim: /opt/wandbox/gcc-12.2.0/bin/gcc -c -w -fmax-errors=3 -O2 -I... 
 >Hint: /opt/wandbox/gcc-12.2.0/bin/gcc ...  -lm -lm -lrt  -s   -ldl [Link] 
 >Hint: mm: orc; opt: speed; options: -d:danger   
 >Time= 0.274s Result=701408733 
 >Time= 0.252s Result=701408733 
 >Time= 0.251s Result=701408733 
 >Time= 0.250s Result=701408733 
 >Time= 0.250s Result=701408733   
 今度は確実に LTO無し gcc -O2 になりましたが、実効速度はダントツに速いままでした 
 何か気が付く点がありましたらまた今度教えてください (私の方は今日は限界です...) 
  >>355  Nim言語が高速なのはC言語コードを吐き出した時に 
 再帰処理をgotoループに置き換えている可能性があります 
 その場合C言語のオプションをいくら変更してもあまり意味はない 
 です   
 確認はコマンドライン引数に --nimcache:.cache を加えて 
 コンパイルして.cacheフォルダ内のC言語ファイルを確認すれば 
 わかるはず   
 nim c --nimcache:.cache -d:release ...   
 -d:relsese の部分は -d:danger で 置き換え可能で 
 dangerのほうが高速です   
 詳細はここ  
https://nim-lang.org/docs/nimc.html    コンパイル型言語のベンチを取る時は再帰処理コードは 
 避けた方が良いと思います 
  >>356 追記 
 末尾再帰になっている可能性もありかな 
  Nimコンパイラ自体は再帰関数の最適化はしてなかったと思う。 
 gccは再帰関数をループに置き換えているかもしれないからその確認をしたかったら-S -masm=intelを付けてアセンブリコードを出力させて読んでみよう。 
 >>356  変換キャッシュの見方、ありがとうございます   
 >再帰処理をgotoループに置き換えている可能性があります 
 確認したところ、置き換わっていませんでした   
 >コンパイル型言語のベンチを取る時は再帰処理コードは 
 >避けた方が良いと思います 
 ↑ここ詳しくお願いします   
 >再帰処理をgotoループに置き換えている 
 ↑こうなっていませんでしたが、これ前提での話だったのですか?   
 再帰fibonacciは個別の言語コンパイラ(更にバージョン)の 
 最適化ベンチマークには持って来いに見えますので 
  >>358  >Nimコンパイラ自体は再帰関数の最適化はしてなかったと思う。 
 その通りでした   
 確かめたところ二つの再帰関数コールがそのまま残っていて、 
 その他はNimのトランスパイル過程でのノイズがあるだけです   
 gccがノイズを消すために最適化を頑張った結果、Cより速くなったのですかね 
  何気にNim + gcc HEADにしてみたら、更に速かったです 
   Nim 2.0.0 + gcc 12.2.0 -O2 (44はコマンドライン引数)  
https://wandbox.org/permlink/RVJ4eHKKl5DARK3u  >Time= 0.250s Result=701408733   
 これ↑がこう↓   
 Nim 2.0.0 + gcc HEAD 14.0.0 -O2 (44はコマンドライン引数)  
https://wandbox.org/permlink/cpYesJtnlRNJiu7Z  >Time= 0.197s Result=701408733   
 参考値再掲(
>>353) 
 C/gcc -O2 (44はソース直書き)  
https://wandbox.org/permlink/9OYZBH14tYooZHF7  > Time: 0.89583 seconds   
 C/clang -O2 (44はソース直書き)  
https://wandbox.org/permlink/U97PecZYrzymnfH4  >Time=1.58712s Result=701408733     
 gccの最適化が凄すぎて意味わからないですが、ありがたく享受する事にします 
 レバテックωωω 
 Rust in 
 Nim out 
 ωωωωωω 
 >>349  F#が、 F# Dataってライブラリで、コンパイル時に 
 ファイルの読み取りは、やってたけれど、あまり見かけないね。 
  >>363  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 って python を強調し過ぎてるのはミスリードだと思うな 
 python と相性が良いってのは事実だけど Nim の特徴のほんの一部でしかない 
 >>366  Python使える人が多いからNimを広めるためにNim言語はpythonと同じだという人は多い。 
 文法がpythonに近いだけで中身は静的型言語だからpythonよりC++とかRustに近いと思う。 
 pythonしか知らない人がNimのオーバーロードとかGenericsとかobjectとref objectの違いとかちゃんと理解して使えるのかどうか心配になる。 
  「文法がpythonに近い」が事実じゃないんだよな 
 観た目が似てるだけであって文法が似てる訳じゃない 
 全然別物 
 そういう意味では構文で結構損してそう 
 オフサイドルールが気に入らない人にとってはそもそも検討に値しないし 
 Python好きな人ならそこは気にならないだろうけど、別に移行しやすくもない 
 >>369  でも静的型言語でオフサイドルールの言語はNimとcrystal以外あまりないのでは。 
 オフサイドルールが好きで型システムがちゃんとしていて高速に動くプログラムを書きたい人にはぴったり。 
  型で安全性を静的に担保したいと考える人が、同時にインデントで意味が変わってしまうオフサイドを好むってのはちぐはぐさを感じる 
 HaskellとデフォルトF#もオフサイドルールありですね。どうせインデントするんだしって使ってやれってくらいの感じなのかね? 
  
 あとは、インデントに意味はないけれど、goが標準のフォーマッタでインデント入れてくるね。 
 Python登場当時だと{}前後のどこで改行するか論争みたいなのがあったりして確かに括弧書くのが面倒な空気はあったんだよな 
 それがGo/Rustの世代だと言語標準のフォーマッタが勝手にやってくれるってなって 
 めんどくさくないっていうオフサイドのメリットはなくなってしまった 
 そうすると自動フォーマットしづらいとかコピペしづらいとかデメリットばかり目立つことになってしまう 
 ブロック毎に'{}'や行末に';'があるとソースコードが少し汚く見えるし 
 無いとすっきりして読みやすいと思うけどね。 
 まぁ人によるんじゃない 
 自分は{}がある方がブロックの識別性が良くて読みやすい 
 オフサイドは特にネストしたブロックの戻りが何段戻ったか見づらいんだよな 
 カッコありなら、lisp系が好き。 
 悩む事が減る。 
 >>374  セミコロンはオフサイドルールじゃなくてもRuby/Go/Kotlin/Swiftのように無しできるから関係ないよね   
 それにセミコロンをタイプするのは面倒だとは思うが慣れると読む時のノイズにはならない 
 自然言語の文章で句点やピリオド+改行がノイズにならないのと同じこと 
  CやC++を10年以上使っていたけど';'や'{}'が無いほうがすっくりして読みやすいと思うから慣れでどうにかなるものでは無いと思う。 
 こういうのは個人差があるのかもしれないが 
 https://github.com/jeetsukumaran/vim-indentwise  このVimのプラグインを使うと同じインデント間のカーソル移動、異なるインデント間のカーソル移動が簡単にできるからお勧めです。 
  >>379  CやC++やっててそんなこと言うやつ初めて聞いたぞ 
 本当に日々コード書いてる? 
  そりゃ仕事で使える言語でオフサイドルールなのってPythonくらいだし 
 ほんとはオフサイドがいいけどC/C++の仕事してるって人くらいいるでしょ 
 >>382  {}や;がノイズになるかどうかと 
 オフサイドがいいかどうかの話は別だよ 
  >>381  今はC/C++殆ど書いてないけど以前はほぼ毎日使ってたよ。 
 {}や;に慣れてもやっぱり余計な文字が少ない方がすっきりして読みやすいと思うのだが、そういう人は少数派なんかな? 
  主観で読みやすいかどうか力説しても結論でるわけない 
 オフサイドは誤ってインデントずれても気付かないままになってしまうのが問題 
 >>384  まぁ実際オフサイド採用の新規言語ってあまり出てこないし 
 少数派なんじゃないかな 
  f#みたいに、使う側が選択できれば、解決なんじゃない? 
 >>384  どちらの方がすっきりして読みやすいかと 
 {}や;が思考ノイズになるかどうかは別だよ   
 前者はそれなりにいる 
 後者はツチノコレベルで稀有 
  エディタの色設定で{};を薄い色にすればいいだけやん 
 {}がノイズになるようなら:や=はもちろんのことblock:なんて発狂ものだろうからNimは無理やろな 
 思考ノイズって 
 エロい事連想してるって意味だよな? 
 Nimってオフサイドルール以外の所は目立った欠点の無い言語なんかな。 
 それに実際にオフサイドルールでコードを書いていて困ったことないし。 
 インデントがずれても困るという人はインデントの幅をスペース4個とか広めにすればいいのでは 
 オフサイドルールは欠点だらけ 
  
 Pythonを例にすると 
 - カットペーストは命がけ 
 - ネット等で共有しにくい 
 - テキストエディタやIDEの支援が激弱 
 - dedentは手動タイピング必須 
 - 改行のために追加の()や\が結局必要 
 - インデントだけでは可読性が低いから余計な:が必要 
 - 空行の数まで厳密に意識する必要もある 
 - lambdaのone expression縛りのように言語の成長を阻害しやすい 
 - “explicit is better than implicit”と言いながらブロックはimplicit 
 Vim使ってるけどコピペは問題無くできるしインデントの深さもブロックごと'>'で調整できる。 
 vim-indentwiseでブロック毎カーソル移動可能。 
 スペース一個分だけでインデントするとかしない限りブロックの開始、終わりは前後の行のインデントの位置の違いでわかる。 
 vim-indentwiseでカーソル移動すればブロックの範囲も簡単にわかる。 
 以前はC/C++を書いてたけど{}や;が無くて読みづらいとか書きづらいとか思ったことは無いよ。 
 Nim書いていて改行のために追加の()や\が必要になることはほぼ無い 
 空行の数を厳密に意識する必要もない。 
 Nimを実際に書いたことあるの? 
 https://wandbox.org/permlink/Nfe6exUFmtWPdWZj  NimのAnonymous proceduresでは複数行書けるし 
 こうしてコードを共有できてる。 
  >>398  でもアロー関数にすると()を追加するなどしないと1行しか書けなくなる 
 これもオフサイドルールのせい 
 しかもこんな明らかなバグでも修正しようともしない 
 言語の成長を阻害するとはこういうこと 
  >>397  論点理解せずにvim使いなら誰でも知ってる基本を必死に解説されても困るわ   
 >以前はC/C++を書いてたけど{}や;が無くて読みづらいとか書きづらいとか思ったことは無いよ。 
 {}や;が無くて読みづらいとか書きづらいとか誰もそんなこと言ってないだろ? 
 勝手に脳内変換するなや   
 ついでに言うとセミコロン無い方が書きやすいのは当たり前のこと 
 だから新しい言語の多くがセミコロンレスを採用してる(オフサイドは採用しないけど) 
  >>399  アロー関数ってNimのsugarモジュールにある`=>`マクロのこと? 
 あくまでこの=>は二項演算子だから両辺は式になっていないといけない。 
 オフサイドルールに関係無く二項演算子の両辺に文を直接書けず式を置かないといけないのは殆どのプログラミング言語で同じじゃない? 
 複数文を書きたければanonymous procedureで書けばよいし。 
 オフサイドルールじゃない言語で無名関数に複数文を書くときは必ず{}で囲む必要があるし。 
 どうしてこれが言語の成長を阻害していることになるの? 
 明らかなバグなのに修正しようとしないって言うけどGithubのNimのリポジトリにそういうissueある? 
 無名関数を書くときはdo notationというのもあるよ。  
https://nim-lang.org/docs/manual.html#procedures-do-notation   「vimを使えばいい」とか「無名関数を使えばいい」などと列挙されても 
 他の言語はそんな特別なケアなしに使えるわけでな… 
 このあたりがいまいち広まらない原因なんじゃない? 
 >>402  現代では高機能なテキストエディタやIDEが使えるから 
 それを使うことを前提にプログラミング言語をデザインしたらいいんじゃね? 
 って話は聞いたことがある。   
 sugarの`=>`マクロはNim言語のanonymous procedureを特定の条件下で簡単に書けるよう作られたもので完全にanonymous procedureを置き換えられるものでない。 
 sugarモジュール自体がシンタックスシュガーのようなものを提供するマクロなどを集めたものだし。 
 制限とか気にせずにanonymous procedureを書きたかったら=>を使わずに書くしかない。 
  >>404  そのへんがまさに省略記法の悪い点が出てる感じするな 
 省略するってことはソースコードの情報量は減っていて、それはタダではない 
 「OOのときにはXXを使う」みたいな規則がたくさん発生するというコストがあるんだよね 
 これはセミコロンレスもそうで、時々変なエッジケースが発生したりする 
  オフサイドルールと違ってセミコロンレス(optional semicolon)は多くの言語で妥当なトレードオフ 
 オフサイドルールが妥当なトレードオフとして成立してるのはHaskell系の言語くらい 
 なんかどうでもいいことをいつまでも 
 うじうじと 
  
 気に入らないなら使わなきゃいいだけ 
 気に入ったら使えばいいだけ 
 >>407 
 気に入っていても: 
   ある日突然: 
     気に入らなくなる事ってあるよね? 
 気に入らなくても: 
   ちょっとしたきっかけで: 
     すごく気に入ってしまうことも 
     あるよね? 
  
 そういう時はどうすればいいの?   >>408 
 >    すごく気に入ってしまうことも 
 >    あるよね? 
 Error: invalid indentation   Nimはよく考えずに機能追加して既にC++並みに複雑化してる 
 目新しさだけで飛びつくと後悔するぞ 
 議論をよく読めば何やらちゃんと考えて実装しているらしいのはC++も同じなんだよなあ 
 >>415  単純に 
>>410 への反論なだけじゃない? 
  Rust言語はトヨタ自動車が採用してると 
 どこかで読んだ 
 プログラムをビルドするためにC++だったらCMake、Rustだったらcargo.tomlにTOMLを使う。 
 Nimだったらconfig.nimsも.nimbleファイルもNim言語で書ける。 
 一つの言語でコンパイル言語としてもスクリプト言語としても使えて便利。 
 Nimはマクロやconstなどをコンパイル時に実行するためにVM使ってるんだけど、そのVMを使ってNimをスクリプト言語のように実行できるらしい。 
 rustも複雑なことをしようと思ったらbuild.rsに書けるけど、それはそうとして依存関係をプログラム言語で書きたいかと言われると 
 あれもこれもできて便利!みたいなのはぱっと見良さそうでも 
 大規模・多人数・長期開発になると負債になりがちではある 
 procとmethodとfuncを使い分けつつ{.global.}や{.async.}なとの{.pragma.}とmacroでぐちゃぐちゃにかき混ぜられるのが超エレガントw 
 他の言語では類を見ない 
 https://github.com/kostya/benchmarks#primes  から派生させた、Atkin Sieveベンチマーク 
 計算本体だけの計測に改め、更に桁を増やし、途中計算がオーバーフローしないように関係変数はすべて64bit 
 UPPER_BOUND: 500_000_000   
 Zig 1912ms 
 g++ 1916ms 
 Nim 1920ms gcc 
 Nim 1969ms clang 
 clang++ 2151ms 
 Rust 2411ms overflow-checks = false 
 Rust 2430ms overflow-checks = true   
 Zigが速かったので他は色々と変更した 
 Zigの変更は最小限なので再現検証をする場合は各自のZig計測値を基準にしてください 
  特にデータ構造で 
 Nim seq[bool] 
 Rust Vec<bool> 
 は遅いので直ぐに取り換えてください 
 C++のvector<bool>は最適化がされていますが、最終的に別のものにしました 
lud20251030221728ID:rzHxkjlXのレス一覧:
 >>384  どちらの方がすっきりして読みやすいかと 
 {}や;が思考ノイズになるかどうかは別だよ   
 前者はそれなりにいる 
 後者はツチノコレベルで稀有 
  エディタの色設定で{};を薄い色にすればいいだけやん 
 {}がノイズになるようなら:や=はもちろんのことblock:なんて発狂ものだろうからNimは無理やろな 
 思考ノイズって 
 エロい事連想してるって意味だよな? 
 Nimってオフサイドルール以外の所は目立った欠点の無い言語なんかな。 
 それに実際にオフサイドルールでコードを書いていて困ったことないし。 
 インデントがずれても困るという人はインデントの幅をスペース4個とか広めにすればいいのでは 
 オフサイドルールは欠点だらけ 
  
 Pythonを例にすると 
 - カットペーストは命がけ 
 - ネット等で共有しにくい 
 - テキストエディタやIDEの支援が激弱 
 - dedentは手動タイピング必須 
 - 改行のために追加の()や\が結局必要 
 - インデントだけでは可読性が低いから余計な:が必要 
 - 空行の数まで厳密に意識する必要もある 
 - lambdaのone expression縛りのように言語の成長を阻害しやすい 
 - “explicit is better than implicit”と言いながらブロックはimplicit 
 Vim使ってるけどコピペは問題無くできるしインデントの深さもブロックごと'>'で調整できる。 
 vim-indentwiseでブロック毎カーソル移動可能。 
 スペース一個分だけでインデントするとかしない限りブロックの開始、終わりは前後の行のインデントの位置の違いでわかる。 
 vim-indentwiseでカーソル移動すればブロックの範囲も簡単にわかる。 
 以前はC/C++を書いてたけど{}や;が無くて読みづらいとか書きづらいとか思ったことは無いよ。 
 Nim書いていて改行のために追加の()や\が必要になることはほぼ無い 
 空行の数を厳密に意識する必要もない。 
 Nimを実際に書いたことあるの? 
 https://wandbox.org/permlink/Nfe6exUFmtWPdWZj  NimのAnonymous proceduresでは複数行書けるし 
 こうしてコードを共有できてる。 
  >>398  でもアロー関数にすると()を追加するなどしないと1行しか書けなくなる 
 これもオフサイドルールのせい 
 しかもこんな明らかなバグでも修正しようともしない 
 言語の成長を阻害するとはこういうこと 
  >>397  論点理解せずにvim使いなら誰でも知ってる基本を必死に解説されても困るわ   
 >以前はC/C++を書いてたけど{}や;が無くて読みづらいとか書きづらいとか思ったことは無いよ。 
 {}や;が無くて読みづらいとか書きづらいとか誰もそんなこと言ってないだろ? 
 勝手に脳内変換するなや   
 ついでに言うとセミコロン無い方が書きやすいのは当たり前のこと 
 だから新しい言語の多くがセミコロンレスを採用してる(オフサイドは採用しないけど) 
  >>399  アロー関数ってNimのsugarモジュールにある`=>`マクロのこと? 
 あくまでこの=>は二項演算子だから両辺は式になっていないといけない。 
 オフサイドルールに関係無く二項演算子の両辺に文を直接書けず式を置かないといけないのは殆どのプログラミング言語で同じじゃない? 
 複数文を書きたければanonymous procedureで書けばよいし。 
 オフサイドルールじゃない言語で無名関数に複数文を書くときは必ず{}で囲む必要があるし。 
 どうしてこれが言語の成長を阻害していることになるの? 
 明らかなバグなのに修正しようとしないって言うけどGithubのNimのリポジトリにそういうissueある? 
 無名関数を書くときはdo notationというのもあるよ。  
https://nim-lang.org/docs/manual.html#procedures-do-notation   「vimを使えばいい」とか「無名関数を使えばいい」などと列挙されても 
 他の言語はそんな特別なケアなしに使えるわけでな… 
 このあたりがいまいち広まらない原因なんじゃない? 
 >>402  現代では高機能なテキストエディタやIDEが使えるから 
 それを使うことを前提にプログラミング言語をデザインしたらいいんじゃね? 
 って話は聞いたことがある。   
 sugarの`=>`マクロはNim言語のanonymous procedureを特定の条件下で簡単に書けるよう作られたもので完全にanonymous procedureを置き換えられるものでない。 
 sugarモジュール自体がシンタックスシュガーのようなものを提供するマクロなどを集めたものだし。 
 制限とか気にせずにanonymous procedureを書きたかったら=>を使わずに書くしかない。 
  >>404  そのへんがまさに省略記法の悪い点が出てる感じするな 
 省略するってことはソースコードの情報量は減っていて、それはタダではない 
 「OOのときにはXXを使う」みたいな規則がたくさん発生するというコストがあるんだよね 
 これはセミコロンレスもそうで、時々変なエッジケースが発生したりする 
  オフサイドルールと違ってセミコロンレス(optional semicolon)は多くの言語で妥当なトレードオフ 
 オフサイドルールが妥当なトレードオフとして成立してるのはHaskell系の言語くらい 
 なんかどうでもいいことをいつまでも 
 うじうじと 
  
 気に入らないなら使わなきゃいいだけ 
 気に入ったら使えばいいだけ 
 >>407 
 気に入っていても: 
   ある日突然: 
     気に入らなくなる事ってあるよね? 
 気に入らなくても: 
   ちょっとしたきっかけで: 
     すごく気に入ってしまうことも 
     あるよね? 
  
 そういう時はどうすればいいの?  レス:1-200 201-400 401-600 601-800 801-1000 ALL 
このスレへの固定リンク: http://5chb.net/r/tech/1519896738/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。
TOPへ  TOPへ  
 
	  
	
	
	
全掲示板一覧 この掲示板へ 人気スレ | 
	Youtube 動画 
	>50 
	>100 
	>200 
	>300 
	>500 
	>1000枚 
	新着画像
 ↓「nim 	->画像>1枚 」を見た人も見ています:
・Xamarin Part7 
・Xamarin Part4 	
・Xamarin Part5 	
・Xamarin Part6 	
・Xamarin Part6 	
・gcc(MinGW)の良いところ 	
・.NET MAUI HighSchool 
・GARMIN社のGPSのプログラム
・abc系でみんなで人工知能を作ろう! 	
・X Window System PART-1 	
・日本語プログラミング言語Mind 	
・【死ね】configure大嫌い【RMS】
・C++/TemplateMetaProgramming
・【GNU】Emacs Lisp 【Elisp】
・【tomcat】異常終了【windows】 
・【GNU】Emacs Lisp 【Elisp】 
・.NET MAUIが不人気な原因なんなの? 
・Microsoft ASP.NET Blazor #02 
・seleniumでスクレイピング猛者募集中 
・cygwin + mingwn + gcc 相談室
・How to do Math in programming 
・Borland C++ Compiler オ ワ タ
・Welcome to the new 'tech' board!
・【入門】Common Lisp その11【質問よろず】
・Welcome to the new 'tech' board!
・WinFromとか未だに持ち上げられてる社会のゴミ 
・MacでもLinuxでも使えるVisual Studio Code 
・【入門】Common Lisp その12【質問よろず】 
・Cygwin + MinGW + GCC 相談室 Part 8
・Cygwin + MinGW + GCC 相談室 Part 3
・【Kotlin】Compose Multiplatform 1 
・Java⇔RDBのMapping-Frameworkを語るスレ Vol.6
・Smalltalkとオブジェクト指向議論スレ 
・iphone6とmacbookpro(2015)ってまだ現役? 	
・次世代言語27 Nim Zig Pony Carbon Gleam 
・【GNU】スクリプト言語 Guile【scheme】
・【DI】Java Spring Frameworkを語るスレ 5.0
・【.NET】WCF〜Windows通信基盤技術【通信】
・IBM Cloud、無料アカウントユーザーに通知なしで課金開始 
・EmEditor は、Windows11でも使えるのですか? 
・Microsoft Xamarin part8 [.NET MAUI] 
・Microsoft .NET MAUI part9 [Xamarin] 
・【wasm】ブラウザでC++。Emscriptenを語ろう 	
・最長不倒関数■C言語でmain関数に全コードを入れる 
・Machine Learning's code generator伝説 	
・Microsoft .NET MAUI part10 [Xamarin] 
・【マック】Macintoshプログラミング質問箱
・Flutter VS .NET MAUI VS React Native 
・chainerでnmtを使ったencoder-decoderを作りたい 	
・Flutter vs .NET MAUI vs React Native 2 
・アマゾン配達AI「配達地まで40kmなので1時間で行け」 
・MacでもLinuxでも使えるVisual Studio Code Part2 
・【悲報】macOSでOpenGL/CLが非推奨、CUDA対応は終了 	
・Message Passing Interface (MPI) 統合スレ
・Java Web Application Framework総合 ver2
・次世代言語26 TypeScript Swift Go Kotlin Nim 
・【TensorFlow】AIプログラム総合【MXnet】 
・【Erlang】プログラム言語 Elixir 【BEAM】 	
・【O3D】HTML5用 3D API WebGL 【Canvas:3D】
・Ricty Diminishedを超えるフォントが未だに現れない 
・[エディタ一つ]Windowsで無料プログラミング 
・GitHub「masterは奴隷を思い出すのでtrunkに変更」 
・MacのターミナルとWindowsのWSL 開発に向いてるのは 	
・ワイ氏、AIアルゴリズムTransformer理解できない 
  
    
  
 
 06:46:47 up 12 days, 22:08,  0 users,  load average: 60.36, 72.66, 72.73
 in 0.3288688659668 sec
@[email protected] on 110420 
   
  |