はじめに
プログラミングという言葉を聞くだけで、得意意識を持つ人はQiitaを読んだり参加したりしている方の中では少なくないのではないでしょうか。頭が実はそんなにめちゃくちゃ良くなくても雑談しながらプログラムコードは書けることを思い浮かべる人も多いでしょう。
本記事ではそういった問題にまったく無関係に登場する日本語プログラミング言語について紹介いたします!
日本語プログラミング言語とは
初心者以外の方には釈迦に説法ですが、いったんプログラミング言語をめぐるワードについて押さえておきます。
プログラミング言語とは?
プログラミング言語とは、人間同士が意思疎通に用いる自然言語に対して、人間がコンピュータに手順を認識させ、人間側もどのような手順であるかを認識しておくため、ある程度人間にもわかるように自然言語の語彙も一部使った形式的な言語です。コンピュータは0と1に相当する電磁気信号しか認識しないため、0と1の組み合わせからなるマシン語に対して、その0と1の組み合わせからなる命令セットに対して英文字を割当てたのがアセンブリ言語といい、これが最初のコンピュータ用形式言語です。
高水準言語とは?
アセンブリ言語は、あまりにも自然言語から遠い言語体系であったため、低水準言語とカテゴライズされ、それよりは若干自然言語寄りの形式言語Fortranなどが登場し、高水準言語と呼ばれました。高水準言語には、アセンブリ言語をインラインでも記述でき、オペレーティングシステムなどのシステム記述用言語としていまなお君臨するC言語や、その後継言語C++/Java/C#、英語の自然文らしさを取り入れているオランダ発のPythonなどがあります。
日本語プログラミング言語とは?
あくまで形式言語と高水準言語の範疇で、主に英文字ではなく日本文字(日本漢字、ひらがな、カタカナ)を使ったプログラミング言語のことです。それ以上でもそれ以下でもなく、自然言語の日本語の語順を取り入れる入れないは必須要件ではありません。
日本語プログラミング言語の歴史
80年代前半ごろまでのパソコンは非力で日本語の入力や出力がネックになっていました。PC-DOSに独自の日本語規格を実装した日本電気製パソコンが日本市場を席捲すると日本語ワープロソフト一太郎も登場し、パソコン上での日本語の入出力はようやく極あたりまえの操作となりました。このころに日本語(日本文字)を使った形式言語Mindなどが登場し始めます。
パソコンの性能もあがり、日本語OSとしてもMS-Windowsが日本市場を席捲し、日本電気製パソコンの独占的地位が消滅します。プログラミング言語の主流もコマンドベースのアプリケーションからウィンドウGUIを操作できるアプリケーションが容易に生産できるものとなります。このころ、プロデルやなでしこの前身であるTTSneoやひまわりがWindows用日本語プログラミング言語として登場します。
日本語プログラミング言語の長所
初心者以外の方にとって、プログラミング言語の文字が日本文字であることの強いメリットはとくにありません。初心者の方には多少とっつきやすさはあるかもしれませんが、どこまでいってもプログラミング言語であって厳格なロジックを組む上でのちょっとした記述誤りによる実行時不具合は起きますし、実行可能な状態にまで持っていけないということも実装したいロジックの難度によっては生じることでしょう。
ソースコードの位置づけ
では、日本語プログラミング言語の長所とはなんでしょう?それは、初心者が書きやすいというものではなく、初心者以外の方も既に習得しているプログラミング言語からすると独特とも思われる言語仕様にとまどい、めんどうくささを覚えることでしょう。
それはどこまでいっても、書きやすさではなく読みやすさです。(と、筆者は主張しています。)ソースコードとは別のロジック記述で仕様情報を保持するという試みは、どの現場でもあるかと思いますが、まさにコピーライセンスで大量に流通している再販性の強いアプリケーションやシステムを除くと、カスタムコードの改変が繰り返されて、内部設計書とソースコードが同期されていないという状態は、手作業にコストがかかる以上発生しやすい傾向にある事象です。その場合、ソースコードの現状有姿が仕様としてほぼ正とされています。
ソースコードが仕様書となるパラダイム
では、そのために現在のメジャーな実装言語を捨てて、読みやすさのためだけに日本語プログラミング言語で書かなくてはならないでしょうか?筆者はそうとも主張するものではなく、あくまで日本語プログラミング言語で書いた場合はそのようなメリットがあるだろうということを言っているにすぎません。(英語を母語とする開発者も、あくまで形式言語のソースコードに自然言語のコメンテーションを付記していることでしょう。)
これは21世紀に入って20年が経過した現代でもソフトウエア開発をめぐる大きな課題と筆者は考えています。
日本語のプログラミング言語3選!
ですので、ここでは筆者は日本語プログラミング言語をぜひみなさまの現場で使いましょうということを主張するものではなく、日本国内で開発されたプロフェッショナル向け日本語プログラミング言語について、日本人のソフトウェア技術者としてなにも知らないとか、初心者向けとかの誤解を持ったままとか、ということは避けてほしいという立ち位置で、偏見を持たずなるべく正確に内容を認識していただきたく、記事にしております。
また、日本語プログラミング言語は実用的なアプリケーションを実装でき、一般的な実装言語を使用することがマスト要件ではない現場では、ソースコードがほぼ仕様書という要件を満たしていることでしょう。
①プロデル
日本語プログラミング言語の中で上記3つの中でも比較的プロフェッショナル向けと筆者が感じる「プロデル」について見ていきましょう。
プロデルは、日本語に近い語順で記述できる、オブジェクト指向の中間コードコンパイラ言語です。中間コードは共通言語ラインタイム(CLR)1で、なんと.NETアプリケーションと同じ実行環境で動きます。実装言語はC#。インタプリタ版もあります。
②なでしこ
なでしこは、日本語に近い語順で記述できる、オープンソースのインタプリタ言語(V1の場合)です。実装言語はDelphi(デルファイ)です。みなさまはDelphiご存じでしたでしょうか。昔は後述するMindと、Delphiの前身Turbo Pascalの日本販売代理店2が同じだったりします。筆者はTurbo Pascalを買うかMindを買うか、悩んだ末にちょっと安かったMindを買いました。
実装言語がC#の中間コードコンパイラ言語V2がありましたが、中断されてAltJSのV3にシフトしたようです。V1はメンテナンスフェーズといって新規の機能は追加されないようなので、ぜひこのC#版の開発が復活しないのかなとか思ったりします。
③Mind(マインド)
Mind(マインド)は自然な日本語で記述できるスタック指向の軽量中間コードコンパイラ言語です。単語間の分かち書きが必須で自然言語処理系ではありません。Forth言語のスタック操作処理を継承しているため、逆ポーランド記法3の範囲で分かち書きされた日本語単語の語順が自然と日本語の語順となるという意味の「自然さ」で、あくまで形式言語です。独自の軽量中間コードのランタイム実行で非常に高速です。この3つの日本語プログラミング言語の中では最もプロフェッショナル仕様です。実装言語はCまたはMind。