このコミットが含まれているのは:
守矢諏訪子 2023-06-05 14:36:44 +09:00
コミット 30f7bcb8a8
9個のファイルの変更336行の追加351行の削除

ファイルの表示

@ -67,52 +67,53 @@ Pixivで、割のイラストはNSFWですので、検閲として扱いま
<h2 id="zig">Zigとは?</h2>
<p><a href="https://ziglang.org/ja/">Zig</a>は隠された制御フローの無い、隠されたメモリ割り当ての無い、プリプロセッサの無い、マクロの無いシステムプログラミング用言語です。<br />
アセンブリ言語よりZig言語の方が読みやすくて、C言語よりZig言語の方が細かい制御が有りますので、アセンブリ言語より高水準言語で、C言語より低水準言語です。<br />
また、エラーを修正するまでエディターを終了するのは妨げさせるので、C言語より安全だと思います。<br />
現時代のC言語に成るポテンシャルが非常に高いと思います。<br />
新しい実験段階の言語なのに、主に日本人と中国人開発者で大人気みたいです。<br />
そうして、日本産のフォーク<a href="https://web.archive.org/web/20220201164721/https://zen-lang.org/ja-JP/community/">Zen言語</a>もありますが、<a href="https://www.gnu.org/proprietary/proprietary.ja.html">プロプライエタリ・ソフトウェア</a>ですので、あんま勧め出来ません。</p>
<p><a href="https://ziglang.org/ja/">Zig</a>は、隠れた制御フローや隠れたメモリ割り当て、プリプロセッサやマクロがないシステムプログラミング用言語です。<br />
アセンブリ言語よりも読みやすく、C言語よりも細かい制御が可能なため、アセンブリ言語よりは高水準でありながらC言語よりは低水準な言語と言えます。<br />
エラーを修正するまでエディタを終了することを防ぐので、C言語より安全だと言えます。<br />
新世代のC言語になり得るポテンシャルが非常に高いと思います。<br />
新しい言語ながら、特に日本人と中国人の開発者に人気があります。<br />
また、日本発の派生言語である<a href="https://web.archive.org/web/20220201164721/https://zen-lang.org/ja-JP/community/">Zen言語</a>もありますが、<a href="https://www.gnu.org/proprietary/proprietary.ja.html">プロプライエタリ・ソフトウェア</a>であるため、特に推奨はできません。</p>
<h2 id="rust">Rustとは?</h2>
<p><a href="https://www.rust-lang.org/ja/">Rust</a>はメモリ安全性とスレッド安全性が保証されるシステムプログラミング用言語です。<br />
Rust言語でメモリ安全性とスレッド安全性が一番大切な点みたいです。<br />
そうして、LinuxKernel6.1よりカーネルの中にRustコンパイラーが含められています。<br />
低水準言語なのに、Rust言語はPythonという非常に高水準言語で作られたみたいです。<br />
べたら、Zig言語は現時代のC言語に成る目的で、Rust言語が現時代のC++言語に成る目的が有ります。<br />
Rust言語は主に<a href="https://archive.is/IF1yS">LGBTというテロリスト</a>が多欧米で大人気です。</p>
<p><a href="https://www.rust-lang.org/ja/">Rust</a>は、メモリ安全性とスレッド安全性を保証するシステムプログラミング用の言語です。<br />
Rustではメモリ安全性とスレッド安全性が重要なポイントとなっています。<br />
Linux Kernel 6.1以降ではカーネルにRustコンパイラが含まれています。<br />
低水準言語でありながら、Rustは非常に高水準な言語であるPythonで作られているようです。<br />
較すると、Zigが新世代のC言語に、Rustが新世代のC++言語になろうとしていると言えます。<br />
Rustは、特に<a href="https://archive.is/IF1yS">LGBTというテロリスト</a>が多くの欧米で大人気です。</p>
<h2 id="rust-1">Rustのメリット</h2>
<ul>
<li>落ちるソフトを創作しにくい</li>
<li>大量のコミュニティがあり、サポートがいっぱい(<a href="https://youtube.owacon.moe/watch?v=DsBaC3_S-As">いっぱいおっぱい、僕元気♪</a>)</li>
<li>海外作業しているフリーランサーとして仕事が多い</li>
<li>安定して動作するソフトウェアを作りやすい</li>
<li>豊富なコミュニティと充実したサポート(<a href="https://youtube.owacon.moe/watch?v=DsBaC3_S-As">いっぱいおっぱい、僕元気♪</a>)</li>
<li>海外で働くフリーランサーにとって、仕事が多い</li>
</ul>
<h2 id="rust-2">Rustのデメリット</h2>
<ul>
<li>BSD対応が無い(主にOpenBSDとNetBSD)</li>
<li>みんなはCargoはNPMと同じく、全ての機能性は従属ソフトとして使われる</li>
<li>コンパイルは凄く遅い</li>
<li>バイナリーサイズは大きすぎる(Go言語のバイナリーも大きすぎるけど、これは高水準言語だから、それの場合はわかる)</li>
<li>変なライブラリーでリンカーされている(Zigのデメリットの下記から説明する)</li>
<li>BSD(特にOpenBSDとNetBSD)に対応していない</li>
<li>全ての機能性が従属ソフトとして扱われる</li>
<li>コンパイルが非常に遅い</li>
<li>バイナリサイズが大きい(Go言語のバイナリも大きいが、それは高水準言語である為理解出来る)</li>
<li>奇妙なライブラリでリンクされている(Zigのデメリットの後で説明する)</li>
<li>大きな変化が速すぎる</li>
<li><a href="https://www.rust-lang.org/ja/policies/code-of-conduct">行動規範あり</a></li>
<li><a href="https://www.rust-lang.org/ja/policies">法律のナンセンスが多すぎる</a></li>
<li>大きな変更が頻繁に行われる</li>
<li><a href="https://www.rust-lang.org/ja/policies/code-of-conduct">行動規範が存在する</a></li>
<li><a href="https://www.rust-lang.org/ja/policies">法律に関する問題が多い</a></li>
</ul>
<h2 id="zig-1">Zigのメリット</h2>
<ul>
<li>書きやすい</li>
<li>テスト機能が付いている</li>
<li><a href="/blog/c-lib-in-zig-use/">CとC++のライブラリーを使える</a></li>
<li>ZigコンパイラはC言語やC++言語のコードもコンパイル出来る</li>
<li>保存しながらエラーを報告する</li>
<li>テスト機能が付いている</li>
<li><a href="/blog/c-lib-in-zig-use/">CとC++のライブラリを利用出来る</a></li>
<li>ZigコンパイラはC言語やC++言語のコードもコンパイル出来る</li>
<li>エラーを保存しながら報告する</li>
</ul>
<h2 id="zig-2">Zigのデメリット</h2>
<ul>
<li>実験段階ソフト</li>
<li>使っている開発者は少ないから、サポートも少ない</li>
<li>強制リンター</li>
<li><a href="https://raw.githubusercontent.com/ziglang/zig/master/.github/CODE_OF_CONDUCT.md">行動規範</a></li>
<li>実験段階ソフト</li>
<li>利用者が少ない為、サポートも少ない</li>
<li>リンターが強制される</li>
<li><a href="https://raw.githubusercontent.com/ziglang/zig/master/.github/CODE_OF_CONDUCT.md">行動規範が存在する</a></li>
</ul>
<h2 id="rustvszig">RustのバイナリーVSZigのバイナリー</h2>
<h2 id="rust-vs-zig">Rustのバイナリ VS Zigのバイナリ</h2>
<p>一緒にやりましょう!!</p>
<pre><code lang="">mkdir -p ~/tmp/<span style="color:#666">{</span>rust,zig<span style="color:#666">}</span>
<span style="color:#a2f">cd</span> ~/tmp/rust
@ -121,7 +122,7 @@ cargo build
<span style="color:#a2f">cd</span> ../zig
zig init-exe
zig build
</code></pre><h3 id="zig-3">まずはZigのバイナリを確認す</h3>
</code></pre><h3 id="zig-3">まずはZigのバイナリを確認します</h3>
<pre><code lang=""><span style="color:#080;font-style:italic"># ./zig-out/bin/zig</span>
All your codebase are belong to us.
Run <span style="color:#b44">`</span>zig build <span style="color:#a2f">test</span><span style="color:#b44">`</span> to run the tests.
@ -134,13 +135,13 @@ Run <span style="color:#b44">`</span>zig build <span styl
<span style="color:#080;font-style:italic"># ldd ./zig-out/bin/zig</span>
動的実行ファイルではありません
</code></pre><p>静的バイナリー(バイナリーだけを別のパソコンにコピーしたら、きっと実行出来る事)なのに、962キビバイトだけですね。<br />
でも、まだデバッグ情報が有りますね。<br />
消したら、サイズはどうですか?</p>
</code></pre><p>静的バイナリ(バイナリだけを別のコンピュータにコピーすれば、実行できる)でありながら、サイズはわずか962キビバイトです。<br />
しかし、まだデバッグ情報が含まれています。<br />
それを削除すると、サイズはどうなるでしょう?</p>
<pre><code lang=""><span style="color:#080;font-style:italic"># strip ./zig-out/bin/zig && ls -thal ./zig-out/bin/zig</span>
-rwxr-xr-x <span style="color:#666">1</span> suwako suwako 374K 5月 <span style="color:#666">24</span> 20:42 ./zig-out/bin/zig
</code></pre><p>バカみたいに小さいわね!</p>
<h3 id="rust-3">次はRustのバイナリ</h3>
</code></pre><p>驚くほど小さいですね</p>
<h3 id="rust-3">次はRustのバイナリ</h3>
<pre><code lang=""><span style="color:#080;font-style:italic"># ls -thal ./target/debug/rust</span>
-rwxr-xr-x <span style="color:#666">2</span> suwako suwako 9.5M 5月 <span style="color:#666">24</span> 20:16 ./target/debug/rust
@ -152,18 +153,17 @@ Run <span style="color:#b44">`</span>zig build <span styl
libgcc_s.so.1 <span style="color:#666">=</span>> /usr/lib/libgcc_s.so.1 <span style="color:#666">(</span>0x00007fade07fd000<span style="color:#666">)</span>
libc.so.6 <span style="color:#666">=</span>> /usr/lib/libc.so.6 <span style="color:#666">(</span>0x00007fade0616000<span style="color:#666">)</span>
/lib64/ld-linux-x86-64.so.2 <span style="color:#666">=</span>> /usr/lib64/ld-linux-x86-64.so.2 <span style="color:#666">(</span>0x00007fade08a4000<span style="color:#666">)</span>
</code></pre><p>質問が有ります!!<br />
一体なぜlibcとlibgccを含めるの?<br />
そうして、「linux-vdso」って何?<br />
先に「変な従属ソフト」って言ったら、これと意味です。<br />
そうして、なぜ「Hello, World!」だけを出力するソフトは9.5メビバイトなの!?<br />
Zigのバイナリーは静的で覚えますか?<br />
Rustは動的ですので、もっとおかしいわ</p>
<p>デバッグ情報を消すと…</p>
</code></pre><p>なぜlibcとlibgccを含めるのでしょうか?<br />
そして、「linux-vdso」とは何でしょうか?<br />
先に「奇妙な依存ソフトウェア」と述べた時、これを指していました。<br />
また、なぜ「Hello, World!」だけを出力するソフトウェアが9.5メビバイトも必要なのでしょう?<br />
Zigのバイナリは静的であることを覚えていますか?<br />
Rustは動的であるため、さらに奇妙に感じます。</p>
<p>デバッグ情報を削除すると…</p>
<pre><code lang=""><span style="color:#080;font-style:italic"># strip ./target/debug/rust && ls -thal ./target/debug/rust</span>
-rwxr-xr-x <span style="color:#666">2</span> suwako suwako 319K 5月 <span style="color:#666">24</span> 20:50 ./target/debug/rust
</code></pre><p>今回は悪くないですね。<br />
でも、動的バイナリーですので、他のパソコンにコピーすると、ライブラリーが別のフォルダー(又は存在しない)に入ったら、実行出来ません(例えば、Artixでコンパイルしたら、Devuanで実行出来ない可能性が高い)。</p>
</code></pre><p>結果はそこまで悪くありませんね。<br />
しかし、バイナリは動的なので、他のコンピュータにコピーした場合、ライブラリが異なるフォルダに入っていたり、存在しない場合、実行できません(例えば、ArtixでコンパイルしたものがDevuanで実行できない可能性がある)。</p>
<p>以上</p>
@ -212,7 +212,7 @@ Rustは動的ですので、もっとおかしいわ</p>
<entry>
<id>blog/c-lib-in-zig-use.gmi</id>
<author><name>凛</name></author>
<title type="html">【プログラミング】Zig言語でC向けのライブラリーを使用する方法</title>
<title type="html">【プログラミング】Zig言語を使ってC向けのライブラリを利用する方法</title>
<published>2023-05-18T00:00:00Z</published>
<category term="jp"></category>
@ -232,15 +232,15 @@ Rustは動的ですので、もっとおかしいわ&lt;/p&gt;
&lt;p&gt;ゲーム開発といえば、C++とか、Unityとか、Unrealとか等が思い出しますね。&lt;br /&gt;
でも、Zigという新しい言語を使った方が良いと思います。&lt;br /&gt;
しかし、新しい言語なら、必要なライブラリー(SDL、VulkanかOpenGL等)はまだ存在しませんね。&lt;br /&gt;
心配なく、Zig言語の大メリットは、C言語及びC++のライブラリーをそのまま使える事です!&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://repology.org/project/zig/versions&#34;&gt;まずはZigコンパイラーをインストールして下さい。&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ゲーム開発といえば、C++やUnity、Unreal等がが頭に浮かびますね。&lt;br /&gt;
しかし、新しい言語であるZigを使う事をお勧めします。&lt;br /&gt;
新しい言語だからと言って、必要なライブラリ(SDL、VulkanやOpenGL等)は存在しないと思うかもしんが。心配は無用です。&lt;br /&gt;
Zig言語の大きなメリットは、C言語及びC++のライブラリをそのまま利用出来る事です!&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://repology.org/project/zig/versions&#34;&gt;まずはZigコンパイラをインストールしましょう。&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;mkdir zigdev &lt;span style=&#34;color:#666&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#a2f&#34;&gt;cd&lt;/span&gt; zigdev
nvim main.zig
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;下記のソースコードを使っております。&lt;br /&gt;
まずは確認して、何が起こる事を考えて下さい。&lt;/p&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;以下に示すソースコードを使用します。&lt;br /&gt;
まずは内容を確認し、何が起こるかを予想してみて下さい。&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;const&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;std&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@import&lt;/span&gt;(&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;std&amp;#34;&lt;/span&gt;);&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;const&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@cImport&lt;/span&gt;({&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@cInclude&lt;/span&gt;(&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;SDL2/SDL.h&amp;#34;&lt;/span&gt;);&lt;span style=&#34;color:#bbb&#34;&gt;
@ -297,16 +297,16 @@ nvim main.zig
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;}&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;&lt;/span&gt;}&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src=&#34;https://ass.technicalsuwako.moe/Screenshot_20230518_215802.png&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
&lt;p&gt;特に下のコードをご覧下さい。&lt;/p&gt;
&lt;p&gt;特に下のコードをご覧下さい。&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;const&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;std&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@import&lt;/span&gt;(&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;std&amp;#34;&lt;/span&gt;);&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;const&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@cImport&lt;/span&gt;({&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@cInclude&lt;/span&gt;(&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;SDL2/SDL.h&amp;#34;&lt;/span&gt;);&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;&lt;/span&gt;});&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;@importはZig言語のライブラリーのインクルードで、@cImportはC言語のライブラリのインクルードです。&lt;br /&gt;
&lt;code lang=&#34;&#34;&gt;#DEFINE&lt;/code&gt;なら、&lt;code lang=&#34;&#34;&gt;@cDefine&lt;/code&gt;となります。&lt;br /&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;@importはZig言語のライブラリーのインクルードする為の物で、@cImportはC言語のライブラリのインクルードする為の物です。&lt;br /&gt;
&lt;code lang=&#34;&#34;&gt;#DEFINE&lt;/code&gt;と同じ役割を果たすのが、&lt;code lang=&#34;&#34;&gt;@cDefine&lt;/code&gt;です。&lt;br /&gt;
例えば:&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;&lt;span style=&#34;color:#a2f&#34;&gt;@cDefine&lt;/span&gt;(&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;_GNU_SOURCE&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;{})&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;@cImportの後で、「c.なになに」でC言語の関数等を使えます。&lt;br /&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;@cImportの後しろでは、「c.何々」でC言語の関数等を利用する事が出来ます。&lt;br /&gt;
例えば:&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#a2f;font-weight:bold&#34;&gt;if&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;(c.SDL_Init(c.SDL_INIT_VIDEO)&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;!=&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;)&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;{&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_Log(&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;開始失敗: %s&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;c.SDL_GetError());&lt;span style=&#34;color:#bbb&#34;&gt;

ファイルの表示

@ -5,7 +5,7 @@
=> /blog/libreredirect-262.gmi 2023年05月13日 【】Libre Redirect 2.6.2登場
=> /blog/diff-zig-rust.gmi 2023年05月24日 【プログラミング】RustとZigの違い
=> /blog/spliti-110.gmi 2023年05月24日 【オワコンテック】spliti 1.1.0登場
=> /blog/c-lib-in-zig-use.gmi 2023年05月18日 【プログラミング】Zig言語でC向けのライブラリーを使用する方法
=> /blog/c-lib-in-zig-use.gmi 2023年05月18日 【プログラミング】Zig言語を使ってC向けのライブラリを利用する方法
=> /blog/urloli-210.gmi 2023年05月13日 【】URLロリ 2.1.0登場
=> /blog/urloli-202.gmi 2023年05月12日 【】URLロリ 2.0.2登場
=> /blog/urloli-201.gmi 2023年05月10日 【】URLロリ 2.0.1登場

ファイルの表示

@ -1,22 +1,22 @@
=> /blog.gmi ブログ一覧へ
#【プログラミング】Zig言語でC向けのライブラリーを使用する方法
#【プログラミング】Zig言語を使ってC向けのライブラリを利用する方法
投稿日2023-05-18
ゲーム開発といえば、C++とか、Unityとか、Unrealとか等が思い出しますね。
でも、Zigという新しい言語を使った方が良いと思います。
しかし、新しい言語なら、必要なライブラリー(SDL、VulkanかOpenGL等)はまだ存在しませんね
心配なく、Zig言語の大メリットは、C言語及びC++のライブラリーをそのまま使える事です!
ゲーム開発といえば、C++やUnity、Unreal等がが頭に浮かびますね。
しかし、新しい言語であるZigを使う事をお勧めします。
新しい言語だからと言って、必要なライブラリ(SDL、VulkanやOpenGL等)は存在しないと思うかもしんが。心配は無用です
Zig言語の大きなメリットは、C言語及びC++のライブラリをそのまま利用出来る事です!
=> https://repology.org/project/zig/versions まずはZigコンパイラーをインストールして下さい
=> https://repology.org/project/zig/versions まずはZigコンパイラをインストールしましょう
```sh
mkdir zigdev && cd zigdev
nvim main.zig
```
下記のソースコードを使っております。
まずは確認して、何が起こる事を考えて下さい。
以下に示すソースコードを使用します。
まずは内容を確認し、何が起こるかを予想してみて下さい。
```zig
const std = @import("std");
@ -78,7 +78,7 @@ pub fn main() !void {
=> /static/Screenshot_20230518_215802.png
特に下のコードをご覧下さい。
特に下のコードをご覧下さい。
```zig
const std = @import("std");
@ -87,15 +87,15 @@ const c = @cImport({
});
```
@importはZig言語のライブラリーのインクルードで、@cImportはC言語のライブラリのインクルードです。
`#DEFINE`なら、`@cDefine`となります。\
@importはZig言語のライブラリーのインクルードする為の物で、@cImportはC言語のライブラリのインクルードする為の物です。
`#DEFINE`と同じ役割を果たすのが、`@cDefine`です。
例えば:
```zig
@cDefine("_GNU_SOURCE", {})
```
@cImportの後で、「c.なになに」でC言語の関数等を使えます。
@cImportの後しろでは、「c.何々」でC言語の関数等を利用する事が出来ます。
例えば:
```zig

ファイルの表示

@ -4,51 +4,51 @@
投稿日2023-05-24
## Zigとは?
=> https://ziglang.org/ja/ Zigは隠された制御フローの無い、隠されたメモリ割り当ての無い、プリプロセッサの無い、マクロの無いシステムプログラミング用言語です。
アセンブリ言語よりZig言語の方が読みやすくて、C言語よりZig言語の方が細かい制御が有りますので、アセンブリ言語より高水準言語で、C言語より低水準言語です。
また、エラーを修正するまでエディターを終了するのは妨げさせるので、C言語より安全だと思います。
現時代のC言語に成るポテンシャルが非常に高いと思います。
新しい実験段階の言語なのに、主に日本人と中国人開発者で大人気みたいです。
=> https://web.archive.org/web/20220201164721/https://zen-lang.org/ja-JP/community/ そうして、日本産のフォークZen言語もありますが、
=> https://www.gnu.org/proprietary/proprietary.ja.html プロプライエタリ・ソフトウェアですので、あんま勧め出来ません。
=> https://ziglang.org/ja/ Zigは、隠れた制御フローや隠れたメモリ割り当て、プリプロセッサやマクロがないシステムプログラミング用言語です。
アセンブリ言語よりも読みやすく、C言語よりも細かい制御が可能なため、アセンブリ言語よりは高水準でありながらC言語よりは低水準な言語と言えます。
エラーを修正するまでエディタを終了することを防ぐので、C言語より安全だと言えます。
新世代のC言語になり得るポテンシャルが非常に高いと思います。
新しい言語ながら、特に日本人と中国人の開発者に人気があります。
=> https://web.archive.org/web/20220201164721/https://zen-lang.org/ja-JP/community/ また、日本発の派生言語であるZen言語もありますが、
=> https://www.gnu.org/proprietary/proprietary.ja.html プロプライエタリ・ソフトウェアであるため、特に推奨はできません。
## Rustとは?
=> https://www.rust-lang.org/ja/ Rustはメモリ安全性とスレッド安全性が保証されるシステムプログラミング用言語です。
Rust言語でメモリ安全性とスレッド安全性が一番大切な点みたいです。
そうして、LinuxKernel6.1よりカーネルの中にRustコンパイラーが含められています。
低水準言語なのに、Rust言語はPythonという非常に高水準言語で作られたみたいです。
べたら、Zig言語は現時代のC言語に成る目的で、Rust言語が現時代のC++言語に成る目的が有ります。
=> https://archive.is/IF1yS Rust言語は主にLGBTというテロリストが多い欧米で大人気です。
=> https://www.rust-lang.org/ja/ Rustは、メモリ安全性とスレッド安全性を保証するシステムプログラミング用の言語です。
Rustではメモリ安全性とスレッド安全性が重要なポイントとなっています。
Linux Kernel 6.1以降ではカーネルにRustコンパイラが含まれています。
低水準言語でありながら、Rustは非常に高水準な言語であるPythonで作られているようです。
較すると、Zigが新世代のC言語に、Rustが新世代のC++言語になろうとしていると言えます。
=> https://archive.is/IF1yS Rustは、特にLGBTというテロリストが多くの欧米で大人気です。
## Rustのメリット
落ちるソフトを創作しにく
=> https://youtube.owacon.moe/watch?v=DsBaC3_S-As ・大量のコミュニティがあり、サポートがいっぱい(いっぱいおっぱい、僕元気♪)
・海外作業しているフリーランサーとして仕事が多い
安定して動作するソフトウェアを作りやす
=> https://youtube.owacon.moe/watch?v=DsBaC3_S-As ・豊富なコミュニティと充実したサポート(いっぱいおっぱい、僕元気♪)
・海外で働くフリーランサーにとって、仕事が多い
## Rustのデメリット
・BSD対応が無い(主にOpenBSDとNetBSD)
みんなはCargoはNPMと同じく、全ての機能性は従属ソフトとして使われる
・コンパイルは凄く遅い
・バイナリーサイズは大きすぎる(Go言語のバイナリーも大きすぎるけど、これは高水準言語だから、それの場合はわかる)
変なライブラリーでリンカーされている(Zigのデメリットの下記から説明する)
・大きな変化が速すぎ
=> https://www.rust-lang.org/ja/policies/code-of-conduct ・行動規範あり
=> https://www.rust-lang.org/ja/policies ・法律のナンセンスが多すぎる
・BSD(特にOpenBSDとNetBSD)に対応していない
全ての機能性が従属ソフトとして扱われる
・コンパイルが非常に遅い
・バイナリサイズが大きい(Go言語のバイナリも大きいが、それは高水準言語である為理解出来る)
奇妙なライブラリでリンクされている(Zigのデメリットの後で説明する)
・大きな変更が頻繁に行われ
=> https://www.rust-lang.org/ja/policies/code-of-conduct ・行動規範が存在する
=> https://www.rust-lang.org/ja/policies ・法律に関する問題が多い
## Zigのメリット
・書きやすい
・テスト機能が付いている
=> /blog/c-lib-in-zig-use.gmi ・CとC++のライブラリーを使え
・ZigコンパイラはC言語やC++言語のコードもコンパイル出来る
・保存しながらエラーを報告する
・テスト機能が付いている
=> /blog/c-lib-in-zig-use.gmi ・CとC++のライブラリを利用出来
・ZigコンパイラはC言語やC++言語のコードもコンパイル出来る
エラーを保存しながら報告する
## Zigのデメリット
・実験段階ソフト
使っている開発者は少ないから、サポートも少ない
強制リンター
=> https://raw.githubusercontent.com/ziglang/zig/master/.github/CODE_OF_CONDUCT.md ・行動規範
・実験段階ソフト
利用者が少ない為、サポートも少ない
・リンターが強制される
=> https://raw.githubusercontent.com/ziglang/zig/master/.github/CODE_OF_CONDUCT.md ・行動規範が存在する
## RustのバイナリーVSZigのバイナリー
## Rustのバイナリ VS Zigのバイナリ
一緒にやりましょう!!
```sh
@ -61,7 +61,7 @@ zig init-exe
zig build
```
### まずはZigのバイナリを確認す
### まずはZigのバイナリを確認しま
```sh
# ./zig-out/bin/zig
@ -78,18 +78,18 @@ Run `zig build test` to run the tests.
動的実行ファイルではありません
```
静的バイナリー(バイナリーだけを別のパソコンにコピーしたら、きっと実行出来る事)なのに、962キビバイトだけですね
でも、まだデバッグ情報が有りますね
消したら、サイズはどうですか
静的バイナリ(バイナリだけを別のコンピュータにコピーすれば、実行できる)でありながら、サイズはわずか962キビバイトです
しかし、まだデバッグ情報が含まれています
それを削除すると、サイズはどうなるでしょう
```sh
# strip ./zig-out/bin/zig && ls -thal ./zig-out/bin/zig
-rwxr-xr-x 1 suwako suwako 374K 5月 24 20:42 ./zig-out/bin/zig
```
バカみたいに小さいわね!
驚くほど小さいですね
### 次はRustのバイナリ
### 次はRustのバイナリ
```sh
# ls -thal ./target/debug/rust
@ -105,22 +105,21 @@ Run `zig build test` to run the tests.
/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007fade08a4000)
```
質問が有ります!!
一体なぜlibcとlibgccを含めるの
そうして、「linux-vdso」って何
先に「変な従属ソフト」って言ったら、これと意味です。
そうして、なぜ「Hello, World!」だけを出力するソフトは9.5メビバイトなの!?
Zigのバイナリーは静的で覚えますか?
Rustは動的ですので、もっとおかしいわ
なぜlibcとlibgccを含めるのでしょうか?
そして、「linux-vdso」とは何でしょうか?
先に「奇妙な依存ソフトウェア」と述べた時、これを指していました。
また、なぜ「Hello, World!」だけを出力するソフトウェアが9.5メビバイトも必要なのでしょう?
Zigのバイナリは静的であることを覚えていますか?
Rustは動的であるため、さらに奇妙に感じます。
デバッグ情報を消すと…
デバッグ情報を削除すると…
```sh
# strip ./target/debug/rust && ls -thal ./target/debug/rust
-rwxr-xr-x 2 suwako suwako 319K 5月 24 20:50 ./target/debug/rust
```
今回は悪くないですね。
でも、動的バイナリーですので、他のパソコンにコピーすると、ライブラリーが別のフォルダー(又は存在しない)に入ったら、実行出来ません(例えば、Artixでコンパイルしたら、Devuanで実行出来ない可能性が高い)。
結果はそこまで悪くありませんね。
しかし、バイナリは動的なので、他のコンピュータにコピーした場合、ライブラリが異なるフォルダに入っていたり、存在しない場合、実行できません(例えば、ArtixでコンパイルしたものがDevuanで実行できない可能性がある)。
以上

ファイルの表示

@ -3,150 +3,143 @@
#【デジタル監視】SDGsの危険性の紹介
投稿日2022-07-19
=> http://ryocafe.i2p/blog/sdgs-dangerous/ For English version, click here.
最近はSDGsは対応している会社は非常に増えているみたいです。
でも、危険性を知っていますか!?
=> /blog/digital-autonomy-cashless-problem.gmi 2月下記の画像を見せましたが、まだ詳しく説明しませんでした。
最近、SDGsを採用している企業が増えてきました。
しかし、その中にはリスクが潜んでいることを認識していますか?
=> /blog/digital-autonomy-cashless-problem.gmi 2月に以下の画像を提示しましたが、詳細な説明はまだしていませんでした。
=> /static/SDGs.png
ですから、本日は各ゴールを説明しております
それでは、本日は各ゴールを解説していきましょう
## 1. 貧困をなくそう
実意味:共産実施
特に事業を営んだら、これは危険です。
共産主義の社会で、政府にコントロールされている会社しかないです。
日本の場合は、2030までAmazon、楽天、ソフトバンク、Google、マイクロソフト、Apple、及びNTTだけが残ります。
他の会社は全部倒産になります。
本当にこれを応援したいでしょうか!?
解釈:共産主義の導入
特に事業を行う場合、これは危険な可能性があります。
共産主義の社会では、政府がすべての会社をコントロールしています。
日本の場合、2030年までにAmazon、楽天、ソフトバンク、Google、マイクロソフト、Apple、そしてNTTだけが残り、他の会社はすべて倒産する可能性があります。
これを真剣に支持したいと思いますか?
## 2. 飢餓をゼロに
実意味:遺伝子組換え生物(GMO)
毒は多くなります。
病気な方が増えています。
10年前ヨーロッパの方は気づきましたので、これに対して戦いました。
解釈遺伝子組み換え生物(GMO)の利用
中毒のリスクが高まります。
健康問題が増えている現状も問題です。
10年前にヨーロッパでは、これに対する戦いが始まりました。
## 3. すべての人に健康と福祉を
実意味:強制接種
過去20年間以内、インドの方及びアフリカの方はワクチンの危険性を気づきました。
ですからインドとアフリカでコロナワクチン接種率は低いです。
誰も死にたくなくなりました
解釈:強制的な接種
過去20年間で、インドやアフリカの人々はワクチンのリスクに気付きました。
その結果、これらの地域でのコロナワクチン接種率は低いです。
誰も死を望んではいません
## 4. 質の高い教育をみんなに
実意味:インドクトリネーション
学校で必要な物を勉強していません。
もしかして過去で本当に勉強しましたが、入学は簡単になったと、不要な物ばかりを勉強しになりました。
例えば、共産主義、(ア)ジェンダー、政府に従い等、良い社会の未来と全然関係ないでしょ!
解釈:インドクトリネーション
学校では必要な学問を学んでいません。
かつては真剣に勉強していましたが、入学が容易になり、不要な事柄ばかりを学ぶようになりました。
例えば、共産主義、(ア)ジェンダー理論、政府への従順さなど、良い社会の未来とは全く関係ないと思いませんか?
## 5. ジェンダー平等を実現しよう
実意味:核家族の終了
これを応援したら、日本の絶滅を応援しています。
ジェンダー平等 = みんなはニューハーフ、同性愛者等に
みんなはニューハーフ、同性愛者等に = 生む事が出来ない
生む事が出来ない = 人口は減る
解釈:核家族の終焉
これを支持すると、日本の衰退を助長することになります。
ジェンダー平等が意味するものが全員がトランスジェンダーや同性愛者になることだとしたら、出生率が減少し、人口が減ることになります。
## 6. 安全な水とトイレを世界中に
実意味:水毒
解釈:水の汚染
フッ化物は毒です。
これは色々の歯医者様は私にそう言われましたので、陰謀論ではありません。
フッ化物入っている水を飲むと、水毒にします。
これは多くの歯科医から教えられたことで、陰謀論ではありません。
フッ化物が含まれた水を飲む事が危険です。
## 7. エネルギーをみんなに、そしてクリーンに
実意味:エネルギー進歩殺し
自由に脳で考えたら、停電にされます。
考えせず政府に従ったら、停電が起こりません
中国人は確かにこれをよくわかります。
=> /blog/digital-jisyu-own-or-permit.gmi ですから政治家にワクチンパスポートはそんなに大切ですね
解釈:エネルギー技術の抑制
自由に思考すると電力供給が停止させる可能性があります。
政府に従うと停電が起こらないといった状況があります
これは特に中国人が理解しています。
=> /blog/digital-jisyu-own-or-permit.gmi それが政治家たちがワクチンパスポートを強調する理由かもしれません
## 8. 働きがいも経済成長も
実意味:負債奴隷化
毎回不祥事発覚されたら、貴方の問題となります。
例えば、「今の総理は知らせず習近平大統領に億円を払ったと発覚されましたので、緊急に消費税は10%→50%に上がります。消費税を下がる予定がありません。」という事が起こります。
解釈:負債の奴隷化
不祥事が明るみに出るたびに、それがあなたの問題となります。
例えば、「現総理が知らされずに習近平大統領に9000億円を支払ったと発覚したため、緊急に消費税が10%から50%に上がります。消費税を下げる予定はありません。」といった事態が発生する可能性があります。
## 9. 産業と技術革新の基盤をつくろう
実意味:個人交通機関禁止
東アジアでほぼ問題がありませんが、それ以外は電車、バス等のシステムは本当に悪いです。
現在はヨーロッパで旅行中ですが、電車は理由無しで40分遅れる事が普通らしいです。
バスの場合は1〜2時間が遅れる場合は普通です。
ですから個人交通機関は禁止になったら、滅茶苦茶不便となります。
解釈:個人交通手段の禁止
東アジアではほとんど問題ありませんが、それ以外の地域では公共交通のシステムは非常に劣悪です。
現在、ヨーロッパを旅行していますが、電車は理由もなく40分遅れることが普通だそうです。
バスの場合、1〜2時間遅れるのが普通です。
個人的な交通手段が禁止されると、非常に不便になります。
## 10. 人や国の不平等をなくそう
実意味:強制同調
=> https://hozon.site/archive/1658230742/www3.nhk.or.jp/news/html/20220308/k10013519691000.html 侮辱罪の法律の実目的は何だと思いましたか?
=> https://elaws.e-gov.go.jp/document?lawid=321CONSTITUTION (因みに、第二十一条による憲法違反だ)
侮辱出来ない = 表現の自由がない
表現の自由がない = 検閲
検閲 = デジタル奴隷制度
解釈:強制的な同調
=> https://hozon.site/archive/1658230742/www3.nhk.or.jp/news/html/20220308/k10013519691000.html 侮辱罪の真の目的は何だと思いますか?
=> https://elaws.e-gov.go.jp/document?lawid=321CONSTITUTION (因みに憲法第二十一条に違反する)
侮辱できないと表現の自由がなくなり、それは検閲を意味します。
検閲はデジタル奴隷制度を意味します。
## 11. 住み続けられるまちづくりを
実意味:デジタル監視
いつでも自宅に居ると、監視社会はとても簡単となります。
=> /blog/digital-jisyu-own-or-permit.gmi 万が一出掛けたら、スマホであるワクパスにて監視を続けます。
ですから、Alexa、AmazonRing等を持ったら、大至急捨てた方が良いですよ
解釈:デジタル監視
常に自宅にいると、監視社会の構築が非常に容易になります。
=> /blog/digital-jisyu-own-or-permit.gmi もし外出すると、スマートフォン上のワクパスで監視が続けられます。
したがって、もしAlexa、Amazon Ringなどを持っているなら、速やかに処分した方が良いでしょう。
## 12. つくる責任 つかう責任
実意味:中央貨幣制度
もうCBDCの危険性について報告しましたので、これについてお読み下さい。
解釈:中央銀行デジタル通貨制度
すでにCBDCの危険性については報告していますので、詳細はそちらをご覧ください。
=> /blog/digital-autonomy-cashless-problem.gmi 1
=> /blog/digital-dorei-blackcock-ceo-ukraina-hoax-real-agenda.gmi 2
## 13. 気候変動に具体的な対策を
実意味:機構暴政
気候変動は只の詐欺です。
じでまだ信じる方が居るのは本当にありえないです。
気温はいつでも変わります、毎11年間は増減されています。
解釈:機関の暴政
気候変動は単なる詐欺です。
だこれを信じている人がいるのは驚きです。
気温は常に変化しており、毎11年ごとに変動しています。
気づきましたか?
毎回「気候変動」のプロパガンダがあれば、既にある税金が上がって、新しい税金が紹介されます。
「気候変動」のプロパガンダがあるたびに、既存の税金が上昇し、新しい税金が導入されます。
## 14. 海の豊かさを守ろう
実意味:海洋コントロール
現在は誰も海洋がコントロールされていません。
コントロールされると、海に泳げない様になります。
自分で発見する事が無理となります。
暴政されている国から逃げられない様になります。
キューバ人はよくわかります。
解釈:海洋管理
現在、海洋は誰も管理していません。
海洋が管理されると、海泳ぎが制限されます。
自分で発見することができなくなります。
暴政に支配された国から逃れることができなくなります。
キューバ人はこれをよく理解しています。
## 15. 陸の豊かさも守ろう
実意味:地域コントロール
自宅から5キロメートル以内で居る事が可能ですが、もっと遠くに行くと、警察官に止められます。
ソビエト連邦(ポーランド以外)に住んだ方はこれがよく知っています。
オーストラリアとカナダの方もそれを知っています。
暴政です!
解釈:地域管理
自宅から5キロメートル以内に留まることができますが、それ以上遠くに行こうとすると、警察に止められます。
ソビエト連邦(ポーランドを除く)に住んでいた人々はこれをよく理解しています。
オーストラリア人やカナダ人もこれを理解しています。
これは暴政です。
## 16. 平和と公正をすべての人に
実意味:不同意戦争
中東諸国で見たら、直ぐ分かると思います。
アメリカにより、「平和と公正を守る為に、差別せず爆撃しなきゃ」ですね
これはもう22年間そうです。
SDGsの場合も異なりません
解釈:無差別戦争
中東を見ればすぐにわかります。
アメリカは、「平和と公正を保つために、差別せずに爆撃する必要がある」と言います
これはすでに22年間続いています。
SDGsの場合も同様です
## 17. パートナーシップで目標を達成しよう
実意味:全世界政府
全世界政府があれば、各国々の文化は絶滅します
全世界は最悪な文化、中共の文化、になります。
実際にパートナーシップと関係がありません
解釈:全世界政府
今日までに、各国が独立していることは明らかでしょう
しかし、世界政府が設立されると、自国の立法府を無視して法律を制定することができます。
これがEUで起きています
=> /static/70991-and-neo-play-good-matrix-blue-youtube.png
上記を読んだら、SDGsを本当に応援して欲しいでしょうか?
応援を辞めた方が良いですよ!
大至急起きて下さい!!
これがSDGsの真の解釈と危険性です。
検討する価値があるでしょう。
以上

ファイルの表示

@ -6,7 +6,7 @@
2023-05-30T00:00:00Z09:00 【】Libre Redirect 2.6.2登場 - gemini://technicalsuwako.moe/blog/blog/libreredirect-262.gmi
2023-05-24T21:00:00Z09:00 【プログラミング】RustとZigの違い - gemini://technicalsuwako.moe/blog/blog/diff-zig-rust.gmi
2023-05-24T00:00:00Z09:00 【オワコンテック】spliti 1.1.0登場 - gemini://technicalsuwako.moe/blog/blog/spliti-110.gmi
2023-05-18T00:00:00Z09:00 【プログラミング】Zig言語でC向けのライブラリーを使用する方法 - gemini://technicalsuwako.moe/blog/blog/c-lib-in-zig-use.gmi
2023-05-18T00:00:00Z09:00 【プログラミング】Zig言語を使ってC向けのライブラリを利用する方法 - gemini://technicalsuwako.moe/blog/blog/c-lib-in-zig-use.gmi
2023-05-13T00:00:00Z09:00 【】URLロリ 2.1.0登場 - gemini://technicalsuwako.moe/blog/blog/urloli-210.gmi
2023-05-12T00:00:00Z09:00 【】URLロリ 2.0.2登場 - gemini://technicalsuwako.moe/blog/blog/urloli-202.gmi
2023-05-10T17:45:00Z09:00 【】URLロリ 2.0.1登場 - gemini://technicalsuwako.moe/blog/blog/urloli-201.gmi
@ -16,7 +16,7 @@
2023-04-18T00:00:00Z09:00 【Crux】自分のポートとレポジトリを作り方 - gemini://technicalsuwako.moe/blog/blog/crux-make-port-repository.gmi
2023-04-01T00:00:00Z09:00 【OpenBSD】xmodmapを使って英数(Caps Lock)キーをスーパーキーに変更する方法 - gemini://technicalsuwako.moe/blog/blog/openbsd-change-eisu-super.gmi
2023-03-27T00:00:00Z09:00 【デジタル奴隷制度】低水準言語書ける方が消えたら、テクニカルな世界がおしまい - gemini://technicalsuwako.moe/blog/blog/digital-dorei-dont-die-low-lever-programing.gmi
2023-03-08T00:00:00Z09:00 【デジタル監視】プライバシーに一番危険な物は監視カメラ、二番はスマホ - gemini://technicalsuwako.moe/blog/blog/digital-kansi-most-danger-cctv.gmi
2023-03-08T00:00:00Z09:00 【デジタル監視】プライバシーに一番の脅威は監視カメラ、二番はスマホ - gemini://technicalsuwako.moe/blog/blog/digital-kansi-most-danger-cctv.gmi
2023-02-08T00:00:00Z09:00 【HTML】静的サイトジェネレーター利用せず簡単に静的サイト編集する方法 - gemini://technicalsuwako.moe/blog/blog/no-generator-easy-maintain.gmi
2023-02-07T00:00:00Z09:00 【HTML】静的サイトジェネレーター利用せず簡単に静的サイト管理する方法 - gemini://technicalsuwako.moe/blog/blog/no-generator-easy-html.gmi
2023-02-03T00:00:00Z09:00 【ハード】IBM ThinkPad T43にSSDを入る方法 - gemini://technicalsuwako.moe/blog/blog/thinkpad-t43-ssd-install-way.gmi

ファイルの表示

@ -1,22 +1,22 @@
title: 【プログラミング】Zig言語でC向けのライブラリーを使用する方法
title: 【プログラミング】Zig言語を使ってC向けのライブラリを利用する方法
author: 凛
date: 2023-05-18
tags: jp,blog,ゲーム開発,Zig,C言語,SDL
----
ゲーム開発といえば、C++とか、Unityとか、Unrealとか等が思い出しますね。\
でも、Zigという新しい言語を使った方が良いと思います。\
しかし、新しい言語なら、必要なライブラリー(SDL、VulkanかOpenGL等)はまだ存在しませんね。\
心配なく、Zig言語の大メリットは、C言語及びC++のライブラリーをそのまま使える事です!
ゲーム開発といえば、C++やUnity、Unreal等がが頭に浮かびますね。\
しかし、新しい言語であるZigを使う事をお勧めします。\
新しい言語だからと言って、必要なライブラリ(SDL、VulkanやOpenGL等)は存在しないと思うかもしんが。心配は無用です。\
Zig言語の大きなメリットは、C言語及びC++のライブラリをそのまま利用出来る事です!
[まずはZigコンパイラーをインストールして下さい。](https://repology.org/project/zig/versions)
[まずはZigコンパイラをインストールしましょう。](https://repology.org/project/zig/versions)
```sh
mkdir zigdev && cd zigdev
nvim main.zig
```
下記のソースコードを使っております。\
まずは確認して、何が起こる事を考えて下さい。
以下に示すソースコードを使用します。\
まずは内容を確認し、何が起こるかを予想してみて下さい。
```zig
const std = @import("std");
@ -78,7 +78,7 @@ pub fn main() !void {
![](https://ass.technicalsuwako.moe/Screenshot_20230518_215802.png)
特に下のコードをご覧下さい。
特に下のコードをご覧下さい。
```zig
const std = @import("std");
@ -87,15 +87,15 @@ const c = @cImport({
});
```
@importはZig言語のライブラリーのインクルードで、@cImportはC言語のライブラリのインクルードです。\
`#DEFINE`なら、`@cDefine`となります。\
@importはZig言語のライブラリーのインクルードする為の物で、@cImportはC言語のライブラリのインクルードする為の物です。\
`#DEFINE`と同じ役割を果たすのが、`@cDefine`です。\
例えば:
```zig
@cDefine("_GNU_SOURCE", {})
```
@cImportの後で、「c.なになに」でC言語の関数等を使えます。\
@cImportの後しろでは、「c.何々」でC言語の関数等を利用する事が出来ます。\
例えば:
```zig

ファイルの表示

@ -4,50 +4,51 @@ date: 2023-05-24 21:00
tags: jp,blog,Zig,Rust,システム開発
----
## Zigとは?
[Zig](https://ziglang.org/ja/)は隠された制御フローの無い、隠されたメモリ割り当ての無い、プリプロセッサの無い、マクロの無いシステムプログラミング用言語です。\
アセンブリ言語よりZig言語の方が読みやすくて、C言語よりZig言語の方が細かい制御が有りますので、アセンブリ言語より高水準言語で、C言語より低水準言語です。\
また、エラーを修正するまでエディターを終了するのは妨げさせるので、C言語より安全だと思います。\
現時代のC言語に成るポテンシャルが非常に高いと思います。\
新しい実験段階の言語なのに、主に日本人と中国人開発者で大人気みたいです。\
そうして、日本産のフォーク[Zen言語](https://web.archive.org/web/20220201164721/https://zen-lang.org/ja-JP/community/)もありますが、[プロプライエタリ・ソフトウェア](https://www.gnu.org/proprietary/proprietary.ja.html)ですので、あんま勧め出来ません。
[Zig](https://ziglang.org/ja/)は、隠れた制御フローや隠れたメモリ割り当て、プリプロセッサやマクロがないシステムプログラミング用言語です。\
アセンブリ言語よりも読みやすく、C言語よりも細かい制御が可能なため、アセンブリ言語よりは高水準でありながらC言語よりは低水準な言語と言えます。\
エラーを修正するまでエディタを終了することを防ぐので、C言語より安全だと言えます。\
新世代のC言語になり得るポテンシャルが非常に高いと思います。\
新しい言語ながら、特に日本人と中国人の開発者に人気があります。\
また、日本発の派生言語である[Zen言語](https://web.archive.org/web/20220201164721/https://zen-lang.org/ja-JP/community/)もありますが、[プロプライエタリ・ソフトウェア](https://www.gnu.org/proprietary/proprietary.ja.html)であるため、特に推奨はできません。
## Rustとは?
[Rust](https://www.rust-lang.org/ja/)はメモリ安全性とスレッド安全性が保証されるシステムプログラミング用言語です。\
Rust言語でメモリ安全性とスレッド安全性が一番大切な点みたいです。\
そうして、LinuxKernel6.1よりカーネルの中にRustコンパイラーが含められています。\
低水準言語なのに、Rust言語はPythonという非常に高水準言語で作られたみたいです。\
べたら、Zig言語は現時代のC言語に成る目的で、Rust言語が現時代のC++言語に成る目的が有ります。\
Rust言語は主に[LGBTというテロリスト](https://archive.is/IF1yS)が多い欧米で大人気です。
[Rust](https://www.rust-lang.org/ja/)は、メモリ安全性とスレッド安全性を保証するシステムプログラミング用の言語です。\
Rustではメモリ安全性とスレッド安全性が重要なポイントとなっています。\
Linux Kernel 6.1以降ではカーネルにRustコンパイラが含まれています。\
低水準言語でありながら、Rustは非常に高水準な言語であるPythonで作られているようです。\
較すると、Zigが新世代のC言語に、Rustが新世代のC++言語になろうとしていると言えます。\
Rustは、特に[LGBTというテロリスト](https://archive.is/IF1yS)が多くの欧米で大人気です。
## Rustのメリット
* 落ちるソフトを創作しにく
* 大量のコミュニティがあり、サポートがいっぱい([いっぱいおっぱい、僕元気♪](https://youtube.owacon.moe/watch?v=DsBaC3_S-As))
* 海外作業しているフリーランサーとして仕事が多い
* 安定して動作するソフトウェアを作りやす
* 豊富なコミュニティと充実したサポート([いっぱいおっぱい、僕元気♪](https://youtube.owacon.moe/watch?v=DsBaC3_S-As))
* 海外で働くフリーランサーにとって、仕事が多い
## Rustのデメリット
* BSD対応が無い(主にOpenBSDとNetBSD)
* みんなはCargoはNPMと同じく、全ての機能性は従属ソフトとして使われる
* コンパイルは凄く遅い
* バイナリーサイズは大きすぎる(Go言語のバイナリーも大きすぎるけど、これは高水準言語だから、それの場合はわかる)
* 変なライブラリーでリンカーされている(Zigのデメリットの下記から説明する)
* BSD(特にOpenBSDとNetBSD)に対応していない
* 全ての機能性が従属ソフトとして扱われる
* コンパイルが非常に遅い
* バイナリサイズが大きい(Go言語のバイナリも大きいが、それは高水準言語である為理解出来る)
* 奇妙なライブラリでリンクされている(Zigのデメリットの後で説明する)
* 大きな変化が速すぎる
* [行動規範あり](https://www.rust-lang.org/ja/policies/code-of-conduct)
* [法律のナンセンスが多すぎる](https://www.rust-lang.org/ja/policies)
* 大きな変更が頻繁に行われる
* [行動規範が存在する](https://www.rust-lang.org/ja/policies/code-of-conduct)
* [法律に関する問題が多い](https://www.rust-lang.org/ja/policies)
## Zigのメリット
* 書きやすい
* テスト機能が付いている
* [CとC++のライブラリーを使える](/blog/c-lib-in-zig-use/)
* ZigコンパイラはC言語やC++言語のコードもコンパイル出来る
* 保存しながらエラーを報告する
* テスト機能が付いている
* [CとC++のライブラリを利用出来る](/blog/c-lib-in-zig-use/)
* ZigコンパイラはC言語やC++言語のコードもコンパイル出来る
* エラーを保存しながら報告する
## Zigのデメリット
* 実験段階ソフト
* 使っている開発者は少ないから、サポートも少ない
* 強制リンター
* [行動規範](https://raw.githubusercontent.com/ziglang/zig/master/.github/CODE_OF_CONDUCT.md)
* 実験段階ソフト
* 利用者が少ない為、サポートも少ない
* リンターが強制される
* [行動規範が存在する](https://raw.githubusercontent.com/ziglang/zig/master/.github/CODE_OF_CONDUCT.md)
## RustのバイナリーVSZigのバイナリー
## Rustのバイナリ VS Zigのバイナリ
一緒にやりましょう!!
```sh
@ -60,7 +61,7 @@ zig init-exe
zig build
```
### まずはZigのバイナリを確認す
### まずはZigのバイナリを確認しま
```sh
# ./zig-out/bin/zig
@ -77,18 +78,18 @@ Run `zig build test` to run the tests.
動的実行ファイルではありません
```
静的バイナリー(バイナリーだけを別のパソコンにコピーしたら、きっと実行出来る事)なのに、962キビバイトだけですね。\
でも、まだデバッグ情報が有りますね。\
消したら、サイズはどうですか
静的バイナリ(バイナリだけを別のコンピュータにコピーすれば、実行できる)でありながら、サイズはわずか962キビバイトです。\
しかし、まだデバッグ情報が含まれています。\
それを削除すると、サイズはどうなるでしょう
```sh
# strip ./zig-out/bin/zig && ls -thal ./zig-out/bin/zig
-rwxr-xr-x 1 suwako suwako 374K 5月 24 20:42 ./zig-out/bin/zig
```
バカみたいに小さいわね!
驚くほど小さいですね
### 次はRustのバイナリ
### 次はRustのバイナリ
```sh
# ls -thal ./target/debug/rust
@ -104,22 +105,21 @@ Run `zig build test` to run the tests.
/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007fade08a4000)
```
質問が有ります!!\
一体なぜlibcとlibgccを含めるの?\
そうして、「linux-vdso」って何?\
先に「変な従属ソフト」って言ったら、これと意味です。\
そうして、なぜ「Hello, World!」だけを出力するソフトは9.5メビバイトなの!?\
Zigのバイナリーは静的で覚えますか?\
Rustは動的ですので、もっとおかしいわ
なぜlibcとlibgccを含めるのでしょうか?\
そして、「linux-vdso」とは何でしょうか?\
先に「奇妙な依存ソフトウェア」と述べた時、これを指していました。\
また、なぜ「Hello, World!」だけを出力するソフトウェアが9.5メビバイトも必要なのでしょう?\
Zigのバイナリは静的であることを覚えていますか?\
Rustは動的であるため、さらに奇妙に感じます。
デバッグ情報を消すと…
デバッグ情報を削除すると…
```sh
# strip ./target/debug/rust && ls -thal ./target/debug/rust
-rwxr-xr-x 2 suwako suwako 319K 5月 24 20:50 ./target/debug/rust
```
今回は悪くないですね。\
でも、動的バイナリーですので、他のパソコンにコピーすると、ライブラリーが別のフォルダー(又は存在しない)に入ったら、実行出来ません(例えば、Artixでコンパイルしたら、Devuanで実行出来ない可能性が高い)。
結果はそこまで悪くありませんね。\
しかし、バイナリは動的なので、他のコンピュータにコピーした場合、ライブラリが異なるフォルダに入っていたり、存在しない場合、実行できません(例えば、ArtixでコンパイルしたものがDevuanで実行できない可能性がある)。
以上

ファイルの表示

@ -3,147 +3,140 @@ author: 凜
date: 2022-07-19
tags: jp,blog,デジタル監視,詐欺,自由
----
[For English version, click here.](https://ryocafe.site/blog/sdgs-dangerous/)
最近はSDGsは対応している会社は非常に増えているみたいです。\
でも、危険性を知っていますか!?\
[2月](/blog/digital-autonomy-cashless-problem/)下記の画像を見せましたが、まだ詳しく説明しませんでした。\
最近、SDGsを採用している企業が増えてきました。\
しかし、その中にはリスクが潜んでいることを認識していますか?\
[2月](/blog/digital-autonomy-cashless-problem/)に以下の画像を提示しましたが、詳細な説明はまだしていませんでした。\
![](https://ass.technicalsuwako.moe/SDGs.png)
ですから、本日は各ゴールを説明しております
それでは、本日は各ゴールを解説していきましょう
## 1. 貧困をなくそう
実意味:共産実施\
特に事業を営んだら、これは危険です。\
共産主義の社会で、政府にコントロールされている会社しかないです。\
日本の場合は、2030までAmazon、楽天、ソフトバンク、Google、マイクロソフト、Apple、及びNTTだけが残ります。\
他の会社は全部倒産になります。\
本当にこれを応援したいでしょうか!?
解釈:共産主義の導入\
特に事業を行う場合、これは危険な可能性があります。\
共産主義の社会では、政府がすべての会社をコントロールしていまです。\
日本の場合、2030年までにAmazon、楽天、ソフトバンク、Google、マイクロソフト、Apple、そしてNTTだけが残り、他の会社はすべて倒産する可能性があります。\
これを真剣に支持したいと思いますか?
## 2. 飢餓をゼロに
実意味:遺伝子組換え生物(GMO)\
毒は多くなります。\
病気な方が増えています。\
10年前ヨーロッパの方は気づきましたので、これに対して戦いました。
解釈遺伝子組み換え生物(GMO)の利用\
中毒のリスクが高まります。\
健康問題が増えている現状も問題です。\
10年前にヨーロッパでは、これに対する戦いが始まりました。
## 3. すべての人に健康と福祉を
実意味:強制接種\
過去20年間以内、インドの方及びアフリカの方はワクチンの危険性を気づきました。\
ですからインドとアフリカでコロナワクチン接種率は低いです。\
誰も死にたくなくなりました
解釈:強制的な接種\
過去20年間で、インドやアフリカの人々はワクチンのリスクに気付きました。\
その結果、これらの地域でのコロナワクチン接種率は低いです。\
誰も死を望んではいません
## 4. 質の高い教育をみんなに
実意味:インドクトリネーション\
学校で必要な物を勉強していません。\
もしかして過去で本当に勉強しましたが、入学は簡単になったと、不要な物ばかりを勉強しになりました。\
例えば、共産主義、(ア)ジェンダー、政府に従い等、良い社会の未来と全然関係ないでしょ!
解釈:インドクトリネーション\
学校では必要な学問を学んでいません。\
かつては真剣に勉強していましたが、入学が容易になり、不要な事柄ばかりを学ぶようになりました。\
例えば、共産主義、(ア)ジェンダー理論、政府への従順さなど、良い社会の未来とは全く関係ないと思いませんか?
## 5. ジェンダー平等を実現しよう
実意味:核家族の終了\
これを応援したら、日本の絶滅を応援しています。\
ジェンダー平等 = みんなはニューハーフ、同性愛者等に\
みんなはニューハーフ、同性愛者等に = 生む事が出来ない\
生む事が出来ない = 人口は減る
解釈:核家族の終焉\
これを支持すると、日本の衰退を助長することになります。\
ジェンダー平等が意味するものが全員がトランスジェンダーや同性愛者になることだとしたら、出生率が減少し、人口が減ることになります。
## 6. 安全な水とトイレを世界中に
実意味:水毒\
解釈:水の汚染\
フッ化物は毒です。\
これは色々の歯医者様は私にそう言われましたので、陰謀論ではありません。\
フッ化物入っている水を飲むと、水毒にします。
これは多くの歯科医から教えられたことで、陰謀論ではありません。\
フッ化物が含まれた水を飲む事が危険です。
## 7. エネルギーをみんなに、そしてクリーンに
実意味:エネルギー進歩殺し\
自由に脳で考えたら、停電にされます。\
考えせず政府に従ったら、停電が起こりません。\
中国人は確かにこれをよくわかります。\
ですから政治家に[ワクチンパスポート](/blog/digital-jisyu-own-or-permit/)はそんなに大切ですね
解釈:エネルギー技術の抑制\
自由に思考すると電力供給が停止させる可能性があります。\
政府に従うと停電が起こらないといった状況があります。\
これは特に中国人が理解しています。\
それが政治家たちが[ワクチンパスポート](/blog/digital-jisyu-own-or-permit/)を強調する理由かもしれません
## 8. 働きがいも経済成長も
実意味:負債奴隷化\
毎回不祥事発覚されたら、貴方の問題となります。\
例えば、「今の総理は知らせず習近平大統領に億円を払ったと発覚されましたので、緊急に消費税は10%→50%に上がります。消費税を下がる予定がありません。」という事が起こります。
解釈:負債の奴隷化\
不祥事が明るみに出るたびに、それがあなたの問題となります。\
例えば、「現総理が知らされずに習近平大統領に9000億円を支払ったと発覚したため、緊急に消費税が10%から50%に上がります。消費税を下げる予定はありません。」といった事態が発生する可能性があります。
## 9. 産業と技術革新の基盤をつくろう
実意味:個人交通機関禁止\
東アジアでほぼ問題がありませんが、それ以外は電車、バス等のシステムは本当に悪いです。\
現在はヨーロッパで旅行中ですが、電車は理由無しで40分遅れる事が普通らしいです。\
バスの場合は1〜2時間が遅れる場合は普通です。\
ですから個人交通機関は禁止になったら、滅茶苦茶不便となります。
解釈:個人交通手段の禁止\
東アジアではほとんど問題ありませんが、それ以外の地域では公共交通のシステムは非常に劣悪です。\
現在、ヨーロッパを旅行していますが、電車は理由もなく40分遅れることが普通だそうです。\
バスの場合、1〜2時間遅れるのが普通です。\
個人的な交通手段が禁止されると、非常に不便になります。
## 10. 人や国の不平等をなくそう
実意味:強制同調\
[侮辱罪の法律](https://hozon.site/archive/1658230742/www3.nhk.or.jp/news/html/20220308/k10013519691000.html)(因みに、[第二十一条による憲法違反](https://elaws.e-gov.go.jp/document?lawid=321CONSTITUTION)だ)の実目的は何だと思いましたか?\
侮辱出来ない = 表現の自由がない\
表現の自由がない = 検閲\
検閲 = デジタル奴隷制度
解釈:強制的な同調\
[侮辱罪](https://hozon.site/archive/1658230742/www3.nhk.or.jp/news/html/20220308/k10013519691000.html)(因みに[憲法第二十一条に違反する](https://elaws.e-gov.go.jp/document?lawid=321CONSTITUTION))の真の目的は何だと思いますか?\
侮辱できないと表現の自由がなくなり、それは検閲を意味します。\
検閲はデジタル奴隷制度を意味します。
## 11. 住み続けられるまちづくりを
実意味:デジタル監視\
いつでも自宅に居ると、監視社会はとても簡単となります。\
万が一出掛けたら、スマホである[ワクパス](/blog/digital-jisyu-own-or-permit/)にて監視を続けます。\
ですから、Alexa、AmazonRing等を持ったら、大至急捨てた方が良いですよ
解釈:デジタル監視\
常に自宅にいると、監視社会の構築が非常に容易になります。\
もし外出すると、スマートフォン上の[ワクパス](/blog/digital-jisyu-own-or-permit/)で監視が続けられます。\
したがって、もしAlexa、Amazon Ringなどを持っているなら、速やかに処分した方が良いでしょう。
## 12. つくる責任 つかう責任
実意味:中央貨幣制度\
もうCBDCの危険性について報告しましたので、これについてお読み下さい。([1](/blog/digital-autonomy-cashless-problem/)、[2](/blog/digital-dorei-blackcock-ceo-ukraina-hoax-real-agenda/))
解釈:中央銀行デジタル通貨制度\
すでにCBDCの危険性については報告していますので、詳細はそちらをご覧ください。([1](/blog/digital-autonomy-cashless-problem/)、[2](/blog/digital-dorei-blackcock-ceo-ukraina-hoax-real-agenda/))
## 13. 気候変動に具体的な対策を
実意味:機構暴政\
気候変動は只の詐欺です。\
じでまだ信じる方が居るのは本当にありえないです。\
気温はいつでも変わります、毎11年間は増減されています。\
解釈:機関の暴政\
気候変動は単なる詐欺です。\
だこれを信じている人がいるのは驚きです。\
気温は常に変化しており、毎11年ごとに変動しています。\
気づきましたか?\
毎回「気候変動」のプロパガンダがあれば、既にある税金が上がって、新しい税金が紹介されます。
「気候変動」のプロパガンダがあるたびに、既存の税金が上昇し、新しい税金が導入されます。
## 14. 海の豊かさを守ろう
実意味:海洋コントロール\
現在は誰も海洋がコントロールされていません。\
コントロールされると、海に泳げない様になります。\
自分で発見する事が無理となります。\
暴政されている国から逃げられない様になります。\
キューバ人はよくわかります。
解釈:海洋管理\
現在、海洋は誰も管理していません。\
海洋が管理されると、海泳ぎが制限されます。\
自分で発見することができなくなります。\
暴政に支配された国から逃れることができなくなります。\
キューバ人はこれをよく理解しています。
## 15. 陸の豊かさも守ろう
実意味:地域コントロール\
自宅から5キロメートル以内で居る事が可能ですが、もっと遠くに行くと、警察官に止められます。\
ソビエト連邦(ポーランド以外)に住んだ方はこれがよく知っています。\
オーストラリアとカナダの方もそれを知っています。\
暴政です!
解釈:地域管理\
自宅から5キロメートル以内に留まることができますが、それ以上遠くに行こうとすると、警察に止められます。\
ソビエト連邦(ポーランドを除く)に住んでいた人々はこれをよく理解しています。\
オーストラリア人やカナダ人もこれを理解しています。\
これは暴政です。
## 16. 平和と公正をすべての人に
実意味:不同意戦争\
中東諸国で見たら、直ぐ分かると思います。\
アメリカにより、「平和と公正を守る為に、差別せず爆撃しなきゃ」ですね。\
これはもう22年間そうです。\
SDGsの場合も異なりません
解釈:無差別戦争\
中東を見ればすぐにわかります。\
アメリカは、「平和と公正を保つために、差別せずに爆撃する必要がある」と言います。\
これはすでに22年間続いています。\
SDGsの場合も同様です
## 17. パートナーシップで目標を達成しよう
実意味:全世界政府\
全世界政府があれば、各国々の文化は絶滅します。\
全世界は最悪な文化、中共の文化、になります。\
実際にパートナーシップと関係がありません
解釈:全世界政府\
今日までに、各国が独立していることは明らかでしょう。\
しかし、世界政府が設立されると、自国の立法府を無視して法律を制定することができます。\
これがEUで起きています
![](https://ass.technicalsuwako.moe/70991-and-neo-play-good-matrix-blue-youtube.png)
上記を読んだら、SDGsを本当に応援して欲しいでしょうか?\
応援を辞めた方が良いですよ!\
大至急起きて下さい!!
これがSDGsの真の解釈と危険性です。\
検討する価値があるでしょう。
以上