2025-01-10
共通テストでの採用を目指して開発した、新しい構造化プログラミング言語「DNCL3」。
DNCL3の括弧で表していた構造を英単語に変えた「Wirth」。
Wirthを削ぎ落とし、演算用にたった1つの論理演算子しか持たない「Norと「Nand」を開発。
そして今回、if文があれば nor も不要とコメントをいただき、演算用の演算子がない言語を「Nop」を開発。


「Nop - no operators programming language」

演算子が1つもないプログラミング言語「Nop」は、字句解析で演算子を返さず(Nop.js getToken)、実行環境(仮想マシン)にも演算命令がありません(Runtime.js calcExpression)。

条件分岐 if と、繰り返し loop、機能(関数) function という構造化プログラミング言語の基本を使って、NorやNandoと同様、否定(not)、論理積(and)、論理和(or)を機能として実装して、足し算、掛け算のど、必要な機能を実装していくことができます。

こちら、はじめのいっぽ、否定の機能 not の実装例(RUN on Nop Playground

function not(a) if a return 0 else return 1 endif end

NorやNandでは数を配列を使って表現していましたが、数が入った変数に添え字を付けた場合、最下位ビットからの位置を表すようにしたところ、プログラムが見やすくなりました!

例えば、二進法だと 110 となる十進法の 6 を変数に入れ、添え字でアクセスしてみると

a = 6 print a[2], a[1], a[0]

1 1 0 と表示されます。

こちら応用、4bitの足し算の実装例(RUN on Nop Playground

function add(a, b) cs0 = fulladd(a[0], b[0], 0) cs1 = fulladd(a[1], b[1], cs0[0]) cs2 = fulladd(a[2], b[2], cs1[0]) cs3 = fulladd(a[3], b[3], cs2[0]) s = 0 s[0] = cs0[1] s[1] = cs1[1] s[2] = cs2[1] s[3] = cs3[1] return s end

not, and, or の機能を作ってさえしまえば、NorとNandと同じです。
5 * 3 を計算する、4bitの掛け算サンプル mul.nop もお試しください。


「なぜコンピューターは計算が速いのか? 電気回路で計算ができる謎を解く」

コンピューターはスイッチ(トランジスタ)でできていると解説したブログの通り、スイッチのON/OFF、つまり 0 か 1 で制御する if 文もあらゆる計算を実現する最小単位になりうるわけです。

また、コンピューターのもう一つの強み「記憶」の実現もスイッチ(トランジスタ)を使って実現できるため、コンピュターはトランジスタの集合で作ることができます。(参考、フリップフロップ - Wikipedia

NVIDIAから発表された最新のGPU、GeForce RTX 5090 のトランジスタ数は、920億コ!
1秒間に20億回計算するコンピューターが、なんと、2万コ入っています。
(参考、GeForce RTX 5090 グラフィックスカード | NVIDIA

根っこはシンプル、でも、多量かつ高速に動かすとスゴイ!
Nop、Nor、Nand は、コンピューターのおもしろさに迫るための構造化プログラミング言語群です。

links
- 演算子が1つしかない2025年生まれの新プログラミング言語「Nand」
- 演算子が1つしかない2025年生まれの新プログラミング言語「Nor」
- Pascalリスペクトの教育用構造化プログラミング言語「Wirth」

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS