最初に「あい」を学ぶことば日本語でプログラミング入門（ステップ７助詞の扱いMindの場合）

# はじめに
本記事シリーズは母国語のプログラミング言語が存在するという文化的価値をアピールいたしたく、プログラミング一般の入門を意図するものではありません。ですのでどちらかというとある程度プログラミングに慣れている方を想定して、日本語プログラミング言語の特徴をご理解いただきたけるとよいかなという趣旨でもあったりしますでございます。

さて、前回記事までで３大言語での「お嬢様コーディング」例を見てきましたが、その際に注目されたのが、各言語の「助詞」の扱いです。今回以降は各言語の「助詞」の扱いを深堀してみます。まずはMindの場合です。

## Mind（マインド）
Mind（マインド）は自然な日本語で記述できるスタック指向の軽量中間コードコンパイラ言語です。単語間の分かち書きが必須であくまで形式言語です。Forth言語のスタック操作処理を継承しているため、逆ポーランド記法[^1]の範囲で分かち書きされた日本語単語の語順が自然と日本語の語順となるという意味の「自然さ」で書くことができ、独自の軽量中間コードのランタイム実行で非常に高速です。実装言語はCまたはMind。初版の登場は1985年で来年2025年には生誕４０周年となります。


## Mind（マインド）の入手方法
無償版のMind version 8 (windows版linux版)を下記の公式サイトからダウンロードできます。メールアドレスをご登録くださいませ。

https://www.scripts-lab.co.jp/mind8download/download.html

# 日本語の助詞と日本語プログラミング言語の予約語としての助詞

## 日本語の助詞

日本語の助詞とは、下記のサイトからの定義を引用すると「助詞は、日本語の品詞の1つで、単独では用いられない・活用はしない・名詞や動詞などにつくという特徴があります。」とのこと。このあと具体的な説明がつづきますが、ちょっとこれだけではわかりにくい感じ。

https://japanese-language-education.com/joshi/

ちょっとわかりにくかったのでもう１サイト、下記のサイトからの定義を引用すると「
助詞は、言葉に意味を肉付けする語です。『〜を』や『〜が』など、名詞に接続して言葉の意味を補足語や主語にしたり、『〜と』のように語と語をつなげたりする言葉を、まとめて助詞といいます。」とのこと。こちらのが「名詞」以外の日本語用語を避けて説明していてわかりやすい気がします。

https://wordrabbit.jp/grammar/postpositional_particle

わたしの中では助詞はひらがなと思っているのですが、上記の定義では「ひらがな」（その代替表記としてカタカナ）限定という記述は発見できなかったので、もしかしたら日本語の助詞にも漢字のやつとかあるのかもしれませんが、ここではその点は深堀しません。

## 日本語プログラミング言語の予約語としての助詞

形式言語のプログラミング言語でありながら、自然言語の日本文らしさをソースコードの形式にもとめる日本語プログラミング言語にとっては、引数の指定の際に、静的型付けシステムを採用しているプログラミング言語が型情報を重視するのに対して、型情報より「助詞」を予約語トークンとして文章の順序やトークン切り出しのワードとして変数に対する付加情報として重要視されて用いられている場合があります。

本来の日本語の意味としての助詞の意義はコンパイルされた実行コードまたは中間コードにはないので、トークンを切り出したり実行順序の妥当性をチェックするためのトークン文字列として重視されています。

# 日本語プログラミング言語Mindの予約語としての助詞

## Mindは分かち書きすることで予約語としての助詞を制限している

日本語プログラミング言語Mindの場合は、ソースコード上は、全角空白、半角空白、読点「、」を区切り文字につかて分ち書きをしています。また、語順のコントロールとしては、スタックに変数や単語をおいて逆ポーランド記法の順で処理していくため、ほとんどのケースが日本語の語順に等しくなるため、語順チェックの用途でもひらがな助詞の比重は比較的他の言語より小さくなっています。また、

全角空白での分ち書き
```mind:ai.src
愛するとは
    人や　物事を　大切に　思う心のことでございますわ。
```
半角空白での分ち書き
```mind:ai.src
愛するとは
    人や 物事を 大切に 思う心のことでございますわ。
```
読点「、」での分ち書き
```mind:ai.src
愛するとは
    人や、物事を、大切に、思う心のことでございますわ。
```
区切り文字混在での分ち書き
```mind:ai.src
愛するとは
    人や　物事を 大切に、思う心のことでございますわ。
```
Mindの場合は空白、句点の区切り文字を使って分かち書きすることで、コンパイラのトークン切り出しの負担を軽減しています。

このように、トークン切り出しのためのトークンとしては助詞を使わないMindでも、限定された用途で助詞が予約されています。

## Mindの予約語としての助詞以外のひらがな

Mindでは「漢字に続くひらがな」という、機械的な認識で定義されていて、そのような意味で「送り仮名」と表現されています。

Mindの予約語としての助詞以外のひらがなは無視されます。また、漢字の間のひらがなも無視されるという特徴があります。

従って下記のソースコードはすべて同一の実行中間コードにコンパイルされます。

```mind:ai.src
愛するとは
    人や　物事を　大切に　思う心のことでございますわ。
```

```mind:ai.src
愛するとは
    人や　物事を　大切に　思う心のこと。
```

```mind:ai.src
愛するとは
    人や　物事を　大切に　思う心。
```
```mind:ai.src
愛とは
    人　物事　大切　思心。
```
```mind:ai.src
愛は
    人　物事　大切　思心。
```

一方で、漢字の手前に出現するひらがなは別単語と解釈されます。
```mind:ai.src
愛するとは
    人や　物事を　とても大切に　思う心のことでございますわ。
```
```
ai.src 7 行目でエラー。行内容は、
    人や　物事を　とても大切に　思う心のことでございますわ。
      要因１："とても大切"は未定義の単語です。
```

## Mindの予約語としてのひらがな
### は（定義文）
「愛は」から「は」を除いた下記のソースコードはコンパイルエラーとなります。

```mind:ai.src
愛
    人　物事　大切　思心。
```
この場合、「愛」は引用された単語となりますので、未定義エラーとなります。
２行目も単語定義の一部ではなく、エントリポイント（メイン）から続かない即実行文として解釈されて対話モード以外ではエラーとなります。


すべてひらがなの場合、補助的な「と」は単語外として無視されて、定義文助詞の「は」も除いた部分が単語名となります。

下記はコンパイル・実行OK。

```mind:ai.src
あいするとは
    人や　物事を　大切に　思う心のことでございますわ。

メインは　　あいする。
```
下記は「あいする」は未定義エラーとなります。
```mind:ai.src
あいとは
    人や　物事を　大切に　思う心のことでございますわ。

 メインは　　あいする。
```
```
ai3.src 9 行目でエラー。行内容は、
メインは　　あいする。
      要因１："あいす"は未定義の単語です。

1 個のエラーが有ります。
```
「あいする」の「る」は「なになにする」の末尾の補助的な助詞と認識されて無視されるみたいです。

他の助詞についてもこのシリーズで追跡していきます。Mindについてはとりあえずいったんここまでとして次回順番まわってきたときに続きを解説します。

# おわりに
いかがでしたでしょうか？わたしはわが国に母語によるプログラミング言語が存在することを誇りに思っております。言語は文化。こんにちの日本語のポップスやアニメソングなどが海外でそのまま歌われるような近況を鑑みますと、純然たる技術基盤として超強力な米欧発プログラミング言語勢と存在意義を争うこともなく、日本語の文化として海外でも日本語プログラミング言語の愛される日が来るのやもしれません。


[^1]: 演算子を被演算子の中間に記述する中置記法 1 + 2、前に記述する前置記法（ポーランド記法）+ 1 2、後に記述する後置記法（逆ポーランド記法）1 2 +がある。日本語は１と ２を 足す。