日本語プログラミング言語

日本語プログラミング言語（にほんごプログラミングげんご）は、プログラミング言語であり、予約語や識別子が日本語になっている、日本語風の見た目を持つものをいう。ソースコードを日本語の文字（仮名や漢字）で記述したり、文法に日本語風の語順・規則を採用していたりする。なお、この記事で扱う言語のほとんどは、あくまで通常のプログラミング言語と同様の（形式言語としての）ベースがあるものであり、形式言語ではない自然言語によるプログラミング（w:Natural language programming）の一種としての「日本語によるプログラミング」ではない。

 特徴 
自然言語としての日本語の知識を使って、日本語話者がソースコードを読むことが可能であり、また語順も日本語と同じであるものもあり、解釈に必要なコストが低くなる。そのため(日本語話者の)プログラミング初学者には受け入れられやすい、などと主張されている。日本語プログラミング言語の品格(PDF)

日本語にはわかち書きの習慣がないため、既存の字句解析器の適用が難しい。あえてわかち書きを必須としているものもある（Mindなど）。日本語として自然な表現を行うためには自然言語処理の技術を援用している処理系もある。

その一方で、日本語プログラミング言語には、シンタックスなどの業界統一規格がなく、ほかの既存言語の資産（業界標準のオープンソースライブラリなど）を活用しづらいとの批判もある（なお、例えば他の既存言語に「オブジェクト指向言語のシンタックスなどの業界統一規格」といったものも存在しないので、）。

 歴史 
1980年代に開発された言語に、1983年に国際データ機器株式会社の鈴木孝則が商品化した『和漢』や、『Mind』がある。

『和漢』は、日本語ワープロを中心にコンピュータの利用が広まっていたことを受け、「ワープロ感覚で日本語でプログラミングができれば」という考えで制作された。

また、当時はマイコンも一般に広まりつつあり、BASICなどの既存言語の予約語を日本語に置き換えただけのような作りで、構文などは日本語の構文とは似ても似つかないものであったが（参考：G-BASICの主なステートメントとコマンド）、マイコンでもそういった試みが行われている。

1980年代に開発が始められた『Mind』は、日本語の語順との類似が指摘される逆ポーランド記法のForthをベースとして、日本語に近い記述を可能とした。

日本語プログラミング言語のベースに使われる言語には、前述のBASICやForthの他に、LOGOなどもある。

大岩元らは、初心者に対するアルゴリズム教育のためのプログラミング環境として『言霊』と『ことだま on Squeak』を設計、開発している。

 言語の例 
:Category:日本語プログラミング言語も参照のこと。
朱唇（水谷静夫）<小朱唇> 教育用の次第立て言語 小朱唇言語仕様 小朱唇の手引：次第立て言語 次第立て言語≪小朱唇≫の設計思想
カナ文字FORTRANカナ文字FORTRAN
和漢
日本語AFL（共立出版『アルゴリズム辞典』 pp. 587-589）
G-BASIC（ぴゅう太に搭載）
Mind
 Ring 
 厳密には、日本語プログラミング言語ではないが、キーワードや演算子の再定義機能、または自然言語プログラミングライブラリの使用により、日本語プログラミングも可能である（UTF-8 の範囲内でならば日本語以外の使用または日本語との併用も可能である)。

論理的プログラミング言語「論具」（LONG、LOgical Natural lanGuage description）
TTSneo、プロデル
ドリトル
ひまわり、なでしこ
言霊、ことだま on Squeak
まほろば『入門計算機ソフトウェア』ISBN 4-254-22819-8
DNCL（大学入試センター試験「情報関係基礎」）およびTUAT-LE（農工大）
つちのこ
AppleScript（Mac OS 8.5 より前）

 記述例 

Ring
 ChangeRingKeyword see さあ、
 の時間だ。 = "" // これは無視されます。
 挨拶 = "Hello
 World" // 複数行リテラル
 さあ、 挨拶 の時間だ。 // コード本文

TTSneo
 「Hello［改行］World!」を表示
※［改行］の"［"は全角で記述する。

なでしこ
 「Hello {改行} World!」と表示 ’母艦（メインフォーム）に表示。
 「Hello {改行} World!」と言う ’ダイアログボックスで表示。

 その他 
難解プログラミング言語の記号を特定の日本語に置き換えたプログラミング言語が、しばしば遊びで作られる。（→Brainfuck#派生言語など）

 脚注 

*
Category:構文解析 (プログラミング)
Category:プログラミング言語の分類