ブロックチェーンを生成するために必要な技術
C言語では、メモリブロックをPCのメモリ上に簡単にリンクした状態で創ることが可能です。それは暗号通貨で言うところのブロックチェーンではありませんが、ブロックチェーンを作り出すための基本的なアルゴリズムになります。
暗号通貨のブロックチェーン技術は、ブロック間をネットワークのリンクで結びつけるものですが、C言語のリンクリストのブロックは、メモリのポインタでブロック間が結びついているものです。そうです。C言語でコンピューター内部でメモリのリンクリストを作っておき、そのブロックのリンク情報部分にネットワークのアドレスで置き換えていけば暗号通貨のブロックチェーンの基礎部分が出来上がります。もちろん、暗号化技術も必要なので、C言語だけで扱うには、必要なレクチャーが抜けるので、リンクリストまでしか扱えません。ですが、ブロックチェーンの基本的考え方はほぼ得ることが可能だと理解できるでしょう。
ブロックチェーンに必要な要素
リンクリストは言うにおよばず、ネットワーク技術と、暗号化技術が必要になるのはなんとなくおわかりになったとおもいます。
ブロックチェーンはC言語で創るのですか?
いいえ、スクリプト言語のPythonやPHP、Javascriptで作られたものが存在していますので不可能ではありません。しかし、動的な型認識のプログラミング言語ではやはり難しくなるのです。速度も型認識システムのために遅いですし。
やはりリンクリストはコンパイル型の言語がいい
コンパイル型というよりも、静的な型システムをもつのがコンパイル型のプログラミング言語だからということも大きいのです。あるいは、ポインタが存在しているのが役に立つのです。リンク部分がはどうしてもメモリ上のアドレスが必要になるからです。
動的型認識の仕組みは、ハッシュのような値とポインタを紐づけした辞書を保つ必要があるぶんだけ動作が遅いのです。
PHPなどのように、実行中に動的に型を判断するものは、基本参照型つまりポインタ変数のようなものですが、それで可変長サイズの変数を扱うためにはどうしても、その値がどれくらいのサイズなのかの情報を付加して管理する必要があるのです、別名を辞書ともいいますけれど。C言語のようなポインタ値ではなく一旦内部のインデックス値と関連付けられます。以後そのインデックス値のようなもので変数の値を出し入れ出来るわけですね。=Pythonのid()などではその値を見ることも可能です。
C言語ではリンクリストが書きやすい
Cへ言語でリンクリストを0から作ると、理論的なことも理解できるようになります。C++などでは、そもそもリンクリストのテンプレートが存在していたりしますので、便利ではあるのですが、アルゴリズムを理解しずらくなります。
それ故に、C言語で0からリンクリストを創り上げるのは後々とても役立つものになると言えるでしょう。