日本語プログラミング言語探訪 〜言霊(ことだま)〜

注意

このノートは適当にググって見つかった資料を元に作成しているため、最新の研究成果、言語仕様を反映していない可能性があります。あしからず。

言霊(ことだま)

言霊コミュニティサイト - Tiny Content


言霊とは


言霊は、教育の現場を想定して開発されている日本語プログラミング言語です。


多くのプログラミング言語は、プログラマにとっての書きやすさが優先されています。プログラムを理解している人にとっては簡潔で余計な部分を省いた表現が好まれます。その為にソースコードは、分かる人にだけ読める表現になっています。普通の人にとってそのソースコードは、暗号のようなものです。


言霊は初心者がソースコードを読んだときに理解を助けるようなプログラミング言語を目指しています。自然な日本語の構造でプログラムを記述できることや、文章が名詞・動詞・形容詞・助詞などの品詞から構成されること、また動詞活用をサポートしていることが特徴です。

独立行政法人 情報処理推進機構IPA)による 2009年度上期の「未踏IT人材発掘・育成事業」採択プロジェクト。

日本語でプログラムを書いたらそれが書いた通りに動く、まさに「言霊」だ! というわけで、素晴らしいネーミング。

サンプル

資料[1]より。(資料により文法に変遷が見られるので、このサンプルが最新の言語仕様上正しいかはわからない)

1: 10と15の最大公約数を出力する。
1: 「最大公約数」とは{
2: 整数型の名詞である。
3: Aは整数型の引数である。Aの助詞を「と」とする。
4: Bは整数型の引数である。Bの助詞を「を」とする。
5: Rは整数型の変数である。
6:
7: Rに、AをBで割った余りを書き込む。
8: R>0である限り{
9: AにBを書き込み、BにRを書き込む。
10: RにAをBで割った余りを書き込む。
11: }ことを繰り返す。
12:
13: Bを返す。
14: }ことである。
メモ
  • 教育用言語
    • 文系の学生がソースコードを読んだときの拒絶感を避ける。(資料[2])
    • 初心者のプログラム読解を容易にする。
  • 分かち書きの必要がない。(字句解析器+構文解析器が頑張っているらしい)
  • ブロックの範囲指定に記号{}を使う?(資料によって異なる。言語仕様の変遷によるものか)
  • 変数(または値?)に型がある。

以下は資料[1] より。

  • 助詞、助数詞で実引数を受ける。助詞、助数詞と仮引数の対応が Python におけるキーワード引数のように扱われるので、引数の順番は日本語として自然なように入れ替えが可能。
  • 動詞、形容詞の活用を許容する文法で、語尾が活用しても同じ述語と認識されるので日本語として自然な、柔軟な書き方ができる。
  • 動詞メソッド、形容詞メソッド、名詞メソッド、とメソッドの種類と呼び出し方法が豊富。メソッド呼び出しが日本語として自然な形になるように工夫されている。
  • メソッドの品詞変換(体言化)により、メソッドの返値を日本語として自然な形で利用できる。(「削除する」を「削除した値」と書けたり、「大きい」を「大きいかどうか」と書けたり)
  • 「文脈」という概念 → 「それ」*1

元々、日本語の語順は後置記法だ → スタックと親和性高い → Java仮想マシンはスタックマシン → Java仮想マシン向けバイトコードのニモニックって自然と日本語化できるんじゃね? というところから研究/開発がスタートしているようだ。(資料[4])

  • プログラマにとって心地よい簡潔さ、略記法などは初学者にとってはわかりにくいもので排除したい、という思想があるようだ。

以下は資料[2] より。

*1:これは「なでしこ」にもある。