はじめに
みなさま、プログラミング言語Cはご存じでしょうか!非常に古いプログラミング言語で、C++といったオブジェクト指向言語の原型となった言語です。C/C++を介してオブジェクト指向プログラミング言語JavaやC#も派生していきます。
プログラミング言語Cの登場時期は1972年です!2022年で生誕50周年を迎えていました。そのオブジェクト指向拡張であるC++は1983年に登場しました。
C++の2年後に登場した「日本語プログラミング言語Mind」
ほとんどご存じない方が多いかと思いますが、「日本語プログラミング言語Mind」は2025年で生誕40周年を迎えました。つまり、C++登場の2年後、1985年に登場していたことになります。
C++と似た構文を持つオブジェクト指向言語Javaがリリースされたのが1996年で、当時の言語開発主体であったサン・マイクロシステムズは既に消滅して、いまはデータベースで有名なオラクルが継承しています。来年で生誕30周年となりますね。
同じくC++と似た構文を持つオブジェクト指向言語C#がリリースされたのが2000年で、マイクロソフトによるものでした。今年は生誕25周年になるのですね。
これらの言語より早く、「日本語プログラミング言語Mind」は登場していました。
「Forth言語」と「日本語プログラミング言語Mind」
「C++言語」登場の2年後に登場した「日本語プログラミング言語Mind」はいわゆるオブジェクト指向言語ではありません。しいて言うとスタック指向言語という表現となります。
「日本語プログラミング言語Mind」はC/C++言語の流れを汲むものではなく、スタック指向言語として存在したForth言語の流れを汲むものです。
プログラミング言語Forthの登場時期は諸説ありますが1973年です!2023年で生誕50周年を迎えていました。
「C言語」と「日本語プログラミング言語Mind」
「日本語プログラミング言語Mind」はバージョン5までは、ランタイムコードがアセンブリ言語で実装されていましたが、バージョン6からはJavaやC#が採用しているような中間コードを生成するコンパイラに書き換えられ、ランタイムコードはC言語で書き換えられました。(中間コードの仕様は独自で独創的にシンプルです。)
したがって、現在の現役バージョンであります7と8、近い将来にリリースされる9のランタイムはC言語で書かれています。
そのため、「日本語プログラミング言語Mind」の言語仕様を拡張する方法は2つあります。(バージョン7と9のTcl/Tkによる拡張は本記事対象外です。もちろんMindで書かれた単語で拡張することは当然できますが、既存のランタイムレベルでサポートされていない機能を拡張実装する場合を対象としています。)
1. C言語でランタイムコードを追加記述して新規単語を追加する
2. C言語のダイナミックリンクライブラリで関数をエキスポートしてMindから利用する
この実装例はQiitaの記事に既にあります。以下はその例の一部です。
1. C言語でランタイムコードを追加記述して新規単語を追加するの事例
Mind8で通貨型(64bit整数の4桁スケーリング固定小数点型)の実装のつづき(currency.src) #VSCode - Qiita
https://qiita.com/mylifewithviolin/items/923875a640768e3e993f
2. C言語のダイナミックリンクライブラリで関数をエキスポートしてMindから利用するの事例
日本語プログラミング言語Mindの小技 「モジュールをロード」~Win32Apiで仮想ターミナルモードを変更~ #mind - Qiita
https://qiita.com/mylifewithviolin/items/0672c3fa0352ec87be69
おわりに
日本語プログラミング言語「Mind」はC言語で言語機能を拡張できます。C言語を直接使える人材はプロフェッショナルなエンジニアに限定されますが、C言語で書かれた拡張処理を日本語プログラミング言語「Mind」から利用できるようにすることは、プログラミングを行う人材層の広がりに対して有意義です。
この記事は9月ごろアメーバブログで一般の方向けに書き起こした記事を調整リライトしたものです。