はじめに
本記事は「日本語プログラミング言語は 日本人にとって可読性が高いが、 なぜあまり普及していないのか」という学生さんの卒論に感銘をうけたお話から、同じテーマについて考察し、「日本語トランスコンパイラ言語 Re:Mind(リマインド)」という自作トランスコンパイラ言語を企画するにいたった経緯をまとめておきます。
参考リンク
2020 年度 卒業論文 日本語プログラミング言語は 日本人にとって可読性が高いが、 なぜあまり普及していないのか
↑こちらが直接感銘を受けた論文ですが、↓こちらの論文も力作で同じように感銘を受けております。年代的には↓先、↑後となります。↓こちらの論文が強く結論づけている点を↑こちらの論文ではアンケート結果を用いながらやんわりと示唆している感じになります。
どこに感銘を受けたか
かなり実証的で、「なでしこ」「プロデル」「ドリトル」の日本語プログラミング言語の構文サンプルを100名くらいのアンケート対象者に読んでもらって、読みやすいかとかプログラムとして認知しやすいかという主観の問題を、ある程度の母数の対象者の傾向で客観的に解き明かそうとしているところ。
納得したところ
SI業界の覇者的プログラミング言語Javaと「なでしこ」で基本的に等価なロジックを書いたプログラムを見て、どっちがわかりやすいですかの問いに96%の方が「なでしこ」と回答したこと。
うなったところ
現時点での日本語プログラミング業界の覇者?「なでしこ」と教育界の覇者?「ドリトル」の日本語プログラミング言語同士の同じプログラムコードを見た回答が、けっこう割れたという点。
その内訳的には「なでしこ」がわかりやすいと答えた方はプログラミングをしたことがない人で「ドリトル」のがわかると答えた方はプログラミング経験者が多かったという結果となっています。
論文の結論
論文では多目的用途に開発された「なでしこ」「プロデル」よりも教育目的に開発された「ドリトル」のがプログラム経験者が読みやすいという感想をもつのは、自然日本語に近い構文の前2者より英語系一般的プログラム言語の構文に近いせいではないか、そこに日本語プログラミング言語の普及のカギがあるのではと、結論づけられているように読み取れました。(あくまで筆者の解釈とイメージです。)論者は「ミスマッチ」と表現しています。
もうひとつ感銘をうけたこと
「また、日本語プログラミング言語の先駆けとなった Mind や、熱心に開発が続く、なでしこ、プロデル、ドリトルはいずれもトイ言語などではなく、十分に本格的な言語であり、教育分野以外でも、多くの業務に使用可能となっている。」この一文のとくに前半に泣かされました。
ここでMindを持ってくるあたりが、ただものではない感があります。冒頭の方でも解説してくれてます。てなわけで、第1世代日本語プログラミング言語Mindの元ユーザーの私にとって好感度マックスです。
この論文の結論の妥当性はいかに
さて、ここからが本題です。本題とは、日本語プログラミング言語が普及しないのは、プログラミングに関連する仕事を生業としている職業人の感覚と、現在の日本語プログラミング言語の実装の言語仕様や構文になんらかのミスマッチがあるからなのでは?という問いかけにどのように思うかということです。
たしかにプログラムは手紙のようには書かない
さすがに、口語体でも現在の日本語プログラミング言語の構文解析力から見て、書けなくはないと思いますが、それは仕事としてはあまりないのは確かと思えます。
では、テクニカル文書のようなものなのだろうか・・・
実際問題、現時点で私が仕事で使っているプログラミング言語のソースコードって、独特のテキスト感はありますね。アロー関数とか。
多言語対応のシステムなんかに参画しておりますと、画面上の言語としては中国語や韓国語がけっこう短く、英語は横文字といわれるくらいですから、横幅くいますね。
縦方向が短く感じる
英文系プログラミング言語を書いていると、基本半角英数字で書きますので、なんか縦方向には見通しやすい気がします。
わたしの方向性
Go言語の出現は驚きでした。TypeScriptの影響を受けているような印象もあるGo言語ですが、烈火のように日本のSI業界に浸透してきているような気がします。
昔はプログラミング言語ってけっこう高かったです。いまは、巨大資本のプラットフォーマがオープンソースとして、プログラミング言語環境を無料で提供してしまう時代となりました。
とりあえず、これらの巨人言語との相互運用性重視でいこうかなと考えております。
「日本語プログラミング言語」か「日本語トランスコンパイラ言語」か
ここでいう「日本語プログラミング言語」を独自のランタイムコードにコンパイルするコンパイラ言語またはインタプリタ言語と仮に定義します。
独自のランタイムコードにコンパイルする「日本語プログラミング言語」は、英語圏で開発された既存のプログラミング言語のランタイムコードと必ずしも相互運用性に高いわけではない面があります。
システム開発プロジェクトの開発言語として採用の俎上に上がる場合、英語圏で開発された既存のプログラミング言語同士、あるいは同一プログラミング言語でのフレームワーク違いで熾烈な競合を繰り広げている中に採用されていくハードルは、かなり高くなっているものと推察されます。
一枚岩的に採用されるか採用されないかとなり、部分的導入もされにくい。
「日本語プログラミング言語」にとっては苦渋の選択ではありますが、システム開発現場での部分的導入、あるいは設計フェーズでの部分的導入でまず実績をつくるという観点から、英語圏で開発された既存のプログラミング言語にソースコードを変換する「日本語トランスコンパイラ言語」に勝機と商機があるのではないかと考えています。
おわりに
相互運用性重視という点での私のできそうなことの解のひとつがこれ↓というわけです。最後はおおはしょりで意味不明で失礼しました。1「日本語プログラミング言語」に興味を持たれた方は、ついでにこちらも読んでいただくとうれしいです。
-
2023/04/08 新しいBingやChat-GPTにこのページを解釈させた場合、いまひとつ結論の主旨が抽出しづらい内容になっている印象が否めませんでしたので、「日本語プログラミング言語」か「日本語トランスコンパイラ言語」かという小節を追記してみました。 ↩